C语言第8次作业.docx
《C语言第8次作业.docx》由会员分享,可在线阅读,更多相关《C语言第8次作业.docx(18页珍藏版)》请在冰豆网上搜索。
![C语言第8次作业.docx](https://file1.bdocx.com/fileroot1/2023-3/31/1e05717c-d4cc-4735-805b-f2c03082a9c4/1e05717c-d4cc-4735-805b-f2c03082a9c41.gif)
C语言第8次作业
单选题:
1、若K为整型,以下while循环执行()次
K=0
while(K=0)K=K-1
A.执行10次
B.无限循环
C.一次也不执行
D.执行一次
学生答案:
C
参考答案:
C
2、当执行以下程序段时
{y=-1;
do{y--;}while(--y);
printf("%d\n",y--);
}
A.循环体将执行一次
B.循环体将执行两次
C.循环体将执行无限次
D.系统将提示有语法错误
学生答案:
B
参考答案:
C
3、执行以下程序后,输出的结果是
main()
{inty=10;
do{y--;}while(--y);
printf("%d\n",y--);
}
A.-1
B.1
C.8
D.0
学生答案:
D
参考答案:
D
4、读程序:
main()
{intnum=0;
while(num<=2)
{num++;printf("%d",num);}
}
上面程序的输出结果是______
A.1
B.22
C.123
D.1234
学生答案:
参考答案:
C
5、假定a和b为int型变量,则执行以下语句后b的值为
a=1;b=10;
do
{b=b-a;a++;}
while(b-->0);
A.-3
B.-2
C.-1
D.-4
学生答案:
C
参考答案:
D
6、以下程序的输出结果是
main()
{inti;
for(i='A';i<'I';i++,i++)printf("%c",i+32);
printf("\n");
}
A.编译不通过,无输出
B.aceg
C.acegi
D.abcdefghi
学生答案:
C
参考答案:
B
7、以下循环体的执行次数是
main()
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--)
printf("%d\n",i);
}
A.3
B.2
C.1
D.0
学生答案:
C
参考答案:
C
8、设K为整形,则下面的while循环执行()次
k=2;while(k==0){printf("%d",k);k--;}
printf("\n");
A.无限次
B.0次
C.1次
D.2次
学生答案:
C
参考答案:
B
9、运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为
main()
{intv1=0,v2=0;
charch;
while((ch=getchar())!
='#')
switch(ch)
{case'a':
case'h':
default:
v1++;
case'0':
v2++
}
printf(
A.2,5
B.2,0
C.5,0
D.5,5
学生答案:
B
参考答案:
D
10、下面程序的运行结果是
#include
main()
{inta=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
学生答案:
C
参考答案:
B
11、以下程序的输出结果是
main()
{inti;
for(i='A';i<'I';i++,i++)printf("%c",i+32);
printf("\n");
}
A.编译不通过,无输出
B.aceg
C.acegi
D.abcdefghi
学生答案:
C
参考答案:
B
12、以下程序的输出结果是
main()
{intn=4;
while(n--)printf("%d",--n);
}
A.20
B.31
C.321
D.210
学生答案:
C
参考答案:
A
13、以下循环体的执行次数是
main()
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--)
printf("%d\n",i);
}
A.3
B.2
C.1
D.0
学生答案:
B
参考答案:
C
14、设有程序段
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是________
A.while循环执行10次
B.循环是无限循环
C.循环体语句一次也不执行
D.循环体语句执行一次
学生答案:
B
参考答案:
C
15、请读程序:
#include
main()
{
floatx,y,z;
scanf("%f%f",&x,&y);
z=x/y;
while
(1)
{if(fabs(z)>1.0)
{
x=y;y=z;z=x/y;
}
elsebreak;
}
printf("%f\n",y);
}
若运行时从键盘上输入3.62.4(表示回车),则输出结果是
A.1.500000
B.1.600000
C.2.000000
D.2.400000
学生答案:
D
参考答案:
B
16、有以下程序
main()
{intx,i;
for(i=1;i<=50;i++)
{x=i;
if(x%2==0)
if(x%3==0)
if(x%7==0)
printf("%d",i);
}
}
输出结果是
A.28
B.27
C.42
D.41
学生答案:
C
参考答案:
C
17、运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为
main()
{intv1=0,v2=0;
charch;
while((ch=getchar())!
='#')
switch(ch)
{case'a':
case'h':
default:
v1++;
case'0':
v2++
}
printf(
A.2,5
B.2,0
C.5,0
D.5,5
学生答案:
B
参考答案:
D
18、有如下程序
main()
{intx=23;
do
{printf("%d",x--);}
while(!
x);
}
该程序的执行结果是
A.321
B.23
C.不输出任何内容
D.陷入死循环
学生答案:
B
参考答案:
B
19、以下程序的输出结果是
#include
#include
main()
{charb1[8]="abcdefg",b2[8],*pb=b1+3;
while(--pb>=b1)strcpy(b2,pb);
printf("%d\n",strlen(b2));
}
A.8
B.3
C.1
D.7
学生答案:
A
参考答案:
D
20、以下程序的输出结果是
main()
{inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k);
}
A.20
B.21
C.22
D.23
学生答案:
C
参考答案:
B
21、C语言中while和do-while循环的主要区别是
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件更严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
学生答案:
C
参考答案:
A
22、下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。
#include
main()
{inti=0,j,k;
do{i++;k=316-13*i;}while(_______);
j=k/11;
printf("316=13*%d+11*%d",i,j);
}
A.k/11
B.k%11
C.k/11==0
D.k%11==0
学生答案:
D
参考答案:
B
23、下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空
#include
main()
{inta,b,t;
scanf("%d%d",&a,&b);
while(___________)
{if(a>b)
{t=a;a=b;b=t;}
printf("%d,%d\n",a,b);
scanf("%d%d",&a,&b);
}
}
A.!
a=b
B.a!
=b
C.a==b
D.a=b
学生答案:
C
参考答案:
B
24、下述程序的输出结果是()。
#include
main()
{
intk=0,m=0;
inti,j;
for(i_O;i<2;i++)
{
for(j:
0;j<3;j++)
k++:
k一=j;
}
m=i+j;
printf(”k=%d,m=%d”,k,m);
}
A.k=0,m=3
B.k=O,m=5
C.D)k=l,m=3
D.D)k=l,m=5
学生答案:
A
参考答案:
B
25、下面有关for循环的正确描述是()。
A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
学生答案:
B
参考答案:
D
多选题:
判断题:
填空题:
1、求输入100个数中正数的个数及其平均值
main()
{inti,n;
floatsum,f;
n=0;
__1__;
for(i=0;i<=100,i++)
{printf("enterarealnumber:
";
scanf("%f",&f));
if__2__
continue;
__3__;
n++;}
printf("sum=%f",sum);
printf("arerage=%f",sum/n);}
学生答案:
参考答案:
sum=0,f<=0,sum+=f或sum=sum+f
2、以下程序的输出结果是________
#include
main()
{intX=15;
while(X>10&&x<50)
{X++;
if(x/3){X++;break;}
elsecontinue;
}
printf(”%d\n”,X);
}
学生答案:
参考答案:
17
3、下面程序段的运行结果是
x=2:
do{pfintf(”*”);x--;}while(x);
学生答案:
参考答案:
**
4、以下程序的输出结果是__________o
#include
main()
{
intx=2;
while(x--);
printf("%d\n",x);
}
学生答案:
参考答案:
-1
5、下述程序的运行结果是——。
#include
main()
{
ints=0,k;
for(k=7;k>4;k--)
{
switch(k)
{
case1:
case4:
case7:
S++;break;
case2:
case3:
case6:
break;
case0:
case5:
s+=2;break;
学生答案:
参考答案:
s=3
问答题:
程序设计题:
1、有36个学生一起买小吃,共花钱120元,其中每个大学生花4元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生为0的解)?
学生答案:
参考答案:
#include
main()
{
inta,b,c;
inti=0;
for(a=1;a<=36;a++)
{for(b=1;b<=36;b++)
{for(c=1;c<=36;c++)
if(((a+2*b+4*c)==120)&&((a+b+c)==36))
i=i+1;
}
}
2、编程序求1~55的平方根的和并输出结果。
(保留小数点两位)
学生答案:
参考答案:
#include
main()
{
inti;
floatx,sum=0;
for(i=1;i<=55;i++)
{
x=sqrt(i);
sum=sum+x;
}
printf("\n%.2f",sum);
}
参考答案:
275.43
3、编程序求2+4+8+16+32+…这样的数之和。
如果累加数大于5000时,则程序终止并输出结果。
学生答案:
参考答案:
main()
{
inti=2,sum=0;
while(sum<=5000)
{
sum=sum+i;
i=i*2;
}
printf("\n%d",sum);
}
本题答案:
8190
4、编程序求出1-4000以内能被3或者11整除数的个数。
学生答案:
参考答案:
main()
{
inti,num=0;
for(i=1;i<=4000;i++)
{
if((i%3==0)&&(i%11==0))
num=num+1;
}
printf("\n%d",num);
}
本题答案:
121
5、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。
学生答案:
参考答案:
main()
{
inti,k=0;
for(i=1000;i<10000;i++)
{
if(i%8==0)
if(i/1000==(i%100)/10)
k++;
}
printf("\nthenumberis:
%d",k);
}
本题参考答案:
110
6、设某国今年的国民生产总值为45600亿元,若今后每年以8%的增长率增长,计算多少年后能实现国民生产总值翻两番?
学生答案:
参考答案:
main()
{
intn;
floata,s;
for(s=0,n=0,a=45600.0;s<=3*45600.0;n++)
{
a=a+a*0.08;
s=a;
}
printf("%d\n",n);
}_
本题参考答案:
15
7、编写程序,将一个不大于256的十进制正整数转化为8位的二进制数,若不足8位,则在前面补0,例如十进制数2转化位8位二进制数后是00000010,37转化后是00100101。
试求出十进制数5、23、189转化位8位二进制分别是多少?
(要求必须使用循环语句实现)
学生答案:
参考答案:
main()
{
inta,i,b[8];
printf("PleaseInputaNumber<=256:
\n");
scanf("%d",&a);
for(i=1;i<=8;i++)
b[i]=0;
i=8;
while(i>=1)
{b[i]=a%2;
a=a/2;
if(a==0)
break;
i--;
}
for(i=1;i<=8;i++)
printf("%d",b[i]);
printf("\