文档库 最新最全的文档下载
当前位置:文档库 › C语言第四章程序控制结构复习题

C语言第四章程序控制结构复习题

C语言第四章程序控制结构复习题
C语言第四章程序控制结构复习题

选择结构程序设计复习题

一.选择题

1.已有定义语句:int x=3,y=4,z=5;,则值为0的表达式是:()a) x>y++ b) x<=++y c) x !=y+z>y-z d) y%z>=y-z 2.已有定义语句:int x=3,y=0,z=0;,则值为0的表达式是:()

a) x&&y b) x||z c) x ||z+2&&y-z d) !((x

3. x为奇数时值为“真”,x为偶数时值为“假”的表达式是:()

a) !(x%2==1) b) x%2==0 c) x%2 d) !(x%2)

4. 已有定义语句:int a=3,b=4;,则执行下述表达式后,变量b 的值是:()(a++==4)&&(b++==5)

a) 3 b) 4 c) 5 d) 6

5. 已有定义语句:int a=4,b=6;,则执行下述表达式后,变量b 的值是:()(a++==4)||(b++==6)

a) 4 b) 5 c) 6 d) 7

6. 已有定义语句:int x=6,y=4,z=5;,执行以下语句后,能正确表示x,y,z值的选项是:()if(x

a) x=4,y=5,z=6

b) x=4,y=6,z=6

c) x=4,y=5,z=5

d) x=5,y=6,z=4

7. 以下程序的运行结果是:()

main()

{ int i=0;

if(i==0) printf(“**”);

else printf(“$”); printf(“*\n”);

}

a) * b) $* c) ** d) ***

8. 若变量a,b,c都为整型,且a=1、b=15、c=0,则表达式a==b>c的值是()

a) 0 b) 非零c) “真”d) 1

9. a为0时,值为“真”的表达式是()

a) a b) !(++a) c) a=0 d) a==0

10. 若有定义和语句:int a=4,b=5,c=0d; d=!a&&!b||!c;,则d 的值是()

a) 0 b) 1 c) -1 d) 非0的数

11. 以下选项不能正确判断a为偶数的表达式是()

a) a%2==0 b) !a%2!=0

c) a/2*2-a==0 d) !(a%2)

12. 有以下程序:

main()

{ int a=2,b=1,c=2;

if(b

if(b<0) c=0,

c++;b++;

printf(“b=%d,c=%d\n”,b,c);

}

程序的输出结果是:()

a) b=1,c=2 b) b=1,c=0

c) b=2,c=2 d) b=1,c=1

13. 有以下程序:

main()

{ int n;

scanf(“%d”,&n);

if(n++<5) printf(“%X\n”,n);

else printf(“%X\n”,n--);

}

若执行程序时从键盘上输入9,则输出结果是:()

a) 11 b) A c) 9 d) 8

14. 有以下程序:

main()

{ int m=5;

if(++m>5)

if(m++>5) printf(“%d\n”,m+5);

else printf(“%d\n”,m--);

else printf(“%d\n”,--m);

}

程序的输出结果是:()

a) 8 b) 5 c) 10 d) 12

15. 有以下程序:

main()

{ float x=2.0,y;

if(x<0.0) y=0.0;

else if(x<5.0)&&(!x)) y=1.0/(x+2.0);

else if(x<10.0) y=1.0/x;

else y=1.0;

printf(“%f\n”,y);

}

程序的输出结果是:()

a) 0.000000 b) 0.250000

c) 0.500000d) 1.000000

16. 假设所有变量均已正确说明:

a=b=c=0; x=35;

if(!a) x--;

else if(b) ; if(c) x=3;

else x=4;

以上程序段运行后,x的值是:()

a) 34 b) 35 c) 4 d) 3

17. 当a=1、b=3、c=5、d=4时,执行下面一段程序:

if(a

if(c

else

if(a

if(b

else x=3;

else x=6;

else x=7;

以上程序段运行后,x的值是:()

a) 1 b) 2 c) 3 d) 6

18. 执行以下程序:

main()

{ int s,t,a,b;

scanf(“%d,%d”,&a,&b);

s=1;t=1;

if(a>0) s=s+1;

if(a>b) t=s+t;

else if(a==b) t=5;

else t=2*s;

printf(“t=%d\n”,t);

}

要使输出结果为:t=4,给a和b输入的值应满足的条件是:()

a) a>b b) aa>b

19. 以下程序的输出结果是:()

main()

{ int a=5,b=4,c=6,d;

printf(“%d\n”,d=a>b ?(a>c ? a:c) : (b));

}

a) 5 b) 4 c) 6 d) 不确定

20. 若有定义语句:int x=3,y=2,z=1; 则以下表达式的值是:()z*=(x>y ? ++x :y++)

