C语言第五章循环习题

更新时间:2024-06-01 22:07:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第五章 循环控制

5.1选择题

【题5.1】设程序段 int k=10; while(k=0)k=k-1; 则下面描述中正确的是____.

A)while循环执行10次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次

【题5.2】设有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; printf(”%d”,s); 则____.

A)运行程序段后输出0 B)运行程序段后输出l C)程序段中的控制表达式是非法的 D)程序段执行无限次

【题5.4】下面程序段的运行结果是___. a=1;b=2;c=2;

while(a

A)1,2,2 B)2,1,0 C)1,2,1 D)2,1,1

【题5.5】下面程序段的运行结果是___. x=y=0;

while(x<15) y++,x+=++y; printf(”%d,%d”,y,x); A)20,7 B)6,12 C)20,8 D)8,20

【题5.6】下面程序段的运行结果是___. int n=0;

while(n++<=2); printf(”%d”,n); A)2 B)3 C)4 D)有语法错

【题5.8】下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。 #include main()

{ int a,b,t;

scanf(“%d%d”,&a,&b); while([1]) { if(a>b)

{t=a;a=b;b=t;} printf(“%d,%d\\n”,a,b);

scanf(“%d%d”,&a,&b); } } [1]

A)!a=b B)a!=b C)a==b D)a=b

【题5.9】下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。

#include main()

{ int m=0,n=0; char c;

while(([1])!=‘\n‘)

{ if(c>=’A’&&c<=’Z’ )m++; if(c>=’a’&& c<=’z’) n++; }

printf(”%d\\n”,m

[1] A)getchar(c) B)getchar( ) C)c=getchar( ) D)scanf(“%c”,c) [2]A)n:m B)m:n C)m:m D)n:n

[题5.11] 下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。 #include main()

{int a,max=0; scanf(“%d”,&a); while([1])

{if(max

printf(“%d”,max); }

[1] A)a==0 B)a C)!a==1 D) !a

[题5.12] 下面程序的运行结果是____. #include main()

{int num=0; while(num<=2) {num++;

printf(”%d\n”,num);

} }

A)1 B)1 C) 1 D) 1 2 2 2 3 3 4

[题5.13]若运行以下程序时,从键盘输入2473 (车),则下面程序的运行结果是——。 #include main() {int c;

while((c=getchar())!=’\\n’) switch(c-‘2’)

{case 0:

case 1:putchar(c+4); case 2:putchar(c+4);break; case 3:putchar(c+3); default:putchar(c+2);break; }

}

A)668977 B)668966 C)66778777 D)6688766

表示回

[题5.14]C语言中while和do—while循环的主要区别是___。 A)do—while的循环体至少无条件执行一次

B)while的循环控制条件比do—while的循环控制条件严格 C)do—while允许从外部转到循环体内 D)do—while的循环体不能是复合语句

[题5.15] 以下能正确计算1×2×3×?×10的程序段是____. A)do {i=1;s=1; s=s*i; i++; }while (i<=10); B) do{i=1;s=0; s=s*i; i++; }while (i<=10); C) i=1;s=1; do{ s=s*i; i++; }while (i<=10); D) i=1;s=0; do{ s=s*i; i++; }while (i<=10);

[题5.16]以下程宇段____. x=-1;

do{x=x*x;}while(!x);

A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误

[题5.17]以下描述中正确的是____。

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

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

C)在do—while循环体中,一定要有能使while后面表达式的值变为零(”假”)的操作

D)do—while循环中,根据情况可以省略while

[题5.18]若有如下语句 int x=3;

do{printf(”%d\n”,x-=2);}while(!(- -x)); 则上面程序段___。

A)输出的是1 B)输出的是1和-2 C)输出的是3和0 D)是死循环

[题5.19]下面程序的功能是计算正整数2345的各位数字平方和,请选择填空. #include main()

{int n,sum=0; n=2345; do{sum=sum+[1]; n=[2]; }while(n); printf(“sum=%d”,sum); }

[1] A)n B)( n)*( n) C)n/10 D)( n/10)*( n/10)

[2] A)n/1000 B)n/100 C) n/10 D)n0

[题5.21]等比数列的第一项a=1,公比q=2, 下面程序的功能是求满足前n项和小于100的最大n,请选择填空。 #include main()

{int a,q,n,sum; a=1;q=2;n=sum=0; do{[1];

++n;a*=q; }while(sum<100); [2];

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

[1]A)sum++ B)sum+=n C)sum*=n D)a+=sum [2]A)n=n-2 B)n=n C)n++ D)n-=1

[题5.25] 下面程序的运行结果是___. #include main()

{int a=1,b=10; do

{b-=a; a++; }while(b- - <0); printf(“a=%d,b=%d\\n”,a,b); }

A)a=3,b=11 B)a=2,b=8 C)a=1,b=-1 D)a=4,b=9

[题5.26] 下面有关for循环的正确描述是___. A)for循环只能用于循环次数已经确定的情况 B)for循环是先执行循环体语句,后判断表达式 C)在for循环中,不能用break语句跳出循环体

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

[题5.27]对for(表达式1; ;表达式3)可理解为___。 A)for(表达式1;0;表达式3) B)for(表达式1;1;表达式3) C)for(表达式1;表达式1;表达式3) D)for(表达式1;表达式3;表达式3)

[题5,28] 若i为整型变量,则以下循环执行次数是___. for(i=2;i==0;) printf(”%d”,i- -); A)无限次 B)0次 C)1次 D)2次

[题5.29] 以下for循环的执行次数是___。 for(x=0,y=0;(y=123)&&(x<4);x++);

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

