复习题一
一、 单项选择题
1.以下选项中,均符合C常量形式的是 (1) 。
A)’\123’, 0123 B) 0xffce, ‘\678’ C) 0246, e-5 D) 102, 123
2.假定有char a=’A’, b=’B’, c, 则执行 printf(“%d”,(c=a<b--?a+b:a-b);的值是 (2) 。
A) 130 B) 131 C) 0 D) 都不是
[特别说明:] 根据c=a<b--?a+b:a-b计算得到c的整数值为130,但常用字符的ASCII值最大为127,130超过了127,130的二进制形式是:10000010,最高位为1,因此可以肯定它是一个负数,根据负数二进制补码的求法可以得出它是-126的补码值。
3.假定 int a=1, b=2, c=0, 表达式: c=(a== --b||--a,a+b+1.0/2) 的值是 (3) 。
A) 1 B) 2 C) 1.5 D) 2.5
4.表达三个变量a、b、c中有一个为0,两个为非0的正确表达式是 (4) 。
A) a*b*c= =0 B) a*b!=0||a*c!=0||b*c!=0
C) (a*b||a*c||b*c)&&!(a*b*c) D) !(a*b*c)&&(a+b+c)
5. 在以下表达式中,与 a==0 && b!=0不等价的是 (5) 。
A)!a && b B)!(a!=0 || b==0)
C)!(a==0 || b!=0) D)!(a*b) && b
6.上机运行以下程序会出现一个错误,这个错误的性质是 (6) 。
main()
{ int i,j,a[]={3,2,1},b[]={6,4,2,0};
float s=0;
for(i=0;i<3;i++) { j=b[a[i]]; s+=1.0/j; }
printf(“\n %f”,s);
}
A) 数组说明语法错 B)分母为0运算错
C)数组元素引用语法错 D)数组元素引用下标超界错
7. 设char a[]=”xy\n0\1238\\0”;则数组a的长度是 (7) 。
A)7 B)8 C)9 D)13
8.以下程序的功能是 (8) 。
main()
{ int a[3][3]={1,2,3,4,5,6,7,8,9}, i,*p=a,s=0;
for(i=0; i<3; i++) { for( ; p<a[i]+3; p++) s+=*p; p+=i;}
printf("\n %d",s);
}
A) 求矩阵a的所有元素之和 B) 求矩阵a的上三角元素之和
C) 求矩阵a的下三角元素之和 D) 都不是
9.以下程序的功能是 (9) 。
main()
{ int a[10]={3,5,2,9,1,8,0,2,4,6},i,p=0,q=0;
for(i=0;i<10;i++)
{ if(a[i]>p) p=a[i];
if(a[i]<a[q]) q=i;
}
printf("\n %d,%d",p,q);
}
A) 求最大值和最小值 B) 求最大值的位置和最小值的位置
C) 求最大值的位置和最小值 D) 求最大值和最小值的位置
10.若希望当字符变量a中为数字字符时,表达式的值为“真”,为非数字字符时,表达式的值为“假”。则以下不能满足要求的表达式是 (10) 。
A) a>=0 && a<=9 B) a>=’0’ && a<=’9’
C) a>=48+0 && a<= 48+9 D) a-‘0’>=0 && a-‘0’<=9
11.在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式 (11) 。
A) 只能用逻辑表达式 B) 只能用关系表达式
C) 只能用逻辑表达式或关系表达式 D) 可用任意表达式
12.以下论述中正确的是 (12) 。
A) 在同一个函数中不能定义多个同名的变量
B) 结构体变量的名字可以与其所属的成员的名字相同
C) 局部变量的名字不能与函数名相同
D) 局部变量的名字不能与全局变量的名字相同
13.在以下各循环语句中,不能正确计算自然数1-100中所有数之和的是 (13) 。
A) for(s=0, i=1; i<=100 ; ) s+=++i;
B) for(s=100, n=100; --n; ) s+=n;
C) for(s=0,i=1, j=100; i<=j; i++, j-- ) s+=i+j;
D) for(s=0, i=0; i<=100 ; ) s+=i++;
14.假定要使以下程序的输出结果第一行都是1,第二行都是2,第三行都是3,则正确的数据输入格式是 (14) 。
main()
{ int i,j,a[3][3];
for ( j=0; j<3; j++)
for( i=0; i<3; i++) scanf (“%d”, &a[i][j]);
for( i=0; i<3; i++)
{ printf (“\n”); for ( j=0; j<3; j++) printf (“%d”, a[i][j]); }
}
A) 1 2 3 1 2 3 1 2 3 B) 1 1 1 2 2 2 3 3 3
C) 1,2,3,1,2,3,1,2,3 D) 1,1,1,2,2,2,3,3,3
15.以下各程序段中,不能正确输入10个数到数组a中的是 (15) 。
A) int i,a[10]; for(i=0;i<10;i++) scanf(“%d”,a[i]);
B) int i,a[10]; for(i=0;i<10;i++) scanf(“%d”,a+i);
C) int a[10],*p; for(p=a;i<10;p++) scanf(“%d”,p);
D) int i,a[10],*p=a; for(i=0;i<10;i++) scanf(“%d”,p++);
二、程序阅读题
16.以下程序的运行结果是 (16) 。
main()
{ int i, n=0;
for( i=1; i<20; i++) if ( i%3==0&&i%5) n++;
printf (“\n %d”, n);
}
A) 1 B) 5 C) 6 D) 7
17.以下程序的运行结果是 (17) 。
main( )
{ int i,n=0;
for(i=2;i<5;i++)
{ do { if(i%3) continue; n++; } while(!i);
n++;
}
printf("\n%d",n);
}
A) 2 B) 3 C) 4 D) 5
18.以下程序的运行结果是 (18) 。
int a=2;
int f ( int *a) { return (*a)++; }
main( )
{ int s=0;
{ int a=5; s+=f ( &a ); }
s+=f ( &a );
printf ( "\n%d",s );
}
A) 7 B) 8 C) 9 D) 10
19.以下程序的运行结果是 (19) 。
main() f ( char *c )
{ char *a[]=”FORTRAN77”; { for ( ; *c; c++)
f ( a+1 ); printf (“%s”,a ); if (*c>=’A’ && *c<=’Z’) *c=*c+32;
} printf(“\n %d,%d”, a,b);}
A)Fortran77 B) fortran77 C) FORTRAN77 D) fORTRAN77
20.以下程序的运行结果是 (20) 。
main()
{ int i=6,j=0,k;
计算机二级c语言选择题库 for ( k=0; k<3; k++) { j=j*2+i%2; i/=2; }
printf ( “%\n %d,%d”, i, j );
}
A) 6,3 B) 0,3 C) 0,6 D) 6,6
21.以下程序的运行结果是 (21) 。
main() f (int *x, int b)
{ int a=3,b=5; {
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论