文档库 最新最全的文档下载
当前位置:文档库 › C语言程序设计习题集第4章 循环结构(答案)

C语言程序设计习题集第4章 循环结构(答案)

C语言程序设计习题集第4章 循环结构(答案)
C语言程序设计习题集第4章 循环结构(答案)

第4章循环结构

一、选择题

1、有以下程序段

int k=0;

while(k=1)k++;

while 循环执行的次数是( A)

A) 无限次B) 有语法错,不能执行

C) 一次也不执行D) 执行1次

2、t为int类型,进入下面的循环之前,t的值为0

while( t=1)

{ …… }

则以下叙述中正确的是( B)

A) 循环控制表达式的值为0

B) 循环控制表达式的值为1

C) 循环控制表达式不合法

D) 以上说法都不对

3、在C程序中,与while(m)中表达式m完全等价的是(B )

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

4、有以下程序,程序运行后的输出结果是(C )。

main()

{int i=1,sum=0;

while(i<=4)

{

sum=sum+i;

i=i+1;

}

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

A)4 B)5 C)10 D)死循环

5、有以下程序,程序运行后的输出结果是(D )。

main()

{ int i=1,sum=0;

while(i<=4)

sum=sum+i;

i=i+1;

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

}

A)4 B)5 C)10 D)死循环

6、有如下程序

main(){

int n=9;

while(n>6){n--;printf(“%d”,n);}

}

该程序段的输出结果是(B)

A) 987 B) 876 C) 8765 D) 9876

7、以下程序的输出结果是( B )

main()

{ int num= 0;

while(num<=2)

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

}

A) 1 B) 1 C)1 D) l

2 2 2

3 3

4

8、有以下程序,若运行时输入3.6 2.4<回车>,则输出的结果是( B)。main()

{float x,y,z;

scanf(“%f%f”,&x,&y);

z=x/y;

while(1){

if(fabs(z)>1.0)

{

x=y;

y=z;

z=x/y;}

else

break;}

printf(“%f\n”,y);}

A)1.500000 B)1.600000 C)2.000000 D)2.400000

9、执行以下程序段时

x=-1;

do

{ x=x*x; }

while(! x);

则下面描述正确的是(A )

A) 循环体将执行一次B) 循环体将执行两次

C) 循环体将执行无限次D) 系统将提示有语法错误

10、有以下程序段其输出结果是(C )

int x=3;

do

{ printf("%d",x-=2); }

while (!(--x));

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

11、有如下程序

main(){

int x=23;

do

{

printf(“%d”,x);

x--;

}while(!x);

}

该程序的执行结果是(B )

A) 321 B) 23 C) 不输出任何内容D) 陷入死循环

12、有以下程序段

int n=0,p;

do{scanf(“%d”,&p);n++;}while(p!=12345 &&n<3);

此处do—while循环的结束条件是( D)

A) P的值不等于12345并且n的值小于3

B) P的值等于12345并且n的值大于等于3

C) P的值不等于12345或者n的值小于3

D) P的值等于12345或者n的值大于等于3

13、以下不构成无限循环的语句或语句组是(A)

A) n=0;

do {++n;}while(n<0);

B) n=0;

while(1){n++;}

C) n=10;

while(n);{n--;}

D) for(n=0,i=1; ;i++)n+=i;

14、若i为整型变量,则以下循环执行的次数是(B)

for(i=2;i= =0;) printf(“%d”,i--);

A)无限次B)0次C)1次D)2次

15、执行语句for(i=1;i++<4;)后,变量i的值是(C)

A) 3 B) 4 C) 5 D) 不定

16、有以下程序

main()

{

int y=9 ;

for( ; y>0 ; y--)

if(y%3==0 ) printf("%d" , --y) ;

}

程序的运行结果是(C)

A) 741 B)963 C)852 D)875421

17、以下程序执行后sum的值是( C)

A)15 B)14 C) 不确定D)0

main()

{ int i , sum;

for(i=1;i<6;i++) sum+=i;

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

}

18、有如下程序

{ int i,sum=0;

for(i=1;i<=3;sum++) sum+=i;

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

}

该程序的执行结果是(C)

A) 6 B) 3 C) 死循环D) 0

