C语言试题(A卷)
班级: 姓名: 学号
一、填空(每空1分,共10分)
1、设x为整型变量,值为1,则表达式(x&&1)= =(x%2)的值为 2、与二进制数101等值的十进制数为 3、若已知a=10,b=20,则表达式!a
4、结构化程序设计所规定的三种基本控制结构是 结构 结构和 结构。
5、定义int i=1;执行语句 while(i++<5); 后,i的值为_______ 6、定义3行4列的整型二维数组a的语句是___________
7、int *p,a; 则语句 p=&a; 中的运算符&是________符号。
8、设y是int型变量,请写出判断y为奇数的关系表达式 二、选择(每小题2分,共30分)
1、下列优先级最低的算符是( ) A && B & C || D =
2、已知int j,i=1;执行语句“j=i++;”后,变量i的值是( ) A 1 B 2 C –1 D -2
3、已知int i,a;执行语句“i=(a=2*3,a*5),a+6;”后,变量i的值是( ) A 6 B 12 C 30 D 36
4、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为( )
A a< >0 B !a C a=0 D a 5、以下错误的if语句是( ) A if (x>y); B if(x= =y) x+=y;
C if (x!=y) scanf(“%d”, &x) else scanf(“%d”,&y); D if (x 6、为了判断两个字符串s1和s2是否相等,应当使用( ) A if (s1= =s2) B if (s1=s2) C if (strcpy(s1,s2)) D if (strcmp(s1,s2)= =0) 7、若有说明 int x,y;不能实现以下函数关系的程序段是( ) y=-1 (x<0) y=0 (x=0) y=1 (x>0) 试卷共3页,本页是第 1 页A if (x<0) y= -1 ; B y= -1; else if(x= =0) y=0; if (x!=0) else y=1; if (x>0) y=1; else y=0; C y=0; D if (x>=0) if (x>=0) if (x>0) y=1; {if (x>0) y=1;} else y=0; else y= -1; else y= -1; 8、以下错误的描述是( ) A break语句不能用于循环语句和switch语句外的任何其他语句 B 在switch 语句中使用break语句或continue语句的作用相同 C 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环 D 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环 9、若int i=10;执行下列程序后,变量i的正确结果是( ) switch ( i ) {case 0: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A 10 B 11 C 12 D 13 10、下列程序是求1到100的累加和,其中有1个不能够完成规定的功能,是( ) A s=0; i=0; B s=0; i=1; while (i<=100) while (i++<100) s+= i++; s+=i; C s=0; i=0; D s=0; i=0; while (i<100) while (++i<=100) s+= ++i; s += i ; 11、选择程序输出结果( ) f(int b[ ],int m,int n) { int i,s=0; for(i=m;i main() {int x,a[ ]={1,2,3,4,5,6,7,8,9}; x=f(a,3,7); printf(\,x); } A 30 B 15 C 18 D 22 12、C语言中函数返回值的类型由( )决定的。 A return语句中的表达式类型 B 调用该函数的主调函数的类型 C 调用函数时临时决定 D 定义函数时所指定的函数类型 13、选择下列程序的运行结果( ) fun(int *p) {int a=10; p=&a; ++*p; } main() {int a=5; fun(&a); printf(“%d\\n”,a); } A 5 B 6 C 10 D 11 14、执行后y的值是( ) main() {int a[]={1,2,3,4},y,*p=a; y=*p++; } A 1 B 2 C 3 D 4 15、下列程序的输出结果是( ) struct abc { int a, b, c; }; main() { struct abc s[2]={{1,2,3},{4,5,6}}; int t; t=s[0].a+s[1].b%s[0].c; printf(\,t); } A 2 B 3 C 4 D 7 试卷共3页,本页是第 2 页三、程序填空(每空2分,共20分) 1、下面的程序输出3到100间的所有素数。 main() { int i,j; for (i=3;i<=100;i++) {for(j=2;j<=i-1;j++) if( ① ) break; if( ② ) printf(“M”,i); } } 2、函数primedec(m)是求整数m的所有素数因子,并输出。如:m为120时。输出的素数因子为: 2,2,2,3,5 程序如下: primedec(int m) {int k=2; while (k<=m) if (m%k ① ) {printf(“%d,”,k); ② } else ③ } 3、用起泡法对10个整数排序(由小到大) 起泡法的思路:将相邻的两个数比较,将小的调到前头。 main() { int a[11],i,j,t; printf(“input 10 numbers:\\n”); for(i=1;i<11;i++) ① printf(“\\n”); for(j=1;j<=9;j++) for(i=1; ② ;i++) if ( ③ ) { t=a[i]; ④ ⑤ } printf(“the sorted numbers:\\n”); for(i=1;i<11;i++) printf(“%d ”,a[i]); } 四、读程序题(15分) 1、读程序写结果(3分) main ( ) { char c=’A’; if (‘0’<=c <=’9’) printf(“yes”); else printf(“no”); } 2、以下程序在运行是时,输入变量a的值为1,变量b的值为2,写出程序的运行结果(3分) main( ) { int a, b, t=0; scanf(“%d%d”,&a, &b); if (a=2) {t=a; a=b; b=t; } printf (“%d,%d\\n”,a,b); } 3、写出程序的执行结果(3分) main ( ) { int i=0,j=0; while (i<10) i++; while (j++<10) ; printf(“i=%d, j=%d\\n”,i,j); } 4、写出程序的执行结果(3分) main ( ) { int i, j,k; 试卷共3页,本页是第 3 页 char space=’ ’; for (i=0;i<=5;i++) { for (j=1;j<=i;j++) printf(“%c”,space); for(k=0;k<=5;k++) printf(“%c”,’﹡’); printf(“\\n”); } } 5、 写出程序的执行结果(3分) main() {int i; for(i=0;i<3;i++) add(); } add() {static int x=0; x++; printf(“%d,”,x); } 五、编程序(25分) 1、打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=13+33+53。(12分) 2、读入m×n(可认为10×10)个实数放到m行n列的二维数组中,求该二维数组各行平均值,分别放到一个一维数组中,并打印一维数组。(13分)