c语言第六章 循环结构程序设计(习题册答案) 下载本文

第六章 循环结构程序设计

基础练习(A)

一、选择题

1、C语言中while和do-while循环的主要区别是(A)。

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

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

2、以下描述中正确的是(C)。

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

B) do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作

D) do-while循环中,根据情况可以省略while 3、设有程序段 int k=10; while(k) k=k-1; 则下面描述中正确的是( A )。 A)while循环执行10次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次 4、下列循环语句中有语法错误的是( D )。

A) while(x=y) 5; B) while(0) ;

C) do 2;while(x==b); D) do x++ while(x==10);

5、已知int i=1; 执行语句while (i++<4) ;后,变量i的值为( C )。

A) 3 B) 4 C) 5 D) 6 6、语句while(!E);中的表达式!E等价于( A ) 。 A)E==0 B)E!=1 C)E!=0 D) E==1 7、下面程序段的运行结果是( A )。 a=1; b=2; c=2; while(a 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 9、以下能正确计算1×2×3×?×10的程序段是( C )。

A)do{i=1; s=1; B)do{i=1; s=0; s=s*i; s=s*i; i++; i++; }while(i<=10); }while(i<=10); C)i=1; s=1; D)i=1; s=0; do{s=s*i; do{s=s*i; i++; i++; }while(i<=10); }while(i<=10); 10、下面程序的运行结果是( D )。 #include main() { int y=10; do{ y--; }while(--y); printf(“%d\\n”,y--); } A)-1 B)1 C)8 D)0 11、已知int i=1,j=0;执行下面语句后j的值是( D )。

while(i) switch(i)

{ case 1: i+=1;j++;break; case 2: i+=2;j++;break; case 3: i+=3;j++;break; default: i--;j++;break; }

A) 1 B) 2 C) 3 D) 死循环

12、若运行以下程序时,从键盘输入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; } printf(“\\n”); } A)668977 B)668966 C)66778777 D)6688766 二、填空题

1、执行下面程序段后,k值是 36 。 k=1; n=263; do{ k*=n; n/=10; }while(n); 2、下面程序的运行结果是 s=254 。 #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);

A )。 }

3、下面程序段的运行结果是 * * 。 x=2; do{ printf(“*”); x--; }while(!x==0);

4、运行以下程序时,从键盘键入China#代表回车),则下面程序的运行结果

是 5,5 。

#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); } 三、编程:

1、 编程求1*3*5*7*9的值

2、编写程序计算下列算式的值:

直到某一项A<=0.000001时为止。输出最后C的值。

3、从键盘输入的字符中统计数字字符的个数,用换行符结束循环。 1、参考答案: main() { int i;

long p=1; do { p=p*i; i=i+2;

} while (i<=9);

printf(“1*3*5*9=%ld\\n”,t); }

2、参考答案: #define E 0.000001 main()

{ float x,y=1,s=0;

printf(\; scanf(\; while(1/y>E) { s=s+1/y; y=y*x; }

printf(\; }

3、参考答案:

main() { int n=0; char c; c=getchar(); while(c!=?\\n? )

{ if(c>=?0?&&c<=?9?) n++; c=getchar(); }

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

能力提高(B)

一、选择填空题

1、下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个

数n,并输出m、n中的较大者,请选择填空。 #include main() {

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

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

printf(“%d\\n”,m

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

2、下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。 #include main() { int a,max=0; scanf(“%d”,&a); while( B ) { if(max

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

3、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。 #include main() { int n,sum=0; n=2345; do{ sum=sum+ B ; n= C ; }while(n); printf(“sum=%d”,sum);