19、执行语句for(i=3;i>0;i--);i--;后,变量i的值是(C )

A)0 B)10 C)-1 D)1

20、执行下面程序片段的结果是(A )。

int x;

for(x=3;x<6;x++)

printf((x%2)?(“**%d”):(”##%d\n”),x);

A)**3##4 B)##3

**5 **4##5

C)##3**4 D)**3##4

**5 ##5

21、有以下程序,执行后输出的结果是(A )。

main()

{ int i;

for(i=0;i<3;i++)

switch(i)

{ case 1: printf("%d",i);

case 2: printf("%d",i);

default: printf("%d",i);

}

}

A) 011122 B) 012 C) 012020 D) 120

22、有以下程序,程序运行后的输出结果是(C )。

main()

{ int k=4,n=0;

for( ; n

{ n++;

if(n%3!=0) continue;

k--;

}

printf("%d,%d\n",k,n);

}

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

23、设变量已正确定义,则以下能正确计算f = n!的程序段是(D )

A) f=0 ;

for(i=1;i<=n;i++) f*=i;

B) f=1;

for(i=1;i

for(i=n;i>1;i++) f*=i;

D) f=1;

for(i=n;i>=2;i--) f*=i;

24、执行下面程序片段的结果是(B )。main()

{int a,b;

for(a=1,b=1;a<=100;a++)

{

if(b>=20)

break;

if(b%3= =1)

{

b+=3;continue;

}

b-=5;

}

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

}

A)7 B)8 C)9 D)10

25、以下程序的输出结果是( B )。main()

{ int i=0,a=0;

while(i<20)

{ for(;;)

{ if((i%10)==0) break;

else i--;

}

i+=11; a+=i;

}

printf("%d\n",a);

}

A) 21 B) 32 C) 33 D) 11

26、以下程序的输出结果是(A )

main()

{ int i,j,x=0;

for(i=1;i<2;i++)

{ x++;

for(j=0;j<=3;j++ )

{ if(j%2) continue;

x++;}

x++;}

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

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

27、有以下程序

main()

{

int i,j;

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

{

for(j=1;j<=2;j++)

printf("%d",i+j);

printf("\n ") ;

}

}

程序的运行结果是(D)

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

3 4 5 5 4 3 3 4 3 4

4 5 2 3

28、有以下程序

main()

{ int i=5;

do

{

if(i%3==1)

if(i%5==2)

{ printf("*%d",i); break; }

i++;

} while(i!=0);

printf("\n");

}

程序的运行结果是(A)

A) *7 B)*3*5 C)*5 D)*2*6

29、以下程序的结果是(A)

main()

{ int n;

for(n=1; ; )

{if(++n%2==0) continue;

if(++n%3==0) break; }

printf("n=%d",n);

}

A)n=6 B)n=5 C)n=4 D)死循环

30、以下叙述中正确的是(C)

A)break语句只能用于switch语句题中

B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环

C)break 语句只能用在循环体内和switch语句体内

D)在循环体内使用break语句和continue语句的作用相同

二、程序阅读题(共10题)

1、以下程序运行后的输出结果是52 。

main()

{

int i=10, j=0;

do

{ j=j+i;

i--;

}while(i>2);

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

}

2、设有以下程序:

main()

{

int n1,n2;

scanf(“%d”,&n2);

while(n2!=0)

{

n1=n2%10;

n2=n2/10;

printf(“%d”,n1);

}

}

程序运行后,如果从键盘上输入1298;则输出结果为8921 。

3、以下程序的输出结果是5。

main()

{int s,i;

for(s=0,i=1;i<3;i++,s+=i);

printf("%d\n",s);

}

4、阅读下面程序,程序的结果是2,1,0 。

main()

{int i=7;

for(i=2;i>0;i--)

printf(”%d,”,i);

printf(”%d”,i);}

5、阅读下面程序,程序的结果是14,4。

main()

{ int i,j,m=0;

for(i=2;i<=10;i+=4)

for(j=3;j<=4;j++)

{m++;i++;}

printf("%d,%d",i,m);}

6、阅读下面程序,程序的结果是1978。

main()

long s=0,t=0;

