2011-2012学年第一学期C语言程序设计A 课程A卷考试题共 4 页此第 1 页成绩一、单项选择题(每小题2分,共40分)1. C语言中合法的字符常量是()A.nB.’\n’C.110D.”n”2. 有以下程序:main( ){ char ch=’A’;printf(“ch(1)=%d,ch(2)=%c\n”,ch,ch+1); }程序运行后的输出结果是()A. ch(1)=65,ch(2)=AB. ch(1)=97,ch(2)=AC. ch(1)=65,ch(2)=BD. ch(1)=97,ch(2)=B3. 能表示a不能被2整除且a、b不相等,但a、b的和等于0的C语言逻辑表达式是()A. a==-b&&a%2==0B. a!=b&&a+b==0&&a%2C. !(a%2)&&a==-bD.a%2==0&&a+b==04. 以下程序段中语句” printf("i=%d,j=%d\n",i,j);”的执行次数是()int i, j;for(i=3;i ;i--)for(j=1;j<5;j++) printf("i=%d,j=%d\n",i,j);A. 12B. 20C. 15D. 245. 执行以下程序段后,x[2]的值是()int x[10]={1,2,3,4,5,6,7,8,9,10},i,j,t;i=0;j=9;while(i<j){ t=x[i]; x[i]=x[j]; x[j]=t;i++; j--; }A. 8B. 2C. 3D. 96. 判断字符串”abcd”和”ab cd”是否相等,应使用的语句是()A. if (“abcd”==”ab cd”)B. if (abcd==ab cd)C. if (strcmp(“abcd”,”ab cd”))D. if (strcmp(abcd,ab cd))7. 若有定义“int *p,*q,a=2,b;”,则以下正确的赋值语句组是()A. p=&a; *q=*p;B. *p=a;*q=b;C. p=&a;q=&b;*p=*q;D. p=&a;q=&b;*q=*p;8.以下说法错误的是()A. C程序中可以只包含一个main函数B. C程序由一个main函数和若干个其他函数构成C. C程序中可以没有main函数,但至少应包含一个其他函数D. C程序由函数组成,函数是构成程序的基本单位9. 以下选项中,能用作用户标识符的是()A. voidB. 8_8C. _0_D. unsigned10. 表达式:(int)((double)9/2)-(9)%2的值是()A. 0B. 3C. 4D. 511. 有以下程序:#include <stdio.h>void main(){ int a,b,c=200;a=c/10%9;b=!a||(a-2);printf("%d,%d\n",a,b); }程序运行后的输出结果是()A. 0,1B. 2,1C. 0,0D. 2,012. “==”代表C语言中的()A. 条件运算符B. 逻辑运算符C. 关系运算符D. 赋值运算符13. .若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()A. 1B. 0C. 2D. 不知道a的值,不能确定14. 有以下程序:#include <stdio.h>void main(){ int a=12,b=20,t=18;if(a>b)t=a;a=b;b=t;printf("a=%d,b=%d,t=%d\n",a,b,t); }程序运行后的输出结果是()A. a=12,b=20,t=18B. a=20,b=18,t=18C. a=20,b=12,t=12D. a=20,b=18,t=1215. 执行以下程序后的输出是()#include <stdio.h>void main(){ int x,y;for(x=1,y=1;x<=20;x++){ if(y>=20) break;if(y%5==1){ y=y+5; continue; }y=y-1;}printf("x=%d,y=%d\n",x,y); }A. x=5,y=21B. x=4,y=21C. x=5,y=20D. x=4,y=2016. 凡是函数中未指定存储类别的局部变量其隐含的存储类别是()。
A. 自动(auto)B. 静态(static)C. 外部(extern)D. 寄存器(register)17. C语言中用于结构化程序设计的三种基本结构是()A.. 顺序结构、选择结构、循环结构B. if、switch、breakC. for、while、do-whileD. if、for、continue18. 在while(x)语句中的x与下面条件表达式等价的是:()A. x!=0B. x==1C. x!=1D. x==019. 若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为()A. *(a+j*n+i)B. *(a+i*n+j)C. *(*(a+i)+j)D. *(*a+i)+j20. 若有以下调用语句,则不正确的fun函数的函数原型是()void main(){ …int a[50],n;…fun(n, &a[9]);…}A. void fun(int m, int x[]);B. void fun(int s, int h[41]);C. void fun(int p, int *s);D. void fun(int n, int a);二、程序填空(每空2.5分,共20分)1. 下面程序的功能是将一字符串中的小写英文字母全部改成大写形式,然后输出。
请在横线上填上适当的程序代码,使它能输出正确的结果#include <stdio.h>void main (){ int i=0;char str[80];scanf("%s",str);while( ①){ if( ②) str[i]=str[i]-32;③}printf("%s\n",str);}2. 以下程序的功能是计算1!+2!+3!+…20!的值,请填空#include <stdio.h>long fun(int t){ long a=1;int n;for( n=1; ④n++) ⑤return a; }void main (){int n;long sum=0,s;for(n=1;n<=20;n++){ s=fun(n); ⑥}printf("sum=%ld\n",sum);}3. 以下程序的功能是用“辗转相除法”求两个正整数的最大公约数,请填空#include <stdio.h>void main(){ int r,a,b;scanf("%d%d",&a,&b);if(a<b){ ⑦}r=a%b;while(r!=0){ a=b;b=r; ⑧}printf("%d\n",b);}三、分析程序题(每空4分,共20分)1. 以下程序运行后的输出结果是①#include <stdio.h>void main (){ int t;for(t=1; t<=100; t++){ printf("%d ",t); if(t%2==1 && t%5==3) break; } }2. 以下程序的功能是②#include <stdio.h>void main(){ int n,s=0;scanf("%d",&n);while(n){ s++;n=n/10;}printf("%d",s);}3. 以下程序运行后,若输入5 5<回车>,则程序的输出结果是③#include <stdio.h>void main(){ int a,b;scanf("%d%d",&a,&b);if (a>6)if(a<10) a++;else a--;if (b>6){ if(b<10) b++; }else b--;printf("a=%d,b=%d\n",a,b);}4. 以下程序运行后的输出结果是④#include <stdio.h>void main(){ int a[10]={1,2,3,4,5,6,7,8,9,10};int i,*p,s=0;p=&a[0];for(i=0;i<10;i++)if((*(p+i))%3==0)s=s+*(p+i);printf("%d\n",s);}5. 以下程序运行后的输出结果是⑤#include <stdio.h>void main(){ int a[5]={1},i;for(i=1;i<5;i=i+2)a[i]=2*i;f or(i=0;i<5;i++)printf("%d ",a[i]);}四、程序设计(共20分)1. 请编写程序,输出1~1000之间能被11整除且个位数为5的所有整数,要求每个输出值之间有空格,输出结果后光标显示在下一行。
2. 利用递归函数计算Fibonacci数列的第n个数。
要求设计递归函数,在主函数main()中输入数据n,然后调用fib()函数求得第n个Fibonacci数,并输出结果。
fib(n)的递归公式如下:一、单项选择题(每小题2分,共40分)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15B C B A A C D C C B D C A B A16 17 18 19 20A A A C D二、程序填空(每空2.5分,共20分)1、①str[i]!=’\0’ 、②str[i]>='a'&&str[i]<='z' 、③i++;2、④n<=t; 、⑤a=a*n; 、⑥sum=sum+s;3、⑦r=a; a=b; b=r; 、⑧r=a%b;三、分析程序题(每空4分,共20分)① 1 2 3 、②统计一个正整数的位数、③a=5,b=4 、④18 、⑤ 1 2 0 6 0四、程序设计(共20分)1. 请编写程序,输出1~1000之间能被11整除且个位数为5的所有整数,要求每个输出值之间有空格,输出结果后光标显示在下一行#include <stdio.h> ----------------------- 0.5分void main () ----------------------- 0.5分{ int a; ------------------------- 1分for(a=1;a<=1000;a++) ------------------------- 2分if(a%11==0 &&a%10==5) ------------------------- 2分printf("%d ",a); ------------------------- 1分printf("\n"); ------------------------- 1分}2. 利用递归函数计算Fibonacci数列的第n个数。