[题5.31]下面程序段的运行结果是___。 for(y=l;y<10;) y=((x=3*y,x+1),x-1); printf(“x=%d,y=%d”,x,y);

A)x=27,y=27 B) x=12,y=13 C) x=15,y=14 D) x=y=27

[题5.34] 执行语句for(i=1;i++<4; );后变量i的值

[题5.51]下面程序的运行结果是___. #include main()

{ int k=0;char c=’A’; do

{ switch (c++)

{case ‘A’:k++;break; case ‘B’:k--; case ‘C’:k+=2;break; case ‘D’:k=k%2;continue; case ‘E’:k=k*10;break;

default:k=k/3; }

k++; }

while(c<’G’);

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

A) k=3 B)k=4 C)k=2 D)k=0

[题5.54]下面程序的运行结果是 #include

main() {int i,j,x=0; for(i=0;i<2;i++) {x++;

for(j=0;j<=3;j++) {if(j%2)contine; x++; } x++; }

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

A)x=4 B) x=8 C) x=6 D) x=12

[题5.56]下面程序的运行结果是 main() { int i,j,a=0; for(i=0;i<2;i++) { for(j=0;j<4;j++) {if (j%2) break; a++; }

a++; }

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

A)4 B) 5 C) 6 D)7

5.2 填 空 题

[题5.57]下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填空。 int n=0,c; c=getchar(); while([1]) {if([2]) n++; c=getchar(); }

[1] c!=’\\n’ [2] c>=’1’ && c<=’9’

[题5.59]有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?请填空。 #include main( ) {int day,x1,x2;

day=0;x1=1020;

while([1]) {x2=[[2];x1=x2;day++;} printf(“day=%d\\n”,day); }

[1] x1 [2]x1/2-2

[题5.60]下面程序的功能是用“辗转相除法”求两个正整数的最大公约数。请填空。 #include main() { int r,m,n;

scanf(”%d%d”,&m,&n); if(m

while(r) {m=n,n=r,r=[2];} printf(“%d\n”,n); [1]r=m,m=n,n=r [2]m%n

[题5.62] 下面程序的运行结果是____. #include main()

{ int a,s,n,count; a=2;s=0;n=1;count=1;

while(count<=7) {n=n*a;s=s+n;++count;} printf(“s=%d”,s); } S=254

[题5.63]当运行以下程序时,从键盘键入China?(代表回车),则下面程序的运行结果是____. #include main()

{ int v1=0,v2=0;char ch; while ((ch=getchar())!=’#’) switch(ch) {case ‘a’; case ‘h’; default:v1++; case’o’:v2++; }

printf(“%d,%d\\n”,v1,v2); } 5,5

[题5.64] 执行下面程序段后,k值是____.

k=1;n=263;

do{k*=n;n/=10;}while(n); 36

[题5.68] 下面程序的功能是用do—while语句求1至1000之间满足“用3除余2;用5除余3,用7除余2”的数,且一行只打印五个数。请填空。 #include main()

{ int i=1;j=0; do{if([1])

{printf(“M”,i); j=j+1;

if([2]) printf(“\\n”); } i=i+1;

}while(i<1000); }

[1]i%3= =2&&i%5= =3&&i%7= =2 [2]j%5==0

[题5.72]当运行以下程序时,从键盘输入1 2 3 4 5 -1(表示回车),

则下面程序的运行结果是___. #include main()

{int k=0,n;

do {scanf(”%d”,&n);k+=n;}while(n!=-1); printf(“k=%d n=%d\\n”,k,n); } k=14 n=-1

[题5.77] 鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空 for(x=1;x<=29;x++) {y=30-x;

if([1]) printf(“%d,%d\\n”,x,y); }

[1]2*x+4*y==90

[题5.79] for循环用以下形式表示:

for(表达式1;表达式2;表达式3) 循环体语句

则执行语句for(i=0;i<3;i++) printf(”*”);时,表达式1执行[1]次,表达式3执行[2]次。 [1]1 [2] 3

[题5.80] 下面程序的功能是计算1-3+5-7+?-99+101的值,请填空。

#include main()

{int i,t=1,s=0; for(i=1;i<=101;i+=2) {[1];s=s+t;[2];} printf(“%d\\n”,s); }

[1]t=t*i [2]t=-t/i

[题5.93] 下面程序的运行结果是____. #include main() {int i,j;

for(i=0;i<=3;i++) { for(j=0;j<=5;j++)

{if(i==0||j==0||i==3||j==5)printf(“*”); else printf(“”); }

printf(“\\n”);

} }

* * * * * * * * * * * * * * * *

[题5.94] 下面程序的运行结果是____. #include main() {int i,j;

for(i=4;i>=1;i- -)

{for(j=1;j<=i;j++)putchar(‘#’); for(j=1;j<=4-i;j++) putchar(‘*’); putchar(‘\\n’); } # # # # } # # # * # # * * # * * *

[题5.98]下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5。请填空。

#include main()

{int i,s,k,count=0; for(i=100;i<=1000;i++) { s=0; k=i;

while(【1】){s=s+k;k=【2】;} if(s!=5) 【3】; else count++; }

printf(“%d”,count);

} [1] k [2] k/10 [3] continue

[题5.99]下面程序的功能是从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印”notexist”。请填空。 #include void main() { int i,a;

for(i=1;i<=10;i++) {scanf(”%d”,&a);

if(a%7==0) {printf(”%d”,a);【1】; }

本文来源:https://www.bwwdw.com/article/abn6.html

Top