a) 0 b) 1 c) 4 d) 3

21. 有以下程序:

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

22.以下while循环中,循环体执行的次数是:()

k=1;

while (--k) k=10;

a) 10次b) 无限次c) 一次也不执行d) 1次23.有以下程序段,其中x为整型变量,以下选项中叙述正确的是:()

x=0;

while (!x!=0) x++;

a) 退出while循环后,x的值为0

b) 退出while循环后,x的值为1

c) while的控制表达式是非法的

d) while循环执行无限次

24. 有以下程序段,其中n为整型变量,执行后输出结果是:()

n=20 ;

while(n--) ; printf(“%d”,n) ;

a) 2 b) 10 c) -1 d) 0

25. 有以下程序段,其中t为整型变量,以下选项中叙述正确

的是:()

t=1;

while (-1)

{ t--;

if(t) break;}

a) 循环一次也不执行

b) 循环执行一次

c) 循环控制表达式(-1)不合法

d) 循环执行2次

26. 有以下程序段,其中x为整型变量,以下选项中叙述正确的是:()

x=-1;

do

{;}

while (x++);

printf(“x=%d”,x);

a) 该循环没有循环体,程序错误

b) 输出x=1

c) 输出x=0

d) 输出x=-1

27. 有以下程序段,其中x,y为整型变量,程序输出结果是:()

for(x=0,y=0;(x<=1)&&(y=1);x++,y--) ;

printf(“x=%d,y=%d”,x,y);

a) x=2,y=0 b) x=1,y=0

c) x=1,y=1 d) x=0,y=0

28. 有以下程序:

main()

{ int x=0,y=0;

while(x<5&&++y) y--,x++;

printf(“%d,%d”,y,x);

}

程序的输出结果是:()

a) 0,5 b) 1,5 c) 0,4 d) 1,4

29. 有以下程序:

main()

{ int num=0;

do

{ num++ ;printf(“%d\n”,num); }

while(num<=2);

}

程序的输出结果是:()

a) 1 b) 1c) 1 d) 1

2 2 2

3 3

4

30. 有以下程序:

main()

{ int x=3;

do

{ printf(“%d”,x-=2); }

while(!(--x));

}

程序的输出结果是:()

a) 1 b) 3 0 c) 1 -2 d) 死循环

31. 有以下程序:

main()

{ int y=10;

do { y--; } while(--y);

printf(“%d\n”,y--);

}

程序的输出结果是:()

a) 1 b) -1 c) 8 d) 0

32. 有以下程序:

main()

{ int x=3,y;

do

{ y=--x;

if( !y) printf(“x”) ;

else printf(“y”) ;

} while(x);

}

程序的输出结果是:()

a) xyx b) yyx c) yxx d) yxy

33. 有以下程序段,此处do-while循环的结束条件是:()

int n=0,p;

do {scanf(“%d”,&p);n++;} while (p!=12345&&n<3);

a) p的值不等于12345并且n的值小于3

b) p的值等于12345并且n的值大于等于3

c) p的值不等于12345或者n的值小于3

d) p的值等于12345或者n的值大于等于3

34. 有以下程序:

main()

{ int a,b,t;

for(a=3,b=0 ;!a==b ;a--,b++)

if(a>b) { t=a;a=b;b=t;}

printf(“%d,%d\n”,a,b);

}

程序的输出结果是:()

a) 4,1 b) 1,4 c) 4,-1 d) -1,4

35. 有以下程序:

main()

{ int x=3,y=0;

do

{ while( !y) y=-x;

} while(x--);

printf(“%d,%d\n”,x,y);

}

程序的输出结果是:()

a) -1,3 b) -1,-3c) 0,0 d) 1,-3

36. 有以下程序:

main()

{ int m,n;

printf(“Enter m,n:”) ; scanf(“%d%d”,&m,&n);

while(m!=n)

{while(m>n) m-=n;

while(n>m) n-=m;}

printf(“m=%d\n”,m);

}

程序的输出结果是:()

a) m=3 b) m=2 c) m=1 d) m=0

37. 有以下程序:

main()

{ int i,s=1;

for(i=1 ;i<=50 ;i++)

if( !(i%5)&& !(i%3)) s+=i;

printf(“%d\n”,s);

}

程序的输出结果是:()

a) 409 b) 277 c) 1 d) 91

38. 有以下程序:

main()

{ int x=0,y=0,i;

for(i=1 ; ;++i)

{ if(i%2==0) {x++ ;continue ;}

if(i%5==0) {y++ ;break ;}

}

printf(“%d,%d”,x,y);

}

程序的输出结果是:()

