当前位置:首页 > 2014年春计算机等级二级考试C语言笔试试题
2014年春计算机等级二级考试C语言笔试试题
第二部分 C语言程序设计
一、选择题(用答题卡答题,答案依次填在21~30答题号内,共10分) 21、以下选项中,不能用作变量名的是____(21)_____。 A. switch B. _0_ C. For D. sqrt 22、已知有声明“int x=1;”,以下语句中有语法错误的是______(22)_______。 A. if(*x) x=1; B. if(!x) x=1;
C. if(x++) x=0; D. if((char)x) x=0;
23、执行程序段“char c=255; c=c+1; printf(\”后,输出结果为___(23)____。 A. 256 B. -255 C. 1 D. 0
24、以下有关continue语句的描述中正确的是__(24)___。 A. 可以出现在程序中任何位置 B. 只能出现在循环语句中 C. 只能出现在switch语句中
D. 只能出现在循环语句中或switch语句中
25、以下实现“仅当变量a或b的值中只有一个小于c值时输出c值”这一功能的语句中,正确的是__(25)__。
A. if(a 26. 以下数组声明中正确的是_______(26)_____。 A. int a[]; B. int a[3.14]; C. int a[2+3]={0}; D. int a[3]={1,2,3,4}; 27. 以下选项中,可以正确计算a数组中元素个数的表达式是___(27)_____。 A. a/sizeof(a) B. a[0]/sizeof(a) C. sizeof(a)/ sizeof(a[0]) D. sizeof(a[0])/ sizeof(a) 28. 函数调用“strcmp(\”的返回值是___(28)________。 A. -1 B. 0 C. 1 D. 2 29. 若要引用结构变量stud1的成员age,以下选项中错误的是___(29)____。 struct student { int age; Int num; }stud1, *p; p=&stud1; A. stud1.age B. p.age C. p->age D. (*p).age 30.已知有外部声明“int a[]={10,20,30,40}; int *pa[]={a+1,a,a+3,a+2};”,表达式*pa[2]的值 是______(30)_____。 A. 10 B. 20 C. 30 D. 40 二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行,共30分) 基本概念 1、 在C语言源程序中,实型常量3.14是按______(1)___类型存储的。 2、在库函数scanf、printf的声明包含在头文件_______(2)___中。 3、执行语句“int i=0; while(i=0) i=i-1;”后,变量i的值为___(3)___。 4、已知有声明“char s1[]=\”,执行语句“strcpy(s1+1, \”,后的输出是___(4)___。 5、若要用fopen函数打开一个已存在的二进制文件,要求既能读出文件中原有数据也能改写原有数据,则在fopen中中正确的“文件打开方式”是______(5)___。 三、阅读程序(13分) 6、以下程序运行时,若输入“1 5 2 4 3 6”,输出到屏幕的结果是__(6)__。 #include { int i, a, b, c, s=0; for(i=0; i<3; i++) { scanf(\ while(c=a%b) a=b, b=c; s+=b; } printf(\ return 0; } 7. 以下程序运行时,输出到屏幕的结果是__(7)__。 #include void fun(int *a, int b, int c) { int i; for(i=0; i int main() { int a[4]={1,2,3,4}; fun(&a[0], a[1], 3); printf(\ return 0; } 8.以下程序运行时,输出到屏幕的结果是__(8)__。 #include { if(b==1) return a ; else return a*f(a, b-1); } int main() { printf(\ return 0; } 9. 以下程序运行时,输出到屏幕的结果中第一行是___(9)___,第二行是___(10)___。 #include #define M(x,y) x%y int F (int x, int y) { return x%y; } int main() { int a=3, b=3,c,d ; c=4/F(a+1,b); d=4/M(a+1,b); printf(\ \\n%d\ return 0; } 10. 以下程序运行时,输出到屏幕的结果中第一行是_____(11)____,第二行是_____(12)____。 #include void fun( int *s, int n1, int n2) { int *p, *q, t; p=s+n1; q=s+n2; while(p t=*p; *p=*q; *q=t; p++;q--; } } int main() { int a[10]={0,1,2,3,4,5,6,7,8,9},i; fun(a,2,4); for(i=0 ; i<10 ; i++) { printf(\ if((i+1)%3==0) printf(\} return 0; } 11.以下程序运行时,输出到屏幕的结果中第一行是__(13)____,第二行是__(14)____。 #include int count(char p[], int *n) { int i=0,j=0,k,m=0; while(p[i]!= '\\0') { while(!isalpha(p[i])&&p[i]!= '\\0') i++; k=0; if(p[i] != '\\0') m++; while(isalpha(p[i])&&p[i]!= '\\0') { i++; k++;} if(k>j) j=k; } *n=j; return m; } int main() { char s[300]={ \ i=count(s,&j); printf(\ return 0; } 12. 以下程序运行时,若输入“1999 3 5”,则输出到屏幕的结果中第一行是__(15)___,第二行是__(16)___。 #include { int i, y, m, d, s=0,leap, t[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; scanf(\ leap=y%4==0&&y0!=0||y@0==0; if(leap) puts(\ else puts(\ for(i=1;i 13、以下程序运行时,输出到屏幕的结果中第一行是__(17)___,第二行是__(18)___。 #include *y=x[i]+x[j]; i++; j++; } int main() { int x[]={1,2,3,4}, i, y=0; for(i=0;i<2;i++) { fun(x,&y); printf(\} return 0; } 完善程序(12分) 14、以下程序的中fun函数的功能是:在a指向的二维数组前n行的每行中找出最大值所在的元素,将其与同一行中列下标为0的元素进行值的交换。
共分享92篇相关文档