C语言程序设计第6章习题.docx
- 文档编号:7672873
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:12
- 大小:24.78KB
C语言程序设计第6章习题.docx
《C语言程序设计第6章习题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第6章习题.docx(12页珍藏版)》请在冰豆网上搜索。
C语言程序设计第6章习题
习题
1、选择题
(1)若i、j为int类型,则下面程序段中内循环体的总执行次数是()
for(i=5;i>0;i++)
for(j=0;j<4;j++)
{…}
A.20B.24 C.25D.30
(2)以下叙述正确的是()。
A.do…while()语句构成的循环不能用其他语句构成的循环来代替
B.do…while()语句构成的循环只能用break语句退出
C.do…while()语句构成的循环,在while后的表达式为非零时结束循环
D.do…while()语句构成的循环,在while后的表达式为零时结束循环
(3)以下程序的执行结果是()。
main()
{
intn==9;
while(n>6)
{
n--;printf(“%d”,n);
}
}
A.987B.876C.8765D.987
(4)以下说法不正确的是()。
A.对于各种循环,循环体中的语句均可以由空语句构成
B.do…while()和for循环均无条件地执行一次循环体,再对表达式进行判断
C.使用while和do…while()循环时,循环变量初始化的操作应在循环语句之前完成
D.while循环是先判断表达式,再执行循环体语句
(5)下列程序输出结果是()。
main()
{
inta=0,i;
for(i=1;i<5;i++)
{
switch(i)
{
case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
}
}
printf(“%d\n”,a);
}
A.31B.13C.10D.20
(6)下列语句中可以只输出26个大写英文字母的是()
A.for(a='A';a<='Z';printf(“%c”,++a));
B.for(a='A';a<='Z';a++,printf(“%c”,a));
C.for(a='A';a<='Z';printf(“%c”,a++));
D.for(a='A';a<='Z';printf(“%c”,++a));
(7)设有程序段:
intk=0;
while(k=0)k--;
则下面描述中正确的是()
A.while循环执行10次B.循环无限次执行
C.循环体语句一次也不执行D.循环体语句执行一次
(8)设有程序段:
intk=0;
while(k=1)k--;
则下面描述中正确的是()
A.while循环执行10次B.循环无限次执行
C.循环体语句一次也不执行D.循环体语句执行一次
(9)以下关于语句的说法中正确的是()
A.do…while()语句的循环体至少会执行一次
B.while语句的循环体至少会执行一次
C.for语句的循环体至少会执行一次
D.在C语句中只能用do、do…while()或for语句实现循环结构
(10)C语句用()表示逻辑“真”值。
A.trueB.t或yC.非零的任何数D.整数0
(11)以下for循环是()
for(x=0,y=0;(y!
=123)&&(x<4);x++);
A.无限循环B.循环次数不定C.执行4次D.执行3次
(12)while语句和do…while()语句的主要区别是()
A.do…while()的循环体至少无条件执行一次
B.while的循环体控制条件比do…while()的循环控制条件严格
C.do…while()允许从外部转到循环体内
D.do…while()的循环体不能是复合语句
(13)以下程序输出结果是()
#include
main()
{
inti;
for(i=1;i<=5;i++)
{
if(i%2)printf(“*”);
elsecontinue;
printf(“#”);
}
printf(“s\n”);
}
A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$
(14)执行语句“for(s=0,i=1;i<=10;i=i+2)s+=i;”后,变量s、i的当前值分别是()
A.25,11B.12,10C.25,10D.12,11
(15)下面的程序段可循环的次数为()
inti=2;
while(i=0)printf(“%d”,i);i++;
printf(“\n”);
A.2B.1C.0D.死循环,无数次
(16)下面的程序执行后()
main()
{
intx=3;
do
{
printf(“%d\n”,x-=2);
}while(!
(--x));
}
A.输出的是1B.输出的是1和2C.输出的是3和0D.是死循环
(17)定义inta=10,下列循环的输出结果是()
while(a>7)
{a--;printf(“%d”,a);}
A.1098B.987C.10987D.9876
(18)若i、j已定义为int类型,则以下程序段中的内循环总共被执行()
for(i=4;i;i--)
for(j=0;j<5;j++){…}
A.24次B.30次C.25次D.20次
2、输入若干个字符,输入字符“$”结束输入,统计并输出字符串中非数字字符的个数。
#include
voidmain()
{
charch;
inta;
a=0;
do
{
scanf("%c"&ch);/*getchar();*/
if(ch<=48||ch>=57)
a=a+1;
}while(ch!
='$');
printf("非数字字符有%d个\n"a);/*算上字符$*/
}
3、输出100以内的不能被7整除的数。
#include
main()
{
inta;a=1;
do
{
if(a%7!
=0)printf("%d,a);
a++;
}while(a<=100);
printf("a=%d",a);
}
4、求s不超过1000时n的最大值,s=1+2+3+…+n。
#include
main()
{
ints,n;
s=0;n=1;
do
{
s=s+n;
n++;
}while(s<=1000);
printf("%d",s);
}
5、编写程序,输出以下图案。
*
***
*****
*******
*****
***
*
#include
voidmain()
{
inta,b,c;
for(a=1;a<=4;a++)
{
for(b=1;b<=8-2*a;b++)printf("");
for(c=1;c<=a;c++)printf("*");
for(b=1;b<=8-2*a;b++)printf("");
printf("\n");
}
for(a=3;a>=1;a--)
{
for(b=6;b<=8-2*a;b++)printf("");
for(c=5;c<=a;c++)printf("*");
for(b=6;b<=8-2*a;b++)printf("");
printf("\n");
}
}
6、求s=1!
+2!
+3!
+4!
+5!
+…+n!
(n<20)
#include
intmain()
{
ints,i,j;
s=0;j=1;
for(i=1;i<=20;i++)
{
j=j*i;
s=s+j;
}
printf("%d\n",s);
}
7、打印所有的“水仙花数”。
所谓水仙花数,是指一个3位数,其各位数字的立方之和等于该数本身(如:
153=13+53+33)。
#include
voidmain()
{
inti,j,k,n;
printf("水仙花数有:
");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)printf("%d"n);
}
printf("%n",n);
}
8、整元换零钱问题。
把1元钱兑换成1分、2分、5分硬币,共有多少种不同的换法?
#include
main()
{
inta,b,c,num=0;
for(a=0;a<=100;a++)
for(b=0;b<=(100-a)/2;b++)
for(c=0;c<=(100-a-2*b)/5;c++)
if(a+2*b+5*c==100)num++;
printf("%d",num);
}
9、有一分数序列
求出这个数列的前20项之和。
#include
main()
{
inti,x,y,a;
floatsum=0;
x=2;y=1;
for(i=1;i<20;i++)
{
sum+=(float)(x)/y;
printf("%d/%d\n",x,y);
a=x;
x=x+y;
y=a;
}
printf("%7.5f\n",sum);
}
10、一球从100米高处自由落下,每次落地后跳回原高度的一半,再落下。
它第10次落地时,共经过的短程是多少米?
第10次反弹多高?
main()
{
floatsn=100.0,hn=sn/2;
intn;
for(n=2;n<=10;n++)
{
sn=sn+2*hn;/*第n次落地时共经过的米数*/
hn=hn/2;/*第n次反跳高度*/
}
printf("thetotalofroadis%f\n",sn);
printf("thetenthis%fmeter\n",hn);
}
11、将一个正数分解质因数。
例如:
90=2×3×3×5.
#include
voidmain()
{
intn,i;
printf("\npleaseinputanumber:
\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!
=i)
{
if(n%i==0)
{printf("%d*",i);
n=n/i;
}
elsebreak;
}
}
printf("%d",n);
}
12、猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃掉前一天剩下的一半零一个。
到第10天早上想再吃时,就剩一个桃子。
猴子第一天共摘了多少桃子?
#include
main()
{
intday,x1,x2;
day=9;
x2=1;
while(day>0)
{
x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
}
printf("thetotalis%d\n",x1);
}
13、求Sn=a+aa+aaa+…+aa…a,最后一项为n个a,其中a是一个数字。
例如:
2+22+222+2222(此时n=5)。
n由键盘输入。
#include
intmain(void)
{
intsum=0;
intn;
inti=0;
printf("请入a值(整数):
\n");
printf("a=");
scanf("%d",&a);
printf("请入n值:
\n");
printf("n=");
scanf("%d",&n);
while(i { sum=a+sum*10; sun+=sum; ++i; } printf("sun=%d\n",sun); } 14、一个百万富翁遇到一个穷人,穷人找他谈一个换钱的计划。 穷人说: 我每天给你十万元,而你第一天只需给我一元钱,第二天我仍给你十万元,你给我两元钱,第三天我仍然给你十万元,你给我四元钱。 以后你每天给我的钱是前一天的两倍,我每天给你十万元,直到满一个月(30天)。 百万富翁很高兴,欣然接受了这个计划,并立下契约。 请编写一个程序计算各一个月穷人给了百万富翁多少钱,百万富翁给了穷人多少钱? #include void main() { double sumx=0,sumy=0,y=0.01; int i,j; for(i=1;i<=30;i++) { sumx+=100000; for(j=1;j<=(i-1);j++) { y=y*2; } sumy+=y; } printf("商人所得sumx=%lf\n陌生人所得sumy=%lf\n",sumx,sumy); } 15、百鸡问题。 公鸡1只5元,母鸡1只3元,小鸡3只1元,用100元买100只鸡,问公鸡、母鸡和小鸡各多少只? #include voidmain() { inti,j; for(i=3;i<100;i+=3) { for(j=1;j<100;j++) { if(i/3+j*3+(100-i-j)*5==100&&100-i-j>0) { printf("小鸡%d只,母鸡%d只,公鸡%d只。 \n",i,j,100-i-j); } } } } 16、编写程序用下列公式cosx的近似值。 精度要求: 通项的绝对值小于等于10-6时止。 #include"stdio.h" #include"math.h" main() { intt=-1,i=2,j; doubleh,a=1,b,x,s=1,m; printf("intputX: "); scanf("%lf",&x); m=x*x; h=x; while(fabs(h)>=1e-6) { a=a*m; for(b=1,j=1;j<=i;j++) {b=b*j;} h=t*(a/b); s=s+h; i=i+2; m=x*x; t=-t; } printf("cos%lf=%.6lf\n",x,s); getch(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 习题