内容正文:
<C语言程序设计教程>清华大学出版社(第3版)
第六章 循环结构程序设计 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 选择题(共10题,每小题2分,共20分)
1、下列循环中,没有语法错误的是 。
A、 int i=1;
While(i<=10)
i++;
printf(“%d
”,i);
B、int i=1;
while(i<=10)
i++;
printf(“%d
”,i);
C、int i=1;
do {i++;
} while(i<=10)
printf(“%d
”,i);
D、int i;
for(i=1;i<=10)
{sum+=i;i++;}
printf(“%d
”,i);
【答案】B
【解析】A选项中,while关键字大写;B选项中,do-while的while后面没有分号;D选项中,for括号中有三个表达式,可以空着,但必须写分号。故选B。
2、下列循环程序段中,不是死循环的是 。
A、int j=0;
while(j<=0);j++;
B、int k;
for(k=5; ;k--);
C、int i=16,s=0;
while(s<=20) s=i%15+1;
D、int z=9;
for(;z;) –z;
【答案】D
【解析】A选项中,while后有分号,循环控制变量z的值在循环体中没有被改变,一直为真,是死循环。B选项中,for循环表达式2没有书写,一直为真,是死循环。C选项中,s一直被重新赋值,一直小于20,是死循环。故选D。
3、以下能正确计算1+2+3+4+5的程序段是 。
原创精品资源学科网独家享有版权,侵权必究!
A、do{ i=1;s=0;
s+=i++;
}while(i<=5);
B、do{ i=1;s=1;
s+=i++;
}while(i<=5);
C、i=1;s=0;
do{ s+=i++;
} while(i<=5);
D、i=1;s=0;
do{ s+=++i;
} while(i<=5);
【答案】C
【解析】A、B选项中,i和s赋初值在循环体内,每一次循环,又会被重新赋值,排除。D选项中,s+=++i,++在前,i的值会变成2跳过了1, 排除。故选C。
4、在for循环中,判断循环是否终止的时候是 。
A、在测试循环条件时进行判断 C、循环执行过程中判断
B、任何地方,只要条件不满足就终止 D、以上均不正确
【答案】A
【解析】for循环中在表达式2进行循环条件判断。故选A。
5、 下列有关for循环说法正确的是 。
A、在for循环中循环体至少执行一次。
B、在for循环语句中省略表达式1,表达式3则相当于while语句。
C、在for循环语句中省略表达式2,则循环条件总是为假。
D、for语句中表达式1,表达式2,表达式3均可省略,分号也不要写。
【答案】B
【解析】A选项中,在for循环中表达式2一开始为假,循环体一次也不执行。C选项中,在for循环语句中省略表达式2,则循环条件总是为真。D选项中,for语句中表达式1,表达式2,表达式3均可省略,但分号要写。
6、执行下列程序段后,结果为 。
int k=0;
do{ k++;
}while(k++<=3); printf(“%d”,k);
A、3 B、4 C、5 D、6
【答案】D
【解析】最后一轮循环,当K=5,判断条件不成立时,后置加还会加1.故选D。原创精品资源学科网独家享有版权,侵权必究!
7、下列程序段执行后x值为 ,共执行几次?。
int x=8;
do{ x++;
}while(x++>9);
A、9 1 B、10 1 C、9 2 D、10 2
【答案】B
【解析】要注意条件,只成立了一次,循环结束后,后置加加1,x值为10。故选B。
8、执行下列程序段后,结果为 。
int x,s=0;
for(x=1;x<=20;x++)
{ s+=x;
if(s>15) break; }
printf(“%d,%d
”,x,s);
A、21,6 B、6,21 C、15,5 D、5,15
【答案】B
【解析】这个循环中,x>=20和s>15时会结束循环,要注意if里面的条件,故选B。
9、执行下列程序段后,结果为 。
int a=21,s=0;
do{ if(a++%3==0) continue;
s+=a; a+=5;
}while(s<=30) ;
printf(“%d ,%d
”, a,s);}
A、34,52 B、52,34 C、31,48 D、48,31
【答案】A
【解析】在这个循环中,要注意判断完if语句条件时,a的值加1,s+=a是a加1后的值。故选A。
10、如有程序段:
int i=0;
while(i++);原创精品资源学科网独家享有版权,侵权必究!
则下面描述正确的是 。
A、该循环是死循环 B、该循环执行1次
C、循环结束后i的值为1 D、以上说法都不对
【答案】C
【解析】i的初始值为0,在条件判断中i为后置加,先使用i的值判断,条件不成立循环结束,i的值加1。故选C。
二、填空题(共6空,每空2分,共12分)
1、循环结构的控制语句有while语句、 、 。
【答案】do-while语句 for语句
2、while语句和do-whlie语句的区别在于 。
【答案】第一次判断条件不成立,while语句循环体一次也不执行,do-while语句循环体会被执行一次
3、跳出循环可以用关键字 。
【答案】break
4、break语句和continue语句在循环体的作用区别在于 。
【答案】break是结束循环,continue是跳过循环体后面的语句,提前进入下一次循环
5、若有程序段如下:
int i; float m=1.0;
for(i=1;i<=5;i++) m/=i;
则程序段功能是 。
【答案】求
三、程序运行题(共6题,每小题3分,共18分)
1、以下程序的运行结果是 。
#include<stdio.h>
void main()
{ int x=8,y=6,t;
while(x-->++y) t=x;y=x;y=t;
printf("%d,%d
",x,y); }原创精品资源学科网独家享有版权,侵权必究!
【答案】6,7
2、以下程序的运行结果是 。
#include<stdio.h>
void main()
{ char ch;
while((ch=getchar())!=’E’)
if(ch>=’A’&&ch<=’Z’) putchar(ch-’A’+’a’); }
从键盘输入abA2DC5UEFD<回车>
【答案】adcu
3、 以下程序的运行结果是 。
#include<stdio.h>
void main()
{ int x;
for(x=1;x<=20;x++)
if(x%2==0)
if(x++%3==0) printf(“%d\t”,x); }
【答案】7 13 19
4、 以下程序的运行结果是 。
#include<stdio.h>
void main()
{ int i=6;
do{ switch(i%2)
{ case 4:i--;break;
case 3:continue; }
i=i-2; printf(“i=%d\t”,i);
}while(i>0); }
【答案】i=4 i=2 i=0
5、 以下程序的运行结果是 。
#include<stdio.h>
void main() 原创精品资源学科网独家享有版权,侵权必究!
{ int i,j;
for(i=0;i<5;i++)
for(j=0;j<10;j++)
{ if(j==6) break;
if(i<3) continue;}
printf(“i=%d,j=%d
”,i,j); }
【答案】i=5,j=6
6、 以下程序的运行结果是 。
#include<stdio.h>
void main()
{ i int i,j,k=2;
for(i=1;i<=3;i++)
{ j=1;
while(j<=10)
{ if(j%3==0) k+=j;
j++;}
}
printf("%d
",k); }
【答案】56
四、程序填空题(共6空,每空5分,共30分)
1、求1+3+6+10+15+21+28+36+45+55的和,请填空。
#include<stdio.h>
void main()
{ int t=2;
for(i=1;i<=55; )
sum+=i;
printf("sum=%d
",sum);
}
【答案】int sum=0,i; i+=t++原创精品资源学科网独家享有版权,侵权必究!
2、 输入一行字符,将其中的数字字符转换为数字,并计算它们的和。例如“AB12D354D9F67”,则和为442。请填空。
#include<stdio.h>
void main()
{ char ch;
while((ch=getchar())!=’
’)
if(ch>=’0’&&ch<=’9’) s=
else { sum+=s; }
sum+=s; }
【答案】 int sum=0,s=0; s*10+ch-’0’; s=0;
3、 百鸡问题,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、母、雏各几何?
#include<stdio.h>
void main()
{ int i,j;
for(i=0;i<20;i++)
for(j=0;j<33;j++)
if( )
printf(“%5d%5d%5d
”,i,j,100-i-j); }
【答案】15*i+9*j+(100-i-j)==300
五、程序改错题(共20分)
1、输出200以内的所有素数,10个为一行。现有2处错误,请在找出错误语句,并写出完整的正确语句。(找出错误2分,改正错误3分)
L1 #include<stdio.h>
L2 void main()
L3 { int n,t,flag,count=0;
L4 for(n=1;n<200;n++)
L5 { for(t=1;t<=n/2;n++)
L6 if(n%t==0) flag=0;原创精品资源学科网独家享有版权,侵权必究!
L7 if(flag)
L8 { printf(“%5d”,n);
L9 count++;
L10 if(count%10==0) printf(“
”);}
L11 } }
【答案】 L3 { int n,t,flag=1,count=0;
L5 { for(t=2;flag&&t<=n/2;n++)
2、输出Fbonacci数列前40项,4个为一行。现有2处错误,请在找出错误语句,并写出完整的正确语句。(找出错误2分,改正错误3分)
L1 #include<stdio.h>
L2 void main( )
L3 { int f1=1,f2=1,i;
L4 for(i=2;i<=40;i++)
L5 { printf(“%5d%5d”,f1,f2);
L6 if(i%4==0) printf(“
”);
L7 f1=f1+f2;
L8 f2=f2+f1;
L9 } }
【答案】 L4 for(i=2;i<=40;i+=2)
L6 if(i%2==0) printf(“
”);
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
<C语言程序设计教程>清华大学出版社(第3版)
第六章 循环结构程序设计 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 选择题(共10题,每小题2分,共20分)
1、下列循环中,没有语法错误的是 。
A、 int i=1;
While(i<=10)
i++;
printf(“%d
”,i);
B、int i=1;
while(i<=10)
i++;
printf(“%d
”,i);
C、int i=1;
do {i++;
} while(i<=10)
printf(“%d
”,i);
D、int i;
for(i=1;i<=10)
{sum+=i;i++;}
printf(“%d
”,i);
2、下列循环程序段中,不是死循环的是 。
A、int j=0;
while(j<=0);j++;
B、int k;
for(k=5; ;k--);
C、int i=16,s=0;
while(s<=20) s=i%15+1;
D、int z=9;
for(;z;) –z;
3、以下能正确计算1+2+3+4+5的程序段是 。
A、do{ i=1;s=0;
s+=i++;
}while(i<=5);
B、do{ i=1;s=1;
s+=i++;
}while(i<=5);
C、i=1;s=0;
do{ s+=i++;
} while(i<=5);
D、i=1;s=0;
do{ s+=++i;
} while(i<=5);
4、在for循环中,判断循环是否终止的时候是 。
A、在测试循环条件时进行判断 C、循环执行过程中判断
B、任何地方,只要条件不满足就终止 D、以上均不正确 原创精品资源学科网独家享有版权,侵权必究!
5、 下列有关for循环说法正确的是 。
A、在for循环中循环体至少执行一次。
B、在for循环语句中省略表达式1,表达式3则相当于while语句。
C、在for循环语句中省略表达式2,则循环条件总是为假。
D、for语句中表达式1,表达式2,表达式3均可省略,分号也不要写。
6、执行下列程序段后,结果为 。
int k=0;
do{ k++;
}while(k++<=3); printf(“%d”,k);
A、3 B、4 C、5 D、6
7、下列程序段执行后x值为 ,共执行几次?。
int x=8;
do{ x++;
}while(x++>9);
A、9 1 B、10 1 C、9 2 D、10 2
8、执行下列程序段后,结果为 。
int x,s=0;
for(x=1;x<=20;x++)
{ s+=x;
if(s>15) break; }
printf(“%d,%d
”,x,s);
A、21,6 B、6,21 C、15,5 D、5,15
9、执行下列程序段后,结果为 。
int a=21,s=0;
do{ if(a++%3==0) continue;
s+=a; a+=5;
}while(s<=30) ;
printf(“%d ,%d
”, a,s);}
A、34,52 B、52,34 C、31,48 D、48,31 原创精品资源学科网独家享有版权,侵权必究!
10、如有程序段:
int i=0;
while(i++);
则下面描述正确的是 。
A、该循环是死循环 B、该循环执行1次
C、循环结束后i的值为1 D、以上说法都不对
二、填空题(共6空,每空2分,共12分)
1、循环结构的控制语句有while语句、 、 。
2、while语句和do-whlie语句的区别在于 。
3、跳出循环可以用关键字 。
4、break语句和continue语句在循环体的作用区别在于 。
5、若有程序段如下:
int i; float m=1.0;
for(i=1;i<=5;i++) m/=i;
则程序段功能是 。
三、程序运行题(共6题,每小题3分,共18分)
1、以下程序的运行结果是 。
#include<stdio.h>
void main()
{ int x=8,y=6,t;
while(x-->++y) t=x;y=x;y=t;
printf("%d,%d
",x,y); }
2、以下程序的运行结果是 。
#include<stdio.h>
void main()
{ char ch;
while((ch=getchar())!=’E’)
if(ch>=’A’&&ch<=’Z’) putchar(ch-’A’+’a’); }原创精品资源学科网独家享有版权,侵权必究!
从键盘输入abA2DC5UEFD<回车>
3、 以下程序的运行结果是 。
#include<stdio.h>
void main()
{ int x;
for(x=1;x<=20;x++)
if(x%2==0)
if(x++%3==0) printf(“%d\t”,x); }
4、 以下程序的运行结果是 。
#include<stdio.h>
void main()
{ int i=6;
do{ switch(i%2)
{ case 4:i--;break;
case 3:continue; }
i=i-2; printf(“i=%d\t”,i);
}while(i>0); }
5、 以下程序的运行结果是 。
#include<stdio.h>
void main()
{ int i,j;
for(i=0;i<5;i++)
for(j=0;j<10;j++)
{ if(j==6) break;
if(i<3) continue;}
printf(“i=%d,j=%d
”,i,j); }
6、 以下程序的运行结果是 。
#include<stdio.h>
void main()
{ i int i,j,k=2;原创精品资源学科网独家享有版权,侵权必究!
for(i=1;i<=3;i++)
{ j=1;
while(j<=10)
{ if(j%3==0) k+=j;
j++;}
}
printf("%d
",k); }
四、程序填空题(共6空,每空5分,共30分)
1、求1+3+6+10+15+21+28+36+45+55的和,请填空。
#include<stdio.h>
void main()
{ int t=2;
for(i=1;i<=55; )
sum+=i;
printf("sum=%d
",sum);
}
2、 输入一行字符,将其中的数字字符转换为数字,并计算它们的和。例如“AB12D354D9F67”,则和为442。请填空。
#include<stdio.h>
void main()
{ char ch;
while((ch=getchar())!=’
’)
if(ch>=’0’&&ch<=’9’) s=
else { sum+=s; }
sum+=s;
}
3、 百鸡问题,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、母、雏各几何?原创精品资源学科网独家享有版权,侵权必究!
#include<stdio.h>
void main()
{ int i,j;
for(i=0;i<20;i++)
for(j=0;j<33;j++)
if( )
printf(“%5d%5d%5d
”,i,j,100-i-j); }
五、程序改错题(共20分)
1、输出200以内的所有素数,10个为一行。现有2处错误,请在找出错误语句,并写出完整的正确语句。(找出错误2分,改正错误3分)
L1 #include<stdio.h>
L2 void main()
L3 { int n,t,flag,count=0;
L4 for(n=1;n<200;n++)
L5 { for(t=1;t<=n/2;n++)
L6 if(n%t==0) flag=0;
L7 if(flag)
L8 { printf(“%5d”,n);
L9 count++;
L10 if(count%10==0) printf(“
”);}
L11 } }
2、输出Fbonacci数列前40项,4个为一行。现有2处错误,请在找出错误语句,并写出完整的正确语句。(找出错误2分,改正错误3分)
L1 #include<stdio.h>
L2 void main( )
L3 { int f1=1,f2=1,i;
L4 for(i=2;i<=40;i++)
L5 { printf(“%5d%5d”,f1,f2);
L6 if(i%4==0) printf(“
”);原创精品资源学科网独家享有版权,侵权必究!
L7 f1=f1+f2;
L8 f2=f2+f1;
L9 } }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$