a) 2,1 b) 2,2 c) 2,5 d) 5,2

39. 有以下程序:

main()

{ int i=0,a=0;

while(i<30)

{for(;;)

{if((i%10)==0) break;

else i--;}

i+=11; a+=i;

}

printf(“%d\n”,a);

}

程序的输出结果是:()

a) 66 b) 63 c) 33 d) 32

40. 有以下程序:

main()

{ int a,b;

for(a=1,b=1 ;a<=100 ;a++)

{ if(b>=10) break;

if(b%3==1)

{ b+=3; continue; }

}

printf(“%d\n”,a);

}

程序的输出结果是:()

a) 101 b) 6 c) 5 d) 4

41. 有以下程序:

main()

{ int i=0;

for(i+=3 ;i<=5 ;i=i+2)

switch(i%5)

{ case 0: printf(“*”);

case 1: printf(“#”); break;

default: printf(“!”); break;

case 2: printf(“&”);

}

}

程序的输出结果是:()

a) *# b) !& c) !*# d) *#*

二.填空题

1.设y是int型变量,请写出当y是奇数时值为1的关系表达式_ y%2 或y%2==0 或y%2!=0_.

2. 表示“整数x的绝对值大于5”时值为“真”的C语言表达式是__ x>5||x<-5__.

3. 若x为int类型,请以最简单的形式写出与!x等价的C语言

表达式___ x==0__.

4. 设x,y,z,t均为int型变量,则执行下述语句后,x的值是__4__,y的值是__3__,z的值是__4__,t的值是__1__。

x=y=z=3; t=(++x||++y)&&++z;

5. 若有定义语句:int a=1,b=2,c=3,d=4;,则执行下述表达式后,表达式的值是___1____,a的值是__1__,b的值是__2__,c 的值是__2__,d的值是__5__。

