1、第3单元 分支结构程序设计 一、单项选择题 1.下面程序运行后,如果从键盘上输入5,则输出结果是_______。 main() { int x; scanf(“%d”,&x); if(x- -<5) printf(“%d\n”,x); else printf(“%d”,x++); } A.3 B.4 C.5 D.6 2.下面程序的输出结果是_______。 main() { int m=5; if(m++>5 printf(“%d \n”,m); else printf(“%d\n”,m- -);
2、 } A.7 B.6 C.5 D.4 3.下面程序的输出结果是________。 main() { int x=3,y=0,z=0; if(x==y+z) printf(“****”); else printf(“# # # #”); } A.有语法错误,不能通过编译 B.输出**** C.可以通过编译,但是不能通过连接,因而不能运行 D.输出# # # # 4.执行下列语句后,变量b的值是________。 int x=35; char z=’A’;in
3、t b; b=((x&15)&&(z<’a’)); A.0 B.1 C.2 D.3 5.以下关于switch语句和break语句的描述中,正确的是_______。 A.在switch语句中必须使用break语句 B.在switch语句中,可以根据需要使用或不使用break语句 C.break语句只能用于switch语句中 D.break语句是switch语句的一部分 6.下面程序的输出结果是_______。 main() { int x=10,y=20,t=0; if(x= =y) t=x; x=y; y=t; prin
4、tf(“%d %d\n”,x,y); } A.10 10 B.10 20 C.20 10 D.20 0 7.有下面程序,执行后的输出结果是_______。 main() { int a=5,b=4,c=3,d=2; if(a>b>c) printf(“%d\n”,d); else if((c-1>=d)= =1) printf(“%d\n”,d+1); else printf(“%d\n”,d+2); } A.2 B.3 C.4 D.编译时有错,无结果。 8.若a
5、b,c1,c2,x,y均为整型变量,正确的switch语句是______。 A.switch(a+b); B.switch(a*a+b*b); { case 1:y=a+b;break; { case 3: case 0:y=a-b;break; case 1:y=a+b;break; } case 3:y=b-a;break; } C.switch a
6、 D.switch(a-b); { case c1:y=a-b;break; { default:y=a*b;break; case c2:x=a*b;break; case 3:case 4:x=a+b;break; default:x=a+b; } case 10:case 11:y=a-b;break; } 9.有一函数:,以下程序段中不能根据x值正确计算出y值的是____。 A.if(x>0) y=1
7、 B.y=0; else if(x= =0) y=0; if(x>0) y=1; else y=-1; else if(x<0) y=-1; 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
8、 else y=-1; 10.有下面程序,程序运行后的输出结果是________。 main() { int a=15,b=21,m=0; switch(a%3) { case 0:m++;break; case 1:m++; switch(b%2) { default:m++; case 0:m++;break; } } printf(“%d\n”,m); } A.1 B.2 C.3 D.4 11.C语言用_______表示
9、逻辑“真”值。 A.true B.t或y C.非零整型值 D.整型值0 12.为了避免嵌套的条件分支语句if—else 的二义性,C语言规定:C程序中的else总是与_____组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 13.执行下面程序,输入为1的输出结果是__⑴__,输入为3的输出结果为__⑵__。 #include “stdio.h” main() { int k; scanf(“%d”,&k); switch(k
10、) { case 1: printf (“%d\n”,k++); case 2: printf (“%d\n”,k++); case 3: printf (“%d\n”,k++); case 4: printf (“%d\n”,k++); break; delfault: printf(“Full!! \n”); } } ⑴ A.1 B.2 C. 2 D. 1 3 2 4 3 5 4 ⑵ A. 3 B.4 C
11、.3 D. 4 4 5 14.若从键盘输入58,则下面程序输出的结果是_____________ 。 main() { int a; scanf("%d",&a); if(a>50) printf("%d ",a); if(a>40) printf("%d ",a); if(a>30) printf("%d ",a); } A.58 58 58 B.58 58 C.58 D.0 15.运行两次下面的程序,如果从键盘上分别输入6和4,则输出结果是 __
12、 main( ) { int x ; scanf(“%d”,&x); if (x + +>5) printf(“%d”,x); else printf (“%d\n”, x - -); } A.7 和5 B.6和3 C.7和4 D.6和4 二、读程序 1.改正下列程序中错误的语句。 #include “stdio.h” main( ) { int a; printf("Input an integer:"); scanf("%d",a); if(a
13、1) printf("One\n"); else if(a<>2) printf("Many\n") else printf("Two\n"); } 2.写出下面程序的功能。 #include “stdio.h” main() { char ch; scanf("%c",ch); if(ch>=’A’ && ch<=’Z’) ch=ch-32; printf(“%c”,ch); } 3.写出下列程序的输出结果。
14、include “stdio.h” main() { int x=11,y=1; if(x%2==1) x+=5; else x-=3; y+=5; printf(“%d %d”,x,y); } 4.写出下列程序的输出结果(执行后输入数据3)。 #include “stdio.h” main() { int k; scanf(“%d”,k); switch(k) { case 1:printf(“%d\n”,k++); case 2:printf(“%d\n”,k++); case 3:pri
15、ntf(“%d\n”,k++); case 4:printf(“%d\n”,k++); break; default:printf(“Full!\n”); } } 5.写出下列程序的输出结果。 #include “stdio.h” main() { int x=6; if(x++>7) printf(“%d\n”,x); else printf(“%d\n”,x--); } 6.写出下列程序的输出结果。 #include “stdio.h” main()
16、 { int k=2,j=3; if (k+j<10) { k=5; j=k; } printf(“%d %d”,k,j); } 7.根据下面程序,写出相应的数学表达式。 #include “stdio.h” main() { int x,y; scanf(“%d”,&x); if(x<0) y=-1; else if(x= =0) y=0; else y=1; printf(“%d %d\n”,x,y); } 三、编程题 1.给定一个整数,判断它是否能同时被3、5、7整除。 2.输入三角形三条边的长度,判断它们能否构成三角形,若能则指出是何种三角形:等边、等腰、直角、一般;若不能构成三角形,则输出相应的信息。 3.输入一个整数,判断该数的奇偶性。(输出相应的标志even-偶数 odd-奇数) 4.输入一个x值,计算分段函数的值。 5.从键盘输入 4 个不相等的整数存入变量 n1,n2,n3,n4,找出其中最小的一个数并输出。 6.从键盘上输入一个数,若该数可以被13整除则输出,否则显示相应信息。 7.从键盘上输入一个字符,若该字符不是英文字母,则输出该字符。






