2014秋C语言A卷试卷及答案
华南农业大学期末考试试卷(A卷)2014学年第1学期考试科目:C语言程序设计
考试类型:(闭卷)考试考试时间:120 分钟
学号姓名年级专业
考生注意
1、答案必须分别写在“机读卡”和“答卷”上,写在本试卷上不得分。
2、必须在机读卡和答卷上正确填写班级、学号、姓名等内容,否则没有考试成绩。
3、机读卡的学生代号区只需填写学号后10位。
4、考试结束时,“机读卡”、“答卷”和本试卷都要上交。
一、选择题(在机读卡上答题,本大题共20小题,每小题2分,共40分)
1. 请选出一组合法的用户标识符( )。
A. void, WORD
B. -sub, a
C. f2_3, IF
D. 4a, abc
2. C语言程序有三种基本结构,除顺序结构外,另两种结构是( )。
A. 嵌套,递归
B. 选择,循环
C. 递归,选择
D. 循环,转移
3. 定义两个变量double a=5.5,b=2.5;,则表达式(int)b+a/a值为( )。
A. 3.000000
B. 3
C. 4
D. 4.000000
4. strlen("\\\n\t\bab")的结果是()。
A. 4
B. 5
C. 6
D. 7
5. 执行scanf("%d%d",&a,&b);时,正确的键盘输入是()。
A. 15,26
B. a=15,b=26
C. 12:23
D. 12 23
6. 设整型变量int x=6,y=8;,则语句printf("%d,%d",x++,--y);的输出结果是()。
A. 6,7
B. 7,7
C. 6,8
D. 7,8
7. int a=5, b=4, c=3;
if (a
A. a
B. no
C. 编译错误
D. 运行错误
8. 表达式3.5>3&&2||8<4-!0的值为()。
A. 0
B. 3
C. 2
D. 1
9. 以下程序段的输出结果是()。
float a=1234.5678; printf("%f,%2.2f",a,a);
A. 1234.5678,1234.56
B. 1234.567800,12.56
C. 1234.567800,1234.57
D. 提示错误,无结果
10. 以下程序段的输出结果是()。
int a=9,b=8,c=7;
if(a>b) a=b;
if(a>c) a=c;
else b=c;
printf("%d,%d,%d",a,b,c);
A. 9,8,7
B. 9,7,7
C. 7,7,7
D. 7,8,7
11. 在循环语句中,遇到()语句可以导致当前一次循环结束,立刻进入下一次循环。
A. break
B. continue
C. return
D. else
12. 以下程序段的输出结果是()。
int i, sum=0;
for(i=1;i<5;i++) {sum+=i; printf("%d",sum);}
A. 10
B. 01234
C. 13610
D. 15
13. 下面程序的运行结果是()。
#include
int main()
{ int a=0,i;
for(i=0;i<=3;i++)
{ switch(i)
{ case 3: a+=3;
case 1:
case 2: a+=2;
default: a+=5;
}
printf("%d ",a);
}
}
A. 5 12 19 29
B. 5 5 7 10
C. 0 2 3 5
D. 3 0 2 5
14. 定义一个字符数组char s[ ]="string";,它在内存中占用的字节数是()。
A. 6
B. 7
C. 24
D. 不确定
15. 下面程序中有错误的行是()。(每行代码后面的数字表示行号)
int main() //1
{ int i; float y[6]={1.0,2,3}; //2
for (i=1; i<6; i++) y[0]= y[0]+y[i]; //3
printf("y[0]=%d\n", y[0]); //4
} //5
A. 1
B. 2
C. 3
D. 4
16. 设每个整型数据占4字节,定义一个数组int x[6];,它的内存起始地址是3100,则
x[3]的起始地址是( )。
A. 3103
B. 3112
C. 3108
D. 3102
17. 设int a=2,b=3,c=4,d=5,e=6;,有一函数调用f((a,b,c),(d,e)),则实际调用是( )。
A. f(2,5)
B. f(4,6)
C. f(2,6)
D. 参数太多,出错
18. 下列程序的执行结果是( )。
#include
int a=7,b=2; void f(int x,int y)
{ printf("%d,%d",x+y,a+b); } int main()
{ int a=3,b=9; f(a,b); } A. 12,9
B. 9,12
C. 7,2
D. 3,9
19. 有以下宏定义,则执行语句 x=3*(N+Y(3+N));之后,整型变量x 的值是( )。
#define N 2
#define Y(a) ((N+1)*a) A. 54
B. 48
C. 39
D. 24
20. 下列程序的执行结果是( )。
#include
{ int a=5, b=8; fun(a,b);
printf ("%d,%d",a,b); } A. 13,5
B. 5,13
C. 13,8
D. 5,8
二、判断题(在机读卡上答题,本大题共20小题,每小题1分,共20分)
请用2B 型铅笔涂答题卡,按题号顺序,正确的判断涂黑“A ”、错误的判断涂黑“B ”
21. 一个C 程序的开始执行点是main()函数,结束点是最后一个函数的最后一条语句。( ) 22. 字符常量是由一对单引号括起来的一到多个字符。( ) 23. C 语言规定,标识符中的字符不区分大小写。( ) 24. getchar()函数的功能是从终端输入一个字符串。( )
25. 在switch (x) 语句中,case后的表达式可以是x>0,x==0,x<0。( )
26. 表达式a-!d||m>n+3可改写为 (a-(!d))||(m>(n+3))。( )
27. 在逻辑表达式的求解过程中,必须求解完所有的逻辑运算符才能得到最终的结果。( )
28. C语言中,int x,y; x=y=100 是合法的赋值语句。( )
29. while循环语句至少无条件执行一次循环体。( )
30. do-while循环语句中,根据情况可以省略关键字while。( )
31. C程序中有无注释不会影响程序的正常执行。( )
32. case,break,return,int 在C中都是保留的关键字。( )
33. 定义数组时,数组下标可以是整型常量或正整型常量表达式。( )
34. 有字符串定义char a[]="a",b[]="Zoo";,则strcmp(a,b)的结果为1。( )
35. 调用一个有参函数时,可以不对形参传入数据。( )
36. 主函数main()可以调用任意一个函数,但不能使用这些函数中定义的变量。( )
37. 在一个函数中说明的变量,有效范围是该函数以及调用它的函数。( )
38. 带参数的宏及其参数在没有指定类型时,默认为int型。( )
39. C编译系统对 #include
40. 有如下语句 int x; float y=3.33; x=y; ,编译时不会出错。( )
三、阅读程序填空题(请在答卷上答题,本大题共9小题,每空1分,共20分)
1. 下面程序实现由键盘输入3个数a,b,c,并按由大到小的顺序输出,请填空完善。
#include
int main( )
{ int a,b,c,t;
scanf("%d%d%d", &a,&b,&c);
if(a
{ t=a; a=b; b=t; }
if(a { t=a; a=c; c=t; } if 1) 2) printf("The sorted number is: %d %d %d\n", a,b,c); return 0; } 2. 从键盘输入一个华氏温度值f,要求按格式输出其对应的摄氏温度值c,精确到小数点后两位。数学公式描述为:c=5/9*(f-32)。 #include int main() { 3) ; scanf("%f",&f); 4) ; printf("%.2f",c); } 3. 输入一行字符(以回车符结束),统计并输出其中的字母个数(不分大小写)。#include int main() { int zm=0; char ch; while ( 5) ) { if ( 6) ) zm++; } printf("zm=%d\n",zm); } 4. 从键盘输入一个整数,将它反序输出。例如:输入“385”,输出“583”。 #include int main() { int n,c; scanf("%d",&n); do { 7) ; printf("%d",c); } while ( 8) ); } 5. 输入两个整数,输出它们的最大公约数。 #include int main() { int m,n,i,t; scanf("%d,%d",&m,&n); t=m>n?n:m; for ( 9) ) { if (m%i==0 && n%i==0) { printf("%d\n",i); 10) ; } } } 6. 输出100以内的所有素数。 #include 11) int main() { int i,m,k; for (m=2;m<=100;m++) { k=sqrt(m); for (i=2; i<=k; i++) if ( 12) ) break; if ( 13) ) printf("%3d",m); } } 7. 从键盘读入一个不多于60个字符的字符串(允许包含空格),将其中的大写字母全部转换为小写字母,其它字符不变,然后输出。 #include int main() { char s[60]; int i; 14) ; for (i=0; s[i]!='\0'; i++) { if (s[i]>='A'&&s[i]<='Z') 15) ; } printf("%s",s); } 8. 完成下列函数,连接两个字符串s1和s2,结果放入字符串s,且末尾添加字符串结束符。void cat(char s1[], char s2[], char s[]) { int i,j; for (i=0; s1[i]!='\0'; i++) s[i]=s1[i]; for (j=0;s2[j]!='\0'; j++) 16) ; 17) ; } 9.下列程序实现:从键盘输入数组元素的值,并求平均值,请填空完善。 #include float average(float a[ ], int n) { int i; float sum=0; for (i=0;i 18) ; return sum/n; } int main() { int i; float b[10]; for (i=0;i<10;i++) 19) ; printf("平均值=%f\n", 20) ); } 四、编写程序题(请在答卷上答题,本大题共2小题,每题10分,共20分) 1. 编程实现由键盘输入n ,计算输出如下数列的前n 项之和(输出结果保留4位小数)。 2. 编写程序,输入一维整型数组的10个元素,并将最小值与第一个数交换,最大值与最后一个数交换,其它数不动,然后输出交换后的10个数。 2 3 5 8 13 21 1 2 3 5 8 13 …… 华南农业大学期末考试答案(A卷)2014学年第1学期考试科目:C语言程序设计 考试类型:(闭卷)考试考试时间:120 分钟 学号姓名年级专业 一、选择题(在机读卡上答题,本大题共20小题,每小题2分,共40分) 1 C, 2 B, 3 A, 4 C, 5 D, 6 A, 7 A, 8 D, 9 C,10 D,11 B,12 C,13 A, 14 B,15 D,16 B,17 B,18 A,19 C,20 D 二、判断题(在机读卡上答题,正确的判断涂黑“A”、错误的判断涂黑“B”. 本大题共20小题,每小题1分,共20分) 21 B,22 B,23 B,24 B,25 B,26 A,27 B,28 B,29 B,30 B,31 A,32 A, 33 B,34 A,35 B,36 A,37 B,38 B,39 A,40 A 三、程序填空题(共20空,每空1分,共20分,) 1). (b 3). float f,c 4). c=5.0/9*(f-32) 5). (ch=getchar())!='\n' 6). ch>='a'&&ch<='z'||ch>='A'&&ch<='Z' 7). c=n%10 8). (n/=10)>0 9). i=t; i>=1; i-- 10). break 11). #include 13). i>=k+1 14). gets(s) 15). s[i]=s[i]+32 16). s[i++]=s2[j] 17). s[i]='\0' 18). sum+=a[i] 19). scanf("%f",&b[i]) 20). average(b,10) 四、编程题(共2小题,每题10分,共20分) 1. #include int main() { int i,t,n; float a=2,b=1,s=0; scanf("%d",&n); for(i=1;i<=n;i++) { s=s+a/b; t=a; a=a+b; b=t; } printf("%.4f\n",s); } 2、 #include int main() { int i, x[10], a=0, b=0, max, min,t; scanf("%d",&x[0]); max=min=x[0]; for(i=1;i<10;i++) { scanf("%d",&x[i]); if (x[i]>max) { a=i; max=x[i];} if (x[i] t=x[0]; x[0]=x[b]; x[b]=t; t=x[9]; x[9]=x[a]; x[a]=t; for(i=0;i<10;i++) printf("%d ",x[i]); }