for(j=0;j

t=t*10+a;

s=t;

for(j=1;j

{t=t/10;

s=s-t;}

printf(”%d”,s);

}

7、以下程序运行后的输出结果是0918273645

main()

{

char c1,c2;

for(c1='0',c2='9';c1

printf("%c%c",c1,c2);

printf("\n");

}

8、以下程序的输出结果是 5 。

main()

{

int s,i;

for(s=0,i=1;i<3;i++,s+=i);

printf("%d\n",s);

}

9、执行以下程序后,输出'#'号的个数是 6 。

main()

{ int i,j;

for(i=1; i<5; i++)

for(j=2; j<=i; j++) putchar('#');

}

10、以下程序的输出结果是x=4

main()

{ int i,j,x=0;

for(i=1;i<2;i++)

{ x++;

for(j=0;j<=3;j++ )

{ if(j%2) continue;

x++;}

x++;}

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

三、程序填空题

1、以下程序的功能是计算:m=1-2+3-4+…+9-10,并输出结果。请填空。main( )

scanf(“%d”,&n);

for(i=1; i<=n; i++)

{ m+=i*f;

f= -f ;

}

printf(“m=%d”,m)

}

2、以下程序的功能是计算s=1+1/2!+1/3 !+1/4 !+…+1/n! ,请填空。main( )

{

double s=0.0,fac=1.0; int i;

int n;

scanf(“%d”,&n);

for(i=1,i<=n;i++)

{ fac=fac * 1.0/i ;

s=s+fac;

}

printf(“s=%lf”,s);

}

3、以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

main()

{ int t=0,s=0,i;

for( i=1; i<=5; i++)

{ t=i+ t*10 ; s=s+t; }

printf("s=%d\n",s);

}

4、要使以下程序段输出10个整数,请填入一个整数。

for(i=0;i<= 18 ;printf(“%d\n”,i+=2));

5、以下函数的功能是:求x的y次方,请填空。

double fun( double x, int y)

{ int i;

double z;

for(i=1, z=x; i

return z;

}

6、以下程序的功能是根据以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)

现在请你在下面的函数中填空,完成求π的功能。

main(){

double s=0.0; long i,n;

scanf(“%ld”,&n);

for(i=1;i<=n;i++) s=s+ 1.0/(i*i) ;

printf(“%lf”,sqrt(6*s));

7、以下用来输出两整数M和N之间的所有素数(质数),请填空,使程序能正确运行。

#define M 4

#define N 30

main()

{

int i, j, k, s=0;

for(i=M; i<= N ; i++)

{ for(j=2; j< i ; j++)

if(i%j== 0 ) break;

if(j>=i)

{ printf("%5d", i);

s=s+1;

if( s%5==0 ) printf("\n");

}

}

printf("\n");}

8、以下程序实现:从键盘输入一位整数,计算其各位数字之和。比如输入整数31421,则打印结果为11。请填空。

main(){

int i,sum=0,a;

scanf("%d",&i);

while(i>0){

a= i%10 ;

sum+=a;

i= i/10 ;

}

printf("%d\n",sum);

}

9、以下程序实现:计算1~10之间(不含10)的奇数之和以及偶数之和

main()

{

int a,b,i;

a=b=0;

for(i=0;i<10;i+=2)

{

a= a+i ;

b= b+i+1 ;

}

printf("偶数为:%d,奇数和为:%d\n",a,b);

}

10、以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。

main()

int i,j;

for(i=0; i<10 ;i++) {

j=i*10+6;

if( j%3==0 ) continue;

printf(“%d ”,j);

}

}

四、编程题

1、写一个程序,程序的功能是:从键盘输入一个整数m,输出1到m(含m)能被7或11 整除的所有整数,并计算出这些数的个数。例如:如果m为50,则程序输出7、11、14、21、2

2、28、3

3、35、42、4

4、49共11个数。

2、计算100到1000间有多少个数其各位数字之和是5。

3、从键盘输入整数n,输出1+3+5+7+…前n项的和(输入的n<=10)

4、编写程序,实现如下图形

1

12

123

1234

12345

5、打印100-999以内所有满足条件的数。条件为,这个数等于其个位数,十位数,百位数立方和,如153=1*1*1+5*5*5+3*3*3

相关文档