(a*=a

6. 以下程序的运行结果是__-1___.

main()

{ int a=0,b=0,c;

if(a>b) c=1;

else if(a=b) c=0;

else c=-1;

printf(“%d\n”,c);

}

7. 若有定义:int a=5,b=4,c=9;,以下语句的执行结果是_###a=6,b=3,c=9 。

a++<=5&&b--<=2&&c++

? printf(“***a=%d,b=%d,c=%d\n”,a,b,c) :

printf(“###a=%d,b=%d,c=%d\n”,a,b,c);

8.若从键盘上输入3和4,执行以下程序后的输出结果是

__36___.

main()

{ int a=0,b=0,s=0;

scanf(“%d%d”,&a,&b);

if(a

printf(“%d\n”,s);

}

9.若从键盘上输入58,则以下程序的输出结果是_585858_.

main()

{ int a;

scanf(“%d”,&a); printf(“%d”,a);

if(a<50) printf(“%d”,a);

if(a>40) printf(“%d”,a);

if(a>30) printf(“%d”,a);

}

10.以下程序的运行结果是__!#___.

main()

{ int a=0,b=4,c=5;

switch(a==0)

{case 1: switch(b<0)

{case 1: printf(“@”); break;

case 0: printf(“!”); break;

}

case 0: switch(c==5)

{case 0: printf(“*”); break;

case 1: printf(“#”); break;

default: printf(“%”);

} break;

default: printf(“&”);

}

}

11.要求使以下程序段输出10个整数,请填空。

for(i=0;i<=_18_;printf(“%d\n”,i+=2));

12. 执行下面程序段后,k的值是_____0_____。

r=1; n=203; k=1;

do {k*=n%10*r; n/=10; r++;} while(n); 13. 下面程序的输出结果是_1 2 5 10_。

main()

{ int i,x=10;

for(i=1;i<=x;i++)

if(x%i==0) printf(“%d ”,i);

}

14. 下面程序的输出结果是___无定值________。

main()

{ int i,sum;

for(i=1;i<6;i++) sum+=i;

printf(“%d”,sum);

}

15. 下面程序的输出结果是_20__。

main()

{ int i,sum=0;

for(i=2;i<10;i++)

{ if((i%2)!=0) continue;

sum+=i;}

printf(“%d\n”,sum);

}

16.下面程序的输出结果是**!

*!!

__!!!____。

main()

{ int i,j;

for(i=2;i>=0;i--)

{ for(j=1;j<=i;j++) printf(“*”);

for(j=0;j<=2-i;j++) printf(“!”);

printf(“\n”);

}

}

17. 下面程序的输出结果是___1,1____。

main()

{ int i,j=0,a=0;

for(i=0;i<5;i++)

do

{ if(j%3) break;

a++; j++;

} while(j<10);

printf(“%d,%d\n”,j,a);

}

18. 下面程序的输出结果是___852____。

main()

{ int x=9;

for(;x>0;)

{ if(x%3==0)

{ printf(“%d”,--x); continue; }

x--;

}

}

19. 下面程序的输出结果是____***#____。

main()

第四章基本的控制结构答案

基本的控制结构 一、选择题 1.VB 提供了结构化程序设计的三种基本结构,这三种基本结构是 。 (A ) 递归结构、选择结构、循环结构 (B )选择结构、过程结构、顺序结构 (C )过程结构、输入输出结构、转向结构 (D )顺序结构、选择结构、循环结构 2.下面程序段运行后,显示的结果是 。 Dim x If x then print x else print x+1 (A) 1 (B)0 (C)-1 (D)显示出错信息 3.对于语句If x=1 then y=1,下列说法正确的是 。 (A) x=1和 y=1均为赋值语句 (B )x=1和y=1均为关系表达式 (C) x=1为关系表达式,y=1为赋值语句 (D )x=1为赋值语句,y=1为关系表达式 4.用if 语句表示分段函数f(x)= 1,31 ,12<+≥+x x x x ,下列不正确的程序段是 (A) f=x*x+3 (B) if x>=1 Then f=Sqr(x+1) If x>=1 Then f=Sqr(x+1) if x<1 Then f=x*x+3 (C)if x>=1 Then f=Sqr(x+1) (D)if x<1 Then f=x*x+3 Else f=x*x+3 Else f=Sqr(x+1) 5.下面程序段,运行后显示的结果是 Dim x X=Int(Rnd)+5 Select Case x Case 5 Print “优秀” Case 4 Print “良好” Case 3 Print “通过” Case Else Print “不通过” End Select (A)优秀 (B)良好 (C)通过 (D)不通过 6.下面语句执行后,变量w 中的值是 W=Choose(Weekday(“2007,5,1”),“Red”, “Green ” “Blue ” “Yellow ”) (A)Null (B) “Red” (C) “Blue ” (D) “Yellow ” 7. 以下______是正确的For … Next 结构。 (A )For x=1 To Step 10 (B )For x = 3 To 3 Step 3 … … Next x Next x

第四章 VB程序的控制结构

第四章VB程序的控制结构 4.1算法概论 1.算法的概念 算法:指用计算机解决某一问题的方法和步骤。 数值算法:用于解决一般数学解析方法难以解决的问题,如:求超越方程的根、求定积分、解微分方程等。 非数值算法:用于对非数值信息进行查找、排序等。 2.算法的特征 (1)确定性:指算法的每个步骤都应确切无误,没有歧义。 (2)可行性:指算法的每个步骤必须是计算机能够有效执行、可以实现的,并可得到确定的结果。 (3)有穷性:指一个算法应该在有限的时间和步骤内可以执行完毕的。 (4)输入性:指一个算法可以有0或多个输入数据。 (5)输出性:指一个算法必须有一个或多个输出结果。 3.算法的评价 主要评价指标是:算法是否正确、运行的效率、占用系统资源的多少。 4.算法的描述 一般常用流程框图来描述算法。

5.基本算法结构 “结构化程序设计方法”规定算法有三种基本结构:顺序结构、选择结构和循环结构 6.算 法示 例 (1) 欧几里德算法——求两个自然数的最大公约数

(2)顺序查找算法——在N个字符串集合中,查找有无特定的字符串存在

4.2顺序结构 1.赋值语句 赋值语句是任何程序设计中最基本的语句,赋值语句都时顺序执行的。赋值语句的形式为:

变量名= 表达式 它的作用是计算右边表达式的值,然后赋给左边的变量,表达式的类型应该与变量名的类型一致。 2. 使用说明 (1)当表达式为数值型而与变量精度不同时,强制转换成左边变量的精度; (2)当表达式是数字字符串,左边变量是数值类型,自动转换成数值类型再赋值,但当表达式中有非数字字符或空串,则出错。 (3)任何非字符类型赋值给字符类型,自动转换为字符类型; (4)当逻辑型赋值给数值型时,True转换为-1,False转换为0;反之,非0转换为True,0转换为False; (5)赋值号左边的变量只能是变量,不能是常量、常数符号、表达式,否则报错; (6)不能在一句赋值语句中,同时给各变量赋值; (7)在条件表达式中出现的= 是等号,系统会根据= 号的位置,自动判断是否为赋值号; (8)注意N=N+1 是累加中常见的赋值语句,表示将N变量中的值加1后再赋值给N。 5 4.3选择结构(或称分支结构) 1.1. IF条件语句 (1)If……Then语句(单分支结构F) 语句形式: 1)If<表达式> Then 语句块 End If 2)If <表达式> Then <语句>

相关文档
相关文档 最新文档