内容正文:
《编程语言基础——C语言》高等教育出版社(第五版)
第四章 循环结构程序设计 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共25小题,每题2分,共50分)
1.执行下列程序int k=10;while(k==0)k=k-1;则下面描述正确的是( )
A.while循环执行了10次 B.循环式无限循环
C.循环体语句一次也不执行 D.循环体语句执行一次
2.执行下列程序int k=3;while(k==0)k=k-1;则下面描述正确的是( )
A.while循环执行10次 B.循环是无限循环
C.循环体语句一次也不执行 D.循环体语句执行一次
3.有以下程序段,则此处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
4.当执行以下程序段时,选择( )
x=-1;
do{x=x*x;}while(!x);
A.循环体将执行一次 B.循环体将执行两次
C.循环体将执行无限次 D.系统将提示有语法错误
5.若i是int型变量,以下循环体执行的次数是( )
for(i=2;i==0;)
printf("%d
",i--);
A.0 B.1 C.2 D.无限次
6.对for(表达式1;;表达3)可理解为( )
A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3)
C.for(表达式1;表达式1;表达式3) D.for(表达式1;表达式3;表达式3)
7.下列关于循环结构描述正确的是( )
A.for循环中的三个表达式都不能缺少
B.for循环可以用continue语句跳出循环体
C.for循环只能用于循环次数已经确定的情况
D.for循环的循环体可以包含多条语句,但必须用花括号括起来
8.执行语句:for(i=1;i++<4;)后;变量i的值是( )
A.3 B.4 C.5 D.不确定
9.下面关于for循环的正确描述是( )
A.for循环汉子难呢过用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须花括号括起来
10.若i为整型变量,则以下循环执行的次数是( )
for(i=2;i=0;) printf(“%d”,i--);
A.无限次 B.0次 C.1次 D.2次
11. 以下for循环的语句执行的次数是( )
for(x=0,y=0;(y=123)&&(x<4);x++);
A. 是无限循环 B.循环次数不定
C.4次 D.3次
12.以下不是无限循环的语句是( )
A.for(y=0,x=1;x>++y;x=i++) i=x;
B.for(;;x++=i);
C.while(1){x++;}
D.for(i=10;;i--) sum+=i;
13. 以下程序的输出结果是( )
# include <stdio.h>
main( ){
int k=0,m=0;
int i,j;
for(i=0;i<2;i++)
{for(j=0;j<3;j++)
k++; k-=j;}
m=i+j;
printf("k=%d,m=%d”,k,m);}
A.k=0,m=3 B.k=0,m=5
C.k=1,m=3 D.k=1,m=5
14.在以下程序中,判断i>j共执行的次数是( )
# include<stdio.h>
main(){
int i=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{ printf("%d",s);
break;}
s+=i;}}
A.4 B.7 C.5 D.6
15.以下程序的输出结果是 ( )
main()
int y=10;
for(;y>0;y--)
if(y%3==0)
printf("%d”,--y);
continue;}
A.741 B.852 C.963 D.8754321
16.以下程序的输出结果是 ( )
main(){
int i;
for(i=1;i<6;i++)
{ if(i%2){ printf("# ”);continue;}
printf(”* ”);
A. # * # * # B. # # # # # C.* * * * * D.* # * # *
17.若int x=1;,则while(!x) x=x+10;语句中循环体的执行次数为( )
A.1 B.0 C.2 D.10
18. 以下程序段的运行结果是( )
int x=23;
do{printf("%d",x--);
}while(!x);
A.输出321 B.输出23 C.不输出任何内容 D.死循环
19. 已知int m=1,n=0;执行下面语句后n的值是( )
while(m){
switch(m){
case 1:m+=1;n++;break;
case 2:m+=2;break;
default:m--;n++;break;
}}
A.1 B.2 C.3 D.死循环
20.写出以下程序的运行结果( )
int y=10;
do{
y--;
}while(--y);
printf("%d
",y--);
A.0 B.-1 C.1 D.2
21. 下面程序的输出结果是( )
main(){
int n=4;
while(n--)printf("%d",--n);
}
A.20 B.31 c.321 D.210
22.下列程序段的输出结果是( )
x=3;
do{y=x--;
if(!y) {printf("*");continue;}
printf("#");}while(x=2);
A.## B.##* C.死循环 D.输出错误信息
23. 关于“while(条件表达式)循环体”,以下叙述正确的是( )
A.循环体的执行次数总是比条件表达式的执行次数多一次
B.条件表达式的执行次数与循环体的执行次数一样
C.条件表达式的执行次数总是比循环体的执行次数多一次
D.条件表达式的执行次数与循环体的执行次数无关
24.以下程序段的运行结果是( )
int x=3;
do{printf("%2d",x-=2);
}while(!(--x));
A.2-1 B.1-3 C.1-2 D.0-3
25.执行下列程序段后,结果为( )
i=6;
while(i<5){
i++;
printf("GOOD");
}
printf("that's the end");
A.GOOD that's the end B.GOOD
C.that's the end GOOD D.that's the end
二、简答题(本题共5小题,每题6分,共30分)
26. 以下程序的输出结果是【 】。
main() {
int i = 0, j = 4;
while (i < j)
{ i++;
if (i % 3 != 0) continue;
j--;}
printf("%d,%d
", i, j);
}
27. 以下程序的运行结果是【 】。
main() {
int i;
for (i = 1; i < 10; i += 2) {
if (i % 3 == 0) printf("*");
Else continue;
printf("#"); }
}
28. 以下程序的运行结果是【 】。
main() {
int i = 0, s = 0;
do {if (i % 2) {i++;continue;}
i++;s += i;
} while (i < 7);
printf("%d
", s);
}
29. 以下程序的运行结果是【 】。
main() {
int k = 5, n = 0;
while (k > 0)
{switch (k)
{default:break;
case 1:n += k;
case 2:
case 3:n += k;
}
k--;
}
printf("%d
", n);
}
30. 以下程序的运行结果是【 】。
main() {
int i;
for (i = 0; i < 3; i++)
switch (i) {
case 1:
printf("%d", i);
case 2:
printf("%d", i);
break;
default:
printf("%d", i);
} }
三、案例分析题(本题共2小题,共20分)
31.从键盘上输入11个字符,判断其是否是合法的手机号(首位必须是数字1,其他十位必须为数字字符)。
32.《孙子算经》中记载“今有雉(鸡)兔同笼,上有三十五头,有九十四足。问雉兔各几何。”请编写程序帮助图中的四位小朋友解决经典“鸡兔同笼”问题,用户输入空格间隔的两个整数,第一个代表头数,第二个代表脚数,请计算鸡和兔的数量,如果无解请输出“Error”。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
《编程语言基础——C语言》高等教育出版社(第五版)
第四章 循环结构程序设计 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共25小题,每题2分,共50分)
1.执行下列程序int k=10;while(k==0)k=k-1;则下面描述正确的是( )
A.while循环执行了10次 B.循环式无限循环
C.循环体语句一次也不执行 D.循环体语句执行一次
答案:C
2.执行下列程序int k=3;while(k==0)k=k-1;则下面描述正确的是( )
A.while循环执行10次 B.循环是无限循环
C.循环体语句一次也不执行 D.循环体语句执行一次
答案:C
3.有以下程序段,则此处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
答案:D
4.当执行以下程序段时,选择( )
x=-1;
do{x=x*x;}while(!x);
A.循环体将执行一次 B.循环体将执行两次
C.循环体将执行无限次 D.系统将提示有语法错误
答案: A
5.若i是int型变量,以下循环体执行的次数是( )
for(i=2;i==0;)
printf("%d
",i--);
A.0 B.1 C.2 D.无限次
答案: A
6.对for(表达式1;;表达3)可理解为( )
A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3)
C.for(表达式1;表达式1;表达式3) D.for(表达式1;表达式3;表达式3)
答案: B
7.下列关于循环结构描述正确的是( )
A.for循环中的三个表达式都不能缺少
B.for循环可以用continue语句跳出循环体
C.for循环只能用于循环次数已经确定的情况
D.for循环的循环体可以包含多条语句,但必须用花括号括起来
答案: D
8.执行语句:for(i=1;i++<4;)后;变量i的值是( )
A.3 B.4 C.5 D.不确定
答案: C
9.下面关于for循环的正确描述是( )
A.for循环汉子难呢过用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须花括号括起来
答案:D
10.若i为整型变量,则以下循环执行的次数是( )
for(i=2;i=0;) printf(“%d”,i--);
A.无限次 B.0次 C.1次 D.2次
答案:B
11. 以下for循环的语句执行的次数是( )
for(x=0,y=0;(y=123)&&(x<4);x++);
A. 是无限循环 B.循环次数不定
C.4次 D.3次
答案: C
12.以下不是无限循环的语句是( )
A.for(y=0,x=1;x>++y;x=i++) i=x;
B.for(;;x++=i);
C.while(1){x++;}
D.for(i=10;;i--) sum+=i;
答案: A
13. 以下程序的输出结果是( )
# include <stdio.h>
main( ){
int k=0,m=0;
int i,j;
for(i=0;i<2;i++)
{for(j=0;j<3;j++)
k++; k-=j;}
m=i+j;
printf("k=%d,m=%d”,k,m);}
A.k=0,m=3 B.k=0,m=5
C.k=1,m=3 D.k=1,m=5
答案: B
14.在以下程序中,判断i>j共执行的次数是( )
# include<stdio.h>
main(){
int i=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{ printf("%d",s);
break;}
s+=i;}}
A.4 B.7 C.5 D.6
答案:D
15.以下程序的输出结果是 ( )
main()
int y=10;
for(;y>0;y--)
if(y%3==0)
printf("%d”,--y);
continue;}
A.741 B.852 C.963 D.8754321
答案: B
16.以下程序的输出结果是 ( )
main(){
int i;
for(i=1;i<6;i++)
{ if(i%2){ printf("# ”);continue;}
printf(”* ”);
A. # * # * # B. # # # # # C.* * * * * D.* # * # *
答案:A
17.若int x=1;,则while(!x) x=x+10;语句中循环体的执行次数为( )
A.1 B.0 C.2 D.10
答案:B
18. 以下程序段的运行结果是( )
int x=23;
do{printf("%d",x--);
}while(!x);
A.输出321 B.输出23 C.不输出任何内容 D.死循环
答案: B
19. 已知int m=1,n=0;执行下面语句后n的值是( )
while(m){
switch(m){
case 1:m+=1;n++;break;
case 2:m+=2;break;
default:m--;n++;break;
}}
A.1 B.2 C.3 D.死循环
答案:D
20.写出以下程序的运行结果( )
int y=10;
do{
y--;
}while(--y);
printf("%d
",y--);
A.0 B.-1 C.1 D.2
答案: A
21. 下面程序的输出结果是( )
main(){
int n=4;
while(n--)printf("%d",--n);
}
A.20 B.31 c.321 D.210
答案:A
22.下列程序段的输出结果是( )
x=3;
do{y=x--;
if(!y) {printf("*");continue;}
printf("#");}while(x=2);
A.## B.##* C.死循环 D.输出错误信息
答案:C
23. 关于“while(条件表达式)循环体”,以下叙述正确的是( )
A.循环体的执行次数总是比条件表达式的执行次数多一次
B.条件表达式的执行次数与循环体的执行次数一样
C.条件表达式的执行次数总是比循环体的执行次数多一次
D.条件表达式的执行次数与循环体的执行次数无关
答案: C
24.以下程序段的运行结果是( )
int x=3;
do{printf("%2d",x-=2);
}while(!(--x));
A.2-1 B.1-3 C.1-2 D.0-3
答案: C
25.执行下列程序段后,结果为( )
i=6;
while(i<5){
i++;
printf("GOOD");
}
printf("that's the end");
A.GOOD that's the end B.GOOD
C.that's the end GOOD D.that's the end
答案: D
二、简答题(本题共5小题,每题6分,共30分)
26. 以下程序的输出结果是【 】。
main() {
int i = 0, j = 4;
while (i < j)
{ i++;
if (i % 3 != 0) continue;
j--;}
printf("%d,%d
", i, j);
}
答案:3,3
27. 以下程序的运行结果是【 】。
main() {
int i;
for (i = 1; i < 10; i += 2) {
if (i % 3 == 0) printf("*");
Else continue;
printf("#"); }
}
答案:*#*#
28. 以下程序的运行结果是【 】。
main() {
int i = 0, s = 0;
do {if (i % 2) {i++;continue;}
i++;s += i;
} while (i < 7);
printf("%d
", s);
}
答案:16
29. 以下程序的运行结果是【 】。
main() {
int k = 5, n = 0;
while (k > 0)
{switch (k)
{default:break;
case 1:n += k;
case 2:
case 3:n += k;
}
k--;
}
printf("%d
", n);
}
答案:7
30. 以下程序的运行结果是【 】。
main() {
int i;
for (i = 0; i < 3; i++)
switch (i) {
case 1:
printf("%d", i);
case 2:
printf("%d", i);
break;
default:
printf("%d", i);
} }
答案:0112
三、案例分析题(本题共2小题,共20分)
31.从键盘上输入11个字符,判断其是否是合法的手机号(首位必须是数字1,其他十位必须为数字字符)。
【参考程序】#include<stdio.h>
main(){
char ch;
ch=getchar();
int i,t=1;
if(ch!='1') t=0;
for(i=1;i<=10;i++)
{
ch=getchar();
if(ch>='9'||ch<='0')
t=0;
}
if(t==1) puts("合法");
else puts("不合法");
}
32.《孙子算经》中记载“今有雉(鸡)兔同笼,上有三十五头,有九十四足。问雉兔各几何。”请编写程序帮助图中的四位小朋友解决经典“鸡兔同笼”问题,用户输入空格间隔的两个整数,第一个代表头数,第二个代表脚数,请计算鸡和兔的数量,如果无解请输出“Error”。
【参考程序】
#include <stdio.h>
main() {
int tou, jiao, ji, tu, t = 1;
scanf("%d%d", &tou, &jiao);
for (ji = 0; ji <= tou; ji++)
for (tu = 0; tu <= tou; tu++)
if (ji + tu == tou && ji * 2 + tu * 4 == jiao) {
printf("鸡:%d,兔:%d", ji, tu);
t = 0;
}
if (t == 1)
puts("Error");
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$