文档库 最新最全的文档下载
当前位置:文档库 › C语言练习题1(分支、循环)1v1.3完整版

C语言练习题1(分支、循环)1v1.3完整版

C语言练习题1(分支?循环)

编辑:高山流水审核:高山流水校对:高山流水

选择题(例)

1. 有如下程序

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("%f\n",y);

}

该程序的输出结果是A

A?0.500000

B?0.250000

C?1.000000

D?0.000000

2. C语言的if语句中,用作判断的表达式为C

A?关系表达式

B?逻辑表达式

C?任意表达式

D?算术表达式

3.假定所有变量均己正确定义,下列程序段运行后x的值是().D

k1=1;

k2=2;

k3=3;

x=15;

if(!k1)x--;

else if(k2)x=4;

else x=3;

A?15

B?14

C?3

D?4

选择题(79道)

1.C语言中的switch语句中case后D

A?可为任何量或表达式

B?只能为常量或常量表达式

C?可为常量或表达式或有确定值的变量及表达式

D?只能为常量

2. 执行下列语句后的输出为().C

int j=-1;

if(j<=1) printf("****\n");

else printf("%%%%\n");

A?****c

B?有错,执行不正确

C?****

D?%%%%

3. 有以下程序

main()

{

int i=1,j=1,k=2;

if((j++||k++)&&i++)

printf("%d,%d,%d\n",i,j,k);

}

执行后输出结果是A

A?2,2,2

B?2,2,3

C?l,l,2

D?2,2,l

4. 判断char型变量c是否为大写字母的C的表达式是C A?'A'<=c<='Z'

B?('A'<=c)AND('Z'<=c)

C?(c>='A')&&(c<='Z')

D?(c>='A')&(c<='Z')

5. 有如下程序

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("%f\n",y);

}

该程序的输出结果是A

A?0.500000

B?0.250000

C?1.000000

D?0.000000

6. C语言的if语句中,用作判断的表达式为C

A?关系表达式

B?逻辑表达式

C?任意表达式

D?算术表达式

7. 假定所有变量均己正确定义,下列程序段运行后x的值是().D

k1=1;

k2=2;

k3=3;

x=15;

if(!k1)x--;

else if(k2)x=4;

else x=3;

A?15

B?14

C?3

D?4

8. C语言的if语句嵌套时,if与else的配对关系是()?C

A?每个else与if的配对是任意的

B?每个else与if总是与最外层的if配对

C?每个else总是与它上面的最近的if配对

D?每个else总是与它上面的if配对

9. 为了避免在嵌套的条件语句if-else中产生二义性,c语言规定:else语句总是与(B)配对.

A?其之后最近的if

B?其之前最近的if

C?缩排位置相同的if

D?同一行上的1f

10. 以下程序的运行结果是B

main()

{

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

if(a

if(b<0) c=0;

else c+=1;

printf("%d\n",c);

}

A?0

B?2

C?1

11. 为表示关系x≥y≥z,应使用的表达式是A

A?(x>=y)&&(y>=z)

B?(x>=y>=z)

C?(x>=y)AND(y>=z)

D?(x>=y)&(y>=z)

12. 若执行以下程序时从程盘上输入3和4,则输出结果是B

main()

{

int a,b,s;

scanf("%d%d",&a,&b);

s=a;

if(a

s*=s;

printf("%d\n",s);

}

A?14

B?l6

C?20

D?l8

13. int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为().B

A?3

B?2

C?不一定

D?1

14. 在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式().D A?只能用关系表达式

B?只能用逻辑表达式

C?只能用逻辑表达式或关系表达式

D?可用任意表达式

15. 假定所有变量均已正确定义,下面语句段执行后的x的值是B

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

16. main()

int x=1,a=0,b=0;

switch(x)

{

case 0:b++;

case 1:a++;

case 2:a++;b++;

}

printf("a=%d,b=%d",a,b);

}

该程序的输出结果是()B

A?2,2

B?2,l

C,1,1

D?1,0

注:准确的说输出结果应为a=2,b=1

17. 下面的程序片断所表示的数学函数关系是A

y=-1;

if(x!=0)y=1;

if(x>0)y=1;

else y=0;

A?

y=0 (x<0)

0 (x=0)

1 (x>0)

B?

y=1 (x<0)?1 (x=0) 0 (x>0)

C?

y=?1 (x<0) 1 (x=0) 0 (x>0)

D?

y=?1 (x<0)

0 (x=0)

1 (x>0)

注:前两行完全可以忽略

18. 为了避免在嵌套的条件语句if-else中产生二义性;C语言规定else总与()配对C

A.同一行上的if

B?其之后最近的if

C?其之前最近的未配对的if

D?缩排位置相同的if

19. C语言中switch后的括号内表达式的值可以是C A?只能为整型和字符型

B?只能为整型

C?任何类型

D?只能为整型,字符型,枚举型

20. 下列程序的输出结果是().A

main()

{

int x=1,y=0,a=0,b=0;

switch(x)

{

case 1:switch(y)

{

case 0:a++;break;

case 1:b++;break;

}

case 2:a++;b++;break;

case 3:a++;b++;break;

}

printf("a=%d,b=%d\n",a,b);

}

A?a=2, b=l

B?a=l, b=0

C?a=2, b=2

D?a=l, b=l

21. 有如下程序

main()

{

int x=1,a=0,b=0;

switch(x)

{

case 0:b++;

case 1:a++;

case 2:a++;b++;

}

printf("a=%d,b=%d\n",a,b);

}

该程序的输出结果是B

A?a=l, b=l

C?a=l, b=0

D?a=2, b=2

22. 下列程序的输出结果是().A

main()

{

int x=1,y=0,a=0,b=0;

switch(x)

{

case 1:switch(y)

{

case 0:a++;break;

case 1:b++;break;

}

case 2:a++;b++;break;

case 3:a++;b++;break;

}

printf("a=%d,b=%d\n",a,b);

}

A?a=2, b=l

B?a=2, b=2

C?a=1, b=0

D?a=l, b=l

23. 下列运算符中优先级别最高的是A A?!

B?%

C?-=

D?&&

24. 有以下程序

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);

}

