C语言程序设计习题集第4章循环结构答案Word格式.docx
《C语言程序设计习题集第4章循环结构答案Word格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题集第4章循环结构答案Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
A)1B)1
22
33
4
8、有以下程序,若运行时输入main()
{floatx,y,z;
scanf(“%f%f”,&
x,&
y);
z=x/y;
while
(1){
if(fabs(z)>
1.0)
x=y;
y=z;
}else
break;
printf(“n%”f,y);
A)1.500000B)1.6000009、执行以下程序段时
x=-1;
do
{x=x*x;
}while(!
x);
则下面描述正确的是(A)
A)循环体将执行一次
C)循环体将执行无限次
10、有以下程序段其输出结果是intx=3;
{printf("
%d"
x-=2);
}
while(!
(--x));
A)1B)30C)1-2D)
11、有如下程序main(){intx=23;
C)1D)l
2
3.62.4<
回车>
,则输出的结果是
C)2.000000D)2.400000
B)循环体将执行两次
D)系统将提示有语法错误
(C)
死循环
(B)。
printf(“%d”,x);
x--;
}while(!
x);
}该程序的执行结果是(B)
A)321B)23C)不输出任何内容D)陷入死循环
12、有以下程序段
intn=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的值小于3D)P的值等于12345或者n的值大于等于313、以下不构成无限循环的语句或语句组是(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)3B)4C)5D)不定
16、有以下程序main(){
inty=9;
for(;
y>
0;
y--)if(y%3==0)printf("
--y);
}程序的运行结果是(C)A)741B)963C)852D)875421
17、以下程序执行后sum的值是(C)
A)15B)14C)不确定D)0main()
{inti,sum;
for(i=1;
i<
6;
i++)sum+=i;
printf(“n%”d,sum);
18、有如下程序
main()
{inti,sum=0;
for(i=1;
=3;
sum++)sum+=i;
printf(“%n”d,sum);
该程序的执行结果是(C)
A)6B)3C)死循环D)0
19、执行语句for(i=3;
i>
0;
i--);
i--;
后,变量i的值是(C)A)0B)10C)-1D)1
20、执行下面程序片段的结果是(A)。
intx;
for(x=3;
x<
x++)
printf((x%2)?
(“**%d”):
(”#n#”%d),x);
A)**3##4B)##3
**5**4##5
D)
**3##4
##5
21、有以下程序,执行后输出的结果是(A)。
main(){inti;
for(i=0;
3;
i++)switch(i)
{case1:
printf("
i);
case2:
default:
A)011122B)012C)012020D)120
22、有以下程序,程序运行后的输出结果是(C)。
{intk=4,n=0;
n<
k;
)
{n++;
if(n%3!
=0)continue;
k--;
printf("
%d,%d\n"
k,n);
A)1,1B)2,2C)3,3D)4,4
23、设变量已正确定义,则以下能正确计算f=n!
的程序段是(D)A)f=0;
=n;
i++)f*=i;
B)f=1;
n;
i++)f=f*i;
C)f=1;
for(i=n;
1;
D)f=1;
=2;
i--)f*=i;
24、执行下面程序片段的结果是(B)。
{inta,b;
for(a=1,b=1;
a<
=100;
a++)
if(b>
=20)break;
if(b%3==1)
b+=3;
continue;
b-=5;
printf(“%n”d,a);
A)7B)8C)9D)10
25、以下程序的输出结果是(B)。
{inti=0,a=0;
20)
{for(;
;
)
{if((i%10)==0)break;
elsei--;
i+=11;
a+=i;
%d\n"
a);
A)21B)32C)33D)11
26、以下程序的输出结果是(A)main()
{inti,j,x=0;
2;
i++)
{x++;
for(j=0;
j<
j++)
{if(j%2)continue;
x++;
printf(“x=%n”d,x);
}A)x=4B)x=8C)x=6D)x=12
27、有以下程序
inti,j;
for(i=3;
=1;
i--)
for(j=1;
j++)printf("
i+j);
\n"
);
程序的运行结果是(D)
A)234B)432C)23
34554334
45
28、有以下程序
{inti=5;
if(i%3==1)
if(i%5==2)
*%d"
break;
i++;
}while(i!
=0);
\n"
);
程序的运行结果是(A)
A)*7B)*3*5C)*5
29、以下程序的结果是(A)
{intn;
for(n=1;
{if(++n%2==0)continue;
if(++n%3==0)break;
n=%d"
n);
A)n=6B)n=5C)n=4D)死循环
30
D)45
34
23
D)*2*6
、以下叙述中正确的是(C)
A)break语句只能用于switch语句题中
B)continue语句的作用是:
使程序的执行流程跳出包含它的所有循环
C)break语句只能用在循环体内和switch语句体内
D)在循环体内使用break语句和continue语句的作用相同
二、程序阅读题(共10题)
1、以下程序运行后的输出结果是52。
main()
inti=10,j=0;
{j=j+i;
i--;
}while(i>
2);
printf(“%”,j);
2、设有以下程序:
intn1,n2;
scanf(“%d,&
n2);
while(n2!
=0)
n仁n2%10;
n2=n2/10;
printf(“%d'
n1);
8921
程序运行后,如果从键盘上输入1298;
则输出结果为
3、以下程序的输岀结果是5。
{ints,i;
for(s=0,i=1;
i++,s+=i);
printf("
s);
4、阅读下面程序,程序的结果是2,1,0。
{inti=7;
for(i=2;
printf(”%d”i);
printf(”%c”i);
5、阅读下面程序,程序的结果是14,4。
main()
{inti,j,m=0;
=10;
i+=4)for(j=3;
=4;
j++)
{m++;
%d,%d"
i,m);
6、阅读下面程序,程序的结果是1978。
{intj,a=2,n=4;
longs=O,t=O;
n;
t=t*1O+a;
s=t;
n_1;
{t=t/10;
s=s-t;
printf(”%d,s);
7、以下程序运行后的输出结果是0918273645
charc1,c2;
for(c仁'
0'
c2='
9'
c1<
c2;
c1++,c2--)
%c%c"
c1,c2);
8、以下程序的输出结果是_5_。
ints,i;
9、执行以下程序后,输出#号的个数是6。
{inti,j;
i<
5;
i++)
for(j=2;
j<
=i;
j++)putchar('
#'
10、以下程序的输出结果是x=4
{if(j%2)continue;
printf(“x=%dn”,x);
三、程序填空题
1、以下程序的功能是计算:
m=1-2+3-4+…+9-10,并输出结果。
请填空。
{intm=0,f=1,i,n;
scanf(“%d,&
n);
{m+=i*f;
f=-f;
printf(“m=%'
d,m)
2、以下程序的功能是计算s=1+1/2!
+1/3!
+1/4!
+…+1/n!
,请填空。
doubles=0.0,fac=1.0;
inti;
intn;
for(i=1,i<
=n;
{fac=fac*1.0/i;
s=s+fac;
printf(“s=%lf”,s);
3、以下程序的功能是计算:
s=1+12+123+1234+12345。
{intt=0,s=0,i;
for(i=1;
=5;
{t=i+t*10;
s=s+t;
s=%d\n"
4、要使以下程序段输出10个整数,请填入一个整数。
=18;
printf("
%”,i+=2));
5、以下函数的功能是:
求x的y次方,请填空。
doublefun(doublex,inty)
{inti;
doublez;
for(i=1,z=x;
y;
i++)z=z*y;
returnz;
6、以下程序的功能是根据以下近似公式求n值:
(n*n)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)
现在请你在下面的函数中填空,完成求n的功能。
main(){
doubles=0.0;
longi,n;
scanf(“%ld”,&
i++)s=s+1.0/(i*i);
printf(“%lf”,sqrt(6*s));
7、以下用来输出两整数M和N之间的所有素数(质数),请填空,使程序能正确运行。
#defineM4
#defineN30
inti,j,k,s=0;
for(i=M;
=N;
{for(j=2;
_J—;
j++)
if(i%j==0)break;
if(j>
=i)
{printf("
%5d"
i);
s=s+1;
if(s%5==0)printf("
8、以下程序实现:
从键盘输入一位整数,计算其各位数字之和。
比如输入整数31421,则
打印结果为11。
inti,sum=O,a;
scanf("
&
i);
while(i>
0){
a=i%10;
sum+=a;
i=i/10;
sum);
9、以下程序实现:
计算1~10之间(不含10)的奇数之和以及偶数之和
inta,b,i;
a=b=O;
10;
i+=2)
a=a+i:
b=b+i+1:
偶数为:
%d,奇数和为:
a,b);
10、以下程序的功能是:
输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。
10;
i++){
j=i*10+6;
if(j%3==0)continue;
printf(“%d”,j);
四、编程题
m,输出1至Um(含m)能被7或11
m为50,则程序输出7、11、14、
5。
1、写一个程序,程序的功能是:
从键盘输入一个整数整除的所有整数,并计算出这些数的个数。
例如:
如果
21、22、28、33、35、42、44、49共11个数。
2、计算100到1000间有多少个数其各位数字之和是
3、从键盘输入整数n,输出1+3+5+7+…前n项的和(输入的*=10)
4、编写程序,实现如下图形12
123
123412345
5、打印100-999以内所有满足条件的数。
条件为,这个数等于其个位数,十位数,百位数立方和,如153=1*1*1+5*5*5+3*3*3