c语言练习题

1、C语言的跳转语句中,对于break和continue说法正确的是_______。
A、continue语句只应用于循环体中
B、break语句只应用于循环体中
C、break是无条件跳转语句,continue不是
D、break和continue的跳转范围不够明确,容易产生问题

2、对于do...while语句,下列说法中正确的是______。
A、用do...while语句可实现分支程序设计
B、当循环条件不成立时,至少也要执行一次循环体
C、当循环条件不成立时,一次也不执行循环体
D、do...while与while结构完全相同

3、下列程序段执行时,若从键盘输入23,则输出为______。

int c,num;

scanf("%d",&num);

do

{c=num%10;printf("%d",c);
num=num/10;
}while(num>0);

printf("\n");
A、32
B、3
C、2
D、23

4、若I,j已定义为int型,则以下for循环是( )。

for(I=0,j=0;(j!=123)&&(I<4);I++);

A、无限循环
B、循环次数不定
C、执行4次
D、执行3次

5、对于for(表达式1;;表达式3)可以理解为________。
A、for(表达式1;0; 表达式3)
B、for(表达式1;1; 表达式3)
C、for(表达式1;表达式1;表达式3)
D、for(表达式1;表达式3;表达式3)

6、执行下列程序段后,I值是( )。
int I,x;
for(I=1,x=1;I<=20;I++)
{if(x>=10)
break;
if(x%2==1)
{
x+=5;
continue;
}

x-=3;

}

A、10
B、7
C、6
D、14

7、下列程序的执行结果是( )。
#include<stdio.h>
main( )
{int s=0, k;
for(k=7;k>=0;k--)
{switch(k)
{
case 1:
case 4:
case 7:
s++;
break;
case 2:
case 3:
case 6:
break;
case 0:
case 5:
s+=2;
break;
}
}
printf("s=%d\n",s);
}

A、s=4
B、s=7
C、s=3
D、s=5

8、下列程序段执行结果是输出( )。
x=3;
do
{
printf("%2d",x--);
} while(!x);

A、0
B、3
C、321
D、210

9、以下程序的执行结果是( )。

#include

#define N 2

#define M N+1

#define NUM (M+1)*M/2

main( )

{int I=1,n=0;

while(I<=NUM)

{ n++;

printf("%d",n);

I++;

}

printf("\n");

}

A、0123456
B、12345678
C、123
D、12

10、若I,j已定义为int型,则以下程序段中内循环体"printf("sd\n");"的执行次数是__________。
#include
main( )
{int j,I;
for(I=5;I>=1;I--)
for(j=0;j<4;j++)
printf("sd\n");
}

注意:请参阅课本P29的内容
A、20
B、24
C、25
D、30
最好有解析

1、C语言的跳转语句中,对于break和continue说法正确的是_______。
A、continue语句只应用于循环体中
B、break语句只应用于循环体中 (switch也用)
C、break是无条件跳转语句,continue不是 (均无条件跳转)
D、break和continue的跳转范围不够明确,容易产生问题 (goto跳转范围不够明确)

2、对于do...while语句,下列说法中正确的是______。
A、用do...while语句可实现分支程序设计 (循环)
B、当循环条件不成立时,至少也要执行一次循环体
C、当循环条件不成立时,一次也不执行循环体 (至少执行一次)
D、do...while与while结构完全相同 (不同)

3、下列程序段执行时,若从键盘输入23,则输出为______。

int c,num;

scanf("%d",&num);

do
{
c=num%10;
printf("%d",c);
num=num/10;
}while(num>0);

printf("\n");
解释:
第一次循环 23%10 = 3 输出3,23/10(整除)值为2 继续循环
第二次循环 2 %10 = 2 输出2 2/10值为0 退出循环

结果 32

4、若I,j已定义为int型,则以下for循环是( )。

for(I=0,j=0;(j!=123)&&(I<4);I++);

A、无限循环
B、循环次数不定
C、执行4次
D、执行3次
解释:
j != 123 永远为真
上面一句等价为 for(I=0;I < 4;I++); 所以4次

5、对于for(表达式1;;表达式3)可以理解为________。
A、for(表达式1;0; 表达式3)
B、for(表达式1;1; 表达式3)
C、for(表达式1;表达式1;表达式3)
D、for(表达式1;表达式3;表达式3)
解释:for(表达式1;;表达式3) 说明循环不判断循环条件永远为真所以
for(表达式1;1; 表达式3)

6、执行下列程序段后,I值是( )。
int I,x;
for(I=1,x=1;I<=20;I++)
{
if(x>=10) 语句1
break;
if(x%2==1) 语句2
{
x+=5;
continue;
}
x-=3;
}
第一次循环:语句1为假,语句2为真执行 x+ = 5 x值变成6 重新循环
第二次循环:语句1为假,语句2为假执行 x- = 3 x值变成3 重新循环
第三次循环:语句1为假,语句2为真执行 x+ = 5 x值变成8 重新循环
第四次循环:语句1为假,语句2为假执行 x- = 3 x值变成5 重新循环
第五次循环:语句1为假,语句2为真执行 x+ = 5 x值变成10 重新循环
第六次循环:语句1为真,退出循环 x值为10

7、下列程序的执行结果是( )。
#include<stdio.h>
main( )
{
int s=0, k;
for(k=7;k>=0;k--)
{
switch(k)
{
case 1:
case 4:
case 7:
s++;
break;
case 2:
case 3:
case 6:
break;
case 0:
case 5:
s+=2;
break;
}
}
printf("s=%d\n",s);
}
switch语句一旦匹配到case就不在匹配case了,直接按顺序执行下一个case中的代码。不难得出答案。

8、下列程序段执行结果是输出( )。
x=3;
do
{
printf("%2d",x--);
} while(!x);

x++ 和++x 前缀和后缀的问题数上讲了很多。
第一次循环输出3 x的值变成2 !2 为假退出循环

9、以下程序的执行结果是( )。

#include

#define N 2
#define M N+1
#define NUM (M+1)*M/2
main( )
{
int I=1,n=0;
while(I<=NUM)
{
n++;
printf("%d",n);
I++;
}
printf("\n");
}
宏展开:
等价于 while(I <= (M+1)*M/2 )
等价于 while(I <= (N+1+1)*N+1/2 )
等价于 while(I <= (2+1+1)*2+1/2 )
等价于 while(I <= 8 )

10、若I,j已定义为int型,则以下程序段中内循环体"printf("sd\n");"的执行次数是__________。
#include
main( )
{
int j,I;
for(I=5;I>=1;I--) 执行5次
for(j=0;j<4;j++) 执行4次
printf("sd\n"); 执行5×4 = 20次
}

循环中条件变量x++ 和++x 等效

结果我没验证 C语言学习推荐看 point on c
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-15
1.A 2.B 3.A 4.C 5.B 6.C 7.B 8.B 9.A 10.A
可以将题目编译得出答案
第2个回答  2010-04-16
1-5ABACB
C B B A A
第3个回答  2010-04-15
abaabadbaa
相似回答