执行后输出结果是D

A?2

B?4

D?3

25. int a=3,b=2,c=1; if(a>b>c)a=b; else a=c;则a的值是()C

A?2

B?3

C?1

D?O

26. 运行以下程序后,输出的结果是B

main()

{

int k=-3;

if(k<=0)

printf("****\n"),

else printf("&&&&\n");

}

A?****

B?有语法错误不能通过编译

C?&&&&

D?****&&&&

27. 设a?b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是C A?a||b+c&&b-c

B?a<=b

C?!((a

D?a&&b

28. 以下不正确的if语句形式是().D

A?if(x

B?if(x>y&&x!=y);

C?if(x==y)x+=y;

D?if(x!=y) scanf("%d",&x) else scanf("%d",&y);

注:D中第一个scanf函数缺少分号

29. int a=1,b=2,c=3; if(a>b)a=b;if(a>c)a=c;则a的值为().A

A?1

B?不一定

C?3

D?2

30. 下列运算符中优先级别最低的运算符是C

A?+

B?!=

C?||

D?<=

31. 以下程序的输出结果是D

main()

{

int y=10;

for(;y>0;y--)

if(y%3==0)

{

printf("%d",--y);

continue;

}

}

A?741

B?963

C?875421

D?852

32. C语言中while和do-while循环的主要区别是()B

A?while循环控制条件比do-while的循环控制条件更严格

B?do-while循环体至少无条件执行一次

C?do-while的循环体不能是复合语句

D?do-while允许从外部跳转到循环体内

33. 下列程序的输出为().C

main()

{

int y=10;

while(y--);

printf("y=%d\n",y);

}

A?while构成无限循环

B?y=0

C?y=-l

D?y=l

注:y--后面有个分号

34. 以下描述正确的是().D

A?do-while循环中,根据情况可以省略while

B?由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

C?do-while 循环由do开始,用while结束,在while(表达式)后面不能写分号

D?在do-while 循环体中.一定要有能使 while 后面表达式的值变为零("假")的操作

35. 以下程序段的输出结果是C

int i,j,m=0;

for(i=1;i<=15;i+=4)

for(j=3;j<=19;j+=4)

m++;

printf("%d\n",m);

A?15

B?12

C?20

D?25

36. 以下程序段的输出结果为(A)?for(i=4;i>1;i--)for (j=1;j

B?无

c?#

D?###

37. 从循环体内某一层跳出继续执行循环外的语句是A

A?break语句

B?return语句

C?continue语句

D?空语句

38. 在以下给出的表达式中,与do--while(E)语句中的(E)不等价的表达式是().A

表达式是().

A?(E==0)

B?(E>O||E

C?(!E==0)

D?(E!=0)

39. 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和ll整除,请选择填空. C

#include

main()

{

int i=0,j,k;

do{i++,k=316-13*i;}while(______);

j=k/11;

printf("316=13*%d+11*%d",i,j);

}

A?k%11==0

B?k/11

C?k%11

D?k/11==0

40. 以下程序的执行结果是C

main()

{

int x=0,s=0;

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

printf("%d",s);

}

A?无限循环

B?O

C?1

D?语法错误

41. 设j和k都是int类型,则for循环语句

for (j=0, k=-1; k=1;j++,k++)printf("****\n");().B

A?循环体一次也不执行

B?是无限循环

C?循环结束的条件不合法

D?循环体只执行一次

42. 选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,其值只能被判断为“真”或“假”?哪个数作为逻辑“假”值().D

A?-1

B?非零的数

C?1

D?0

43. 以下不是无限循环语句为()C

A?for(;;x++=i);

B?while(1){x++;}

C?for(y=O,x=1;x>++y;x=x++) i=x;

D?for(i=10;;i--) sum+=i;

44. 在C语言中,为了结束由while语句构成的循环,while后一对圆括号中表达式的值应该为().B

A?1

B?0

C?True

D?非0

45. 结构化程序设计所规定的三种基本控制结构是().D

A?树形?网形?环形

B?输入?处理?输出

C,主程序?子程序,函数

D?顺序?选择?循环

46. 有以下程序段

int n=0,p;

do

{

scanf("%d",&p);

n++;

}while(p!=12345&&n<3);

此处do-while循环的结束条件是______. D

A?p的值等于12345并且n的值大于等于3

B?p的值不等于12345并且n的值小于3

C?p的值不等于12345或者n的值小于3

D?p的值等于12345或者n的值大于等于3

47. 以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x<4);x++);(). A A?4次

B?是无限循环

c?3次

D?循环次数不定

注:4次?y是赋值,每次判断都为真,所以y不起作用

48. 以下语句中,循环次数不为10次的语句是().A

A?for(i=1;i<10;i++);

B?i=10;while(i>0){--i;}

C?i=1;do{i++;}while(i<=10);

D?i=1;m:if(i<=10){i++;goto m;}

49. 有以下程序

main()

{

int i;

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

switch(i)

{

case 1:printf("%d",i);

case 2:printf("%d",i);

default :printf("%d",i);

}

}

执行后输出结果是A

A?011122

B?120

C?012020

D?012

50. 执行语句for(i=1;i++<4;);后变量i的值是().C

A?不定

B?3

C?4

D?5

51. 以下程序的输出结果是C

#include

main()

{

int i;

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

{

if(i%2)

putchar('<');

else

continue;

putchar('>');

}

putchar('#');

}

A?<><><>#

B?><><#

C?<><>#

D?><><><#

52. 以下叙述正确的是: C

A?用do-while构成循环时,只有在while后的表达式为非零时结束循环B?do-while语句构成的循环不能用其它语句构成的循环来代替?

C?用do-while构成循环时,只有在while后的表达式为零时结束循环D?do-while语句构成的循环只能用break语句退出?

53. 以下程序段的输出结果是B

int k,j,s;

for(k=2;k<6;k++,k++)

{

s=1;

for(j=k;j<6;j++)

s+=j;

}

printf("%d\n",s);

A?15

B?10

C?24

D?9

54. C语言程序的三种基本结构是顺序结构?选择结构和____结构D A?递归

B?转移

C?嵌套

D?循环

55. C语言中用于结构化程序设计的三种基本结构是().B

A?for?while?do-while

B?顺序结构?选择结构?循环结构

C?if?switch?break

D?if?for?continue

56. 以下程序的运行结果是().B

main()

{

int n;

for(n=1;n<=10;n++)

{

if(n%3==0) continue;

printf("%d",n);

}

}

A?12

B?12457810

C?1234567890

D?369

57. 以下程序段中,能够正确地执行循环的是().B

A?static int a; while(a)

B?int s=6;do s-=2;while(s);

C?for(i=1;i>1O;i++)

D?int s=6; m:if(s<100) exit(0); else s-=2; goto m;

58. 以下程序的运行结果是().B

main()

{

int i=1,sum=0;

while (i<10) sum=sum+1;i++;

printf("i=%d,sum=%d",i,sum);

}

A?i=10,sum=9

B?运行出现错误

C?i=2,sum=1

D?i=9,sum=9

注:while只包含了sum=sum+1;这条语句

59. 若i为整型变量,则以下循环执行次数是()A

for(i=2;i==0;) printf("%d",i--);

A?O次

B?1次

C?无限次

D?2次

60. 语句while(!E);中的表达式!E等价于().B

A?E!=1

B?E==O

C?E==1

D?E!=O

61. 设j和k都是int类型,则下面的for循环语句().C

for (j=0,k=0;j<=9&&k!=876;j++) scanf("%d",&k);

A?最多执行9次

B?循环体一次也不执行

C?最多执行10次

D?是无限循环

62. 判新两个字符串是否相等正确的表达方式是

A?while (sl=s2)

B?while (sl==s2)

C?while(strcmp(sl,s2)=0)

D?while(strcmp(s1,s2)==0)

63. 下面有关for循环的正确描述是().D

A?for循环是先执行循环循环体语句,后判断表达式

B?在for循环中,不能用break语句跳出循环体

C?for循环只能用干循环次数已经确定的情况

D?for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

64. 以下程序中,while循环的循环次数是____ A

main()

{

int i=0;

while(i<10)

{

if(i<1) continue;

if(i==5) break;

i++;

}

}

A?死循环,不能确定次数

B?6

C?4

D?1

65. 以下程序段的输出结果是B

int x=3;

do

{

printf("%3d",x-=2);

}while(!(--x));

A?死循环

B?1 -2

C?3 0

D?l

注:第一次执行完 printf("%3d",x-=2); 后x=1,然后--x为0,取非后为1,条件为true,继续执行循环,第二次执行完 printf("%3d",x-=2); 后x=-2,--x得到-3,取非后是0,循环结束

66. 若x是int类型变量,以下程序段的输出结果是D

for(x=3;x<6;x++)

printf((x%2)?("**%d"):("##%d\n"),x);

A?

##3

**4

##5

B?

##3

**4##5

B?

**3

##4

**5

D?

**3##4

**5

67. 对for(表达式1;;表达式3)可理解为().A

A?for(表达式1;1;表达式3)

B?for(表达式1;0;表达式3)

C?for(表达式1;表达式1;表达式3)

D?for(表达式1;表达式3;表达式3)

68. 以下程序段的输出结果是______. C

main()

{

int n=10;

while (n>7)

{

n--;

printf("%d",n);

}

}

A?1098

B?10987

C?987

D?9876

69. 以下程序的功能是按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:

main()

{

int n,k;

float score,sum,ave;

sum=0.0;

for (n=1;n<=10;n++)

{

for (k=1;k<=4;k++)

{

scanf("%f",&score);

sum+=score;

}

ave=sum/4.0;

printf("NO%d:%f\n",n,ave);

}

}

上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确.这条语句是B

A?ave=sum/4.0

B?sum=0.0;

C?sum+=score;

D?printf("NO%d:%f\n",n,ave);

70. while(fabs(t)<1e-5)if(!s/10)break;循环结束的条件是().D

A?fabs(t)

B?fabs(t)

C?t>=le-5&&t<=-le-5&&s>-10&&s<10

D?s/10==0

71. 以下不是死循环的语句是____. C

A?for(i=10;;i++)sum+=i;

B?while(1){x++};

C?for(;(c=getchar())!='\n';) printf("%c",c);

D?for(;;x+=i);

72. 以下叙述正确的是()?B

A?do-while语句构成的循环不能用其它语句构成的循环来代替

B?用do-while语句构成的循环,在while后的表达式为零时结束循环C?用do-while语句构成的循环,在while后的表达式为非零时结束循环D?do-while语句构成的循环.只能用break语句退出

73. 在下述程序中,判断i>j共执行了多少次C

#include

main()

{

int i=0,j=10,k=2,s=0;

for(;;)

{

i+=k;

if(i>j)

{

printf("%d\n",s);

break;

}

s+=i;

}

}

A?4

B?8

C?6

D?7

74. C语言中,while和do-while循环的主要区别是B

A?while的循环控制条件比do-while的循环控制条件严格

B?do-while的循环体至少无条件执行一次

C?do-while循环体不能是复合语句

D?do-while允许从外部转到循环体内

75. t为int类型,进入下面的循环之前,t的值为0 while(t=1)

{……}

则以下叙述中正确的是____. B

A?以上说法都不对

B,循环控制表达式的值为l

C?循环控制表达式的值为0

D?循环控制表达式不合法

76. 下面程序的运行结果是A

#include

main()

{

int y=10;

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

printf("%d\n",y--);

}

A?0

B?1

C?8

D?-l

77. 以下程序的输出结果是C

main()

{

int x,i;

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

{ x=i;

if(x%2==0)

if(x%3==0)

if(x%7==0)

printf("%d ",x);

}

printf("\n");

}

A?28 70

B?39 81

C?42 84

D?26 68

注:本题意图是遍历1~100内能同时被2?3?7整除的数

78. 以下程序的执行结果是____ A

main()

{

int num=0;

while(num<=2)

{

num++;

printf("%d,",num);

}

}

A?1,2,3,

B?1,2,3,4,

C?1,2,

D?0,1,2,

79. 以下程序的输出结果是B

main()

{

int i,sum;

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

sum+=i;

printf("%d\n",sum);

}

A?15

B?不确定

C?l6

D.0

判断题(6道)

1. C语言的switch语句case后可为常量或表达式或有确定值的变量及表达式.×

2. int i=20;switch(i/10){case 2:printf("A");

case 1:printf("B");}的输出结果为A.×

注:输出结果是AB

3. 若有int i=10,j=0;则执行完语句

if (j=0)i++;else i--;i的值为11.×

注:i的值为9,因为j=0是赋值,表达式的值是0

4. 若有说明int c;则while(c=getchar());是正确的C语句,√

5. while和do…while循环不论什么条件下它们的结果都是相同的?×

相关文档