return 0; }
执行后输出结果是
A) 2 B) 3 C) 编译时出错 D) 4 C5.有以下程序
int main() {
int i=1,j=1,k=2;
if((j++||k++)&&i++)
printf(\\n\);
return 0;
}
执行后输出结果是
A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 C6.有如下程序
int main() {
float x=2.0,y;
if(x<0.0)y=0.0;
else if(x<10.0)y=1.0/x;
else y=1.0;
printf(\\n\);} return 0; }
该程序的输出结果是
A)0.000000 B)0.250000 C)0.500000 D)1.000000 B7.若执行以下程序时从键盘上输入3和4,则输出结果是
int main() {
int a, b, s;
scanf(“%d%d”, &a, &b); s = a;
if(a < b) s = b; s *= s;
pritnf(“%d\\n”, s); return 0; }
A)14 B)16 C)18 D)20
B8.假定所有变量均已正确定义,下面语句段执行后的x的值是 a = b = c = 0; x = 35;
if(!a) x--; else if(b) ; if(c) x = 3; else x = 4;
A)34 B)4 C)35 D) 3 D9.判断char型变量c是否为大写字母的C表达式是
A)’A’<=c<=’Z’ B)(c>=’A’&(c<=’Z’)
11
C) (‘A’<=c)AND(‘Z’>=c) D)(c>=’A’)&&(c<=’Z’) A10.下列运算符中优先级最高的运算符是
A)! B)% C)-= D)&& A11.下列运算符中优先级最低的运算符是
A)|| B)!= C)<= D)+ A12.为表示关系 x≥y≥z,应使用的C语言表达式是
A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z)
D13.设a、b和c都是int变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是
A)a&&b B)a<=b
C)a||b+c&&b-c D)!((a
int main()
{ int a = 2, b = -1, c = 2; if(a
if(b < 0) c = 0; else c += 1;
printf(“%d\\n”, c); return 0; }
A)0 B)1 C)2 D)3
二、填空题
1.请写出以下程序的输出结果 1 。 int main()
{ int a = 100;
if( a > 100) printf(“%d\\n”, a > 100); else printf(“%d\\n”, a <= 100); return 0;
}
2.将上题中的双分支if语句改写成条件表达式语句:
Printf(“%d\\n”,(a>100)?(a>100); (a<=100)) ; 3.当a = 1、b = 2、c = 3时,以下if语句执行后,a、b、c中的值分别为: 3 、 2 、 2 。 if(a > c)
b = a; a = c; c = b;
4.若变量已正确定义,以下语句段的输出结果是 *# 。 x = 0; y = 2; z = 3;
switch(x)
{ case 0: switch( y == 2)
{ case 1: printf(“*”); break; case 2: printf(“%”); break;
12
}
case 1: switch( z )
{ case 1: printf(“$”);
case 2: printf(“*”); break; default : printf(“#”); } }
5. 以下程序的输出结果是 -1 。
int main()
{ int x=100, a=10, b=20, ok1=5, ok2=0;
if(a
printf(\\n\); return 0; }
6.若从键盘输入58,则以下程序输出的结果是 585858 。
int main() {
int a;
scanf\);
if(a>50)printf(\); if(a>40)printf(\); if(a>30)printf(\); return 0; }
7.以下程序的执行结果是 9 。
int main() {
int k=8; switch(k) {
case 9: k+=1; case 10: k+=1;
case 11: k+=1; break; default: k+=1; }
printf(\\n\); return 0; }
8.阅读下面程序,程序执行后的输出结果是 3 。
#include \int main() {
13
int x,y,z;
x = 1; y = 2; z = 3; if(x>y)
if(x>z)printf(\); else printf(\); printf(\\n\); return 0; }
9.C语言中用 非0 表示逻辑真,用 0 表示逻辑假。
10.根据C语言运算符的优先顺序和结合性,按从先到后的顺序写出以下表达式中,运算符“+”、“>”、“*”、“&&”、“!=”、“||”、“!”和“/”的先后顺序: + 、* 、 > 、 != 、&& 、 / 、 ! 、 || 。 (a + b) > c * 2 && b != 5 || !(1 / 2)
11.若表达式(a + b) > c * 2 && b != 5 || !(1 / 2)中,a、b、c的定义和赋值为 int a = 3, b = 4, c = 2; 则表达式的值为 1 。
12.将下列数学式改写成C语言的关系表达式或逻辑表达式是 A) a==b||a
A)a = b 或 a < c B)| x | > 4
13.请写出与以下表达式等价的表达式是 A) x<=0 B) 1 。 A)!(x > 0) B)!0
第五章 循环结构程序设计
一、选择题
B1以下程序段的输出结果是 。
int n = 10; while(n > 7) { n--;
pritnf(“%d”, n); }
A)1098 B)987 C)10987 D)9876
D下面程序的输出结果是 。
#include
int y=10;
do{y--;}while(--y); printf(\\n\); return 0; }
14
1.
2.
3.
4.
5.
6.
A)-1 B)1 C)8 D)0 C以下程序段的输出结果是 。
int x = 3; do
{ printf(“=”, x -= 2); } while(!(--x));
A) 1 B) 3 0 C) 1 -2 D)死循环
B下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。
#include
int i=0,j,k;
do {i++;k=316-13*i;} while(______); j=k/11;
printf(\); return 0; }
A)k/11 B)k C)k/11==0 D)k==0
D以下不是死循环的语句是 。 A)for( ; ; x += i) ; B)while(1) {x ++; }
C)for(i = 10; ; i++) sum += i;
D)for(; (c = getchar()) != ‘\\n’; ) printf(“%c”, c); C以下程序的输出结果是 。
int main() { int i, sum;
for(i = 1; i < 6; i++) sum += i;
printf(“%d\\n” sum); return 0; }
A)15 B)16 C)不确定 D)0
D若x是int类型变量,以下程序段的输出结果是 。
for(x = 3; x < 6; x++)
printf( (x%2)?(“**%d”):(“##%d\\n”),x);
A)**3 B)##3 C)##3 D)**3##4
##4 **4 **4##5 **5 **5 ##5
D以下程序的输出结果是 。
A)39 81 B)42 84 C)26 68 D)28 70 int main() { int x, i;
for(i = 1; i <= 100; i++)
15