华南农业大学期末考试试卷(A卷)
2008学年第2 学期考试科目:程序设计
考试类型:(闭卷)考试考试时间:120 分钟
学号姓名年级专业
注意:1.本次考试由三部分组成:试卷、机读卡、答卷纸
2.本试卷第一、二题答案用2B铅笔填涂在机读卡,书写在本试卷无效。
3.第三、四题答案书写在答卷纸上。
4. 只收机读卡、答卷纸
一、是非判断题(每小题1分,10小题,共10分,在机读卡中正确填涂A,错误填涂B)
1. C语言允许直接访问物理地址,可以直接对硬件进行操作。
2. 在main函数中说明的变量,有效范围是main函数及其调用的函数。
3. void play(int a, b); 是一个合法的函数说明。
4. 结构体的成员类型不能为结构体类型。
5. 函数的实参和形参可以是相同的名字。
6. do-while循环语句的特点是先执行循环体,然后判断循环条件是否成立。
7. C程序执行的入口是main函数,所以main函数必须放在程序的开头。
8. 注释内容太多会影响程序的执行效率。
9. C语言规定,标识符中的字母一般区分大、小写。
10. 若定义的函数没有参数,则函数名后的圆括号可以省略。
二、选择题(每小题2分,30小题,共60分)
1. 下面标识符中,不合法的用户标识符为()
A.Char B.a_10 C._12ab D.void
2. 下列C常量中不合法的是()
A.'8' B.'800' C."8" D."800"
3.字符串常量"super\\n\\"中字符个数为()
A.8 B.9 C.11 D.13
4. 下面对C语言运算符的优先级叙述正确的是()。
A.算术运算符> 关系运算符> !(非)> &&(与)> ||(或)> 赋值运算符
B.算术运算符>!(非)>关系运算符> &&(与)> ||(或)> 赋值运算符
C.!(非)> 关系运算符>算术运算符> &&(与)> ||(或)> 赋值运算符
D.!(非)> 算术运算符> 关系运算符> &&(与)> ||(或)> 赋值运算符
5. 设int a=15, b=9; 经过赋值语句a=a/(a-b); 后a的值()
A.3 B.–8 C.2 D.2.5
6. 设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是()
A.x=x*100+0.5/100.0; B.x=(x*100+0.5)/100.0;
C.x=(int)(x*100+0.5)/100.0; D.x=(x/100+0.5)*100.0;
7. 若num、a、b和c都是int型变量,则执行表达式num=(a=6,b=12,c=24); 后num的值为()
A.12 B.24 C.48 D.52
8. 能表示条件0≤x ≤10的表达式是()
A.0<= x <=10 B.x >=0, x<=10
C.0≤x ≤10 D.x>=0&& x<=10
9. 在以下给出的表达式中,与while(E)中的(E)不等价的表达式是()。
A.(!E==0) B.(E>0||E<0) C.(E==0) D.(E!=0)
10. 设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是printf(“%d,%d\n”,x--,--y);()
A.10,3 B.9,3 C.9,2 D.10,2
11. 调用scanf(“%d,%d”,&a,&b);时,正确的键盘输入是()
A.10,20 B.a=10,b=20
C.10:20 D.10 20
12. 在switch语句中,执行完一个case分支后要使流程跳出switch结构,应使用()语句。
A.continue B.break
C.else D.return
13. 执行语句for(i=1; i++<4; ); 后,变量i的值是()
A.3 B.4 C.5 D.不定
14. 设有如下程序段
int k=10;
while(k>0)k=k+1;
则下面描述中正确的是()
A.循环体语句执行多次B.循环是无限循环
C.循环体一次也不执行 D.循环体语句执行10次
15. 若变量已正确定义,要求程序段完成求5!的计算,不.能.完成此操作的程序段是()
A.for(i=1,p=1;i<=5;i++) p*=i;
B.for(i=1;i<=5;i++) { p=1; p*=i;}
C.i=1;p=1;while(i<=5) {p*=i; i++;}
D.i=1;p=1;do{p*=i; i++; } while(i<=5);
16. 若有int s[4] = {1,2,3,4};,则s[s[0]+2*s[2]-s[3]] 的值是()
A.1 B.2 C.3 D.4
17. 数组名作为参数传递给函数,作为该参数的数组名被处理为()
A.该数组的长度B.该数组的元素个数
C.该数组中元素的值D.该数组的首地址
18.若要求从键盘读入含有空格字符的字符串,应使用函数()。
A. getc()
B. gets()
C. getchar()
D. scanf()
19. C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是()
A. void
B. int
C. float
D. double
20. 有以下程序:
main()
{ int x=2,y=2;
if (x-y)
printf(“###”);
else
printf(“***”);
}
程序执行后的输出结果是()。
A.### B.***
21.有以下程序:
main()
{ int a=0,b=0,c=0,d=0;
if (a=1) b=1;c=2;
else d=3;
printf(“%d,%d,%d,%d\n”,a,b,c,d);
}
程序执行后的输出结果是()。
A.0,1,2,0 B.0,0,0,3 C.1,1,2,0 D .编译有错22. 有以下程序:
main()
{ int i,j.k,sum;
for (i=2;i<7;i++)
{ sum=1;
for(j=i;j<7;j++)
sum=sum+j;
}
printf(“%d”,sum);
}
程序执行后的输出结果是()。
A.48 B.49 C.1 D.7
23. 有以下程序:
main()
{ int y=10;
while(y--) ; printf(“y=%d\n”,y);
}
程序执行后的输出结果是()。
A.y=0 B.y=-1 C.y=1 D .while构成无限循环24. 有以下程序:
main()
{ int i, t[ ][3]={9,8,7,6,5,4,3,2,1};
for (i=0;i<3;i++) printf(“%d”,t[2-i][i]);
}
程序执行后的输出结果是()。
A.753 B.357 C.369 D .751
25. 不能把字符串Hello!赋值给数组a的语句是()。
A. char a[10]={ …H?,?e?,?l?,?l?,?o?,?!?};
B. char a[10]; a=”Hello!”;
C. char a[10]; strcpy(a,”Hello!”);
D. char a[10]=”Hello!”;
26.有以下程序:
swap(int x, int y)
{ int t;
t=x;x=y;y=t;
}
main()
{ int a=3,b=4;
swap(a,b);
printf (“%d,%d”,a,b);
}
程序执行后的输出结果是()。
A.4,3 B.3,4
27.有以下程序:
int fun1(double a) {return a*=a;}
int fun2(double x,double y)
{
double a=0,b=0;
a=fun1(x); b=fun1(y);
return(int)(a+b);
}
main()
{ double w;
w=fun2(1.1,2.0);
printf (“%f”,w);
}
程序执行后变量w中的值是()。
A.5.21 B.5 C.5.0 D.0.0 28.有以下程序:
int fun ( int x[ ],int n)
{ static int sum=0,i;
for (i=0;i sum=sum+x[i]; return sum; } main() { int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0; s=fun(a,5)+fun(b,4); printf (“%d\n”,s); } 程序执行后的输出结果是()。 A.45 B.50 C.60 D.55 29. 有以下程序: fun ( char p[ ][10]) { int n=0, i; for (i=0;i<7;i++) if (p[i][0]==?T?) n++; return n; } main() { char str[7][10]={“Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”, “Sun”}; printf (“%d\n”,fun(str)); } 程序执行后的输出结果是()。 A.1 B.2 C.3 D.0 30. 有以下程序: int a=3,b=4; void fun(int x1,int x2) { printf(“%d,%d”,x1+x2,b); } main() { int a=5,b=6; fun(a,b); } 程序执行后的输出结果是()。 A.3,4 B.11,1 C.11,4 D.11,6 三、程序填空题(每空2分,10小题,共20分,注意将答案写在答题纸上) 1. 输入一行字符(以回车符结束),统计字母个数并输出统计结果,请填空。 #include "stdio.h" main() { int zm=0; char ch; printf("\nInput a string:"); while(①) { if(②) zm++; } printf("zm=%d\n",zm); } 2.打印9×9乘法表。输出格式要求为: 1*1=1 2*1=1 2*2=4 3*1=3 3*2=6 3*3=9 ……………………………………… main() { int m,n; for(m=1;m<=9;m++) { for(n=1; ③;n++) printf(“%d*%d=%d ”,m,n,m*n); ④; } } 3.下面程序读入10个学生的成绩,统计及格学生的个数并计算平均分。请填空:main() { int i, count=0; float a[10],sum=0,ave; for(i=0;i<10;i++) scanf(“%f”,&a[i]); for(i=0;i<10;i++) { if ⑤count=count+1; ⑥; } ave=sum/10; printf(“count=%d,ave=%f”,count,ave); } 4. 由键盘输入10个整数,将其首尾对调并输出。 #include "stdio.h" main() { int a[10],i,j,t; for (i=0;i<10;i++) /*键盘输入并存储*/ scanf("%d", &a[i]); for ( ⑦) /*首尾对调*/ { ⑧} for (i=0;i<10;i++) /*输出*/ printf("%d", a[i]); } 5.下面程序,实现输出200到500之间的所有素数。 #include "stdio.h" #include "math.h" int su(int n) { int flag = 1,i; for (i=2;⑨;i++) { if ( ⑩) { flag=0; break; } } return flag; } main() { int t; for (t=200;t<=500;t++) if (su(t)) printf("%d\n",t); } 四、编程题(10分) 编写从整型数组中查找给定数值的函数search(int a[10],int x),若找到则输出该数值在数组中的位置(从1开始),若未找到则输出0。要求:(1)该整型数组在主函数中由键盘输入,(2)查找结果在主函数中输出。 华南农业大学期末考试试卷参考答案(A卷) 一、是非判断题(每小题1分,10小题,共10分,在机读卡中正确填涂A,正确 填涂B) 二、选择题(每小题2分,30小题,共60分,在机读卡上填涂答案) 三、程序填空题(每空2分,10小题,共20分) 四、编程题(10分) #include "stdio.h" int search(int a[10],int x) { int i; for (i=0;i<10;;i++) if (a[i]==x) return i+1; return 0; } main() { int a[10],i,x,pos; for (i=0;i<10;i++) scanf(“%d”,&a[i]); scanf(“%d”,&x); if (pos=search(a,x)) printf("%d\n",pos); else printf(“No found!\n”) } 华南农业大学期末考试试卷(A 卷) 2010学年第1学期 考试科目: 程序设计(C 语言) 考试类型:(闭卷)考试 考试时间: 120 分钟 学号 姓名 年级专业 一、判断题(在机读卡上答题,每小题1分,共20分)