C语言基础练习题(含答案)(3)
更新时间:2023-05-15 14:31:01 阅读量: 实用文档 文档下载
- c语言基础训练题推荐度:
- 相关推荐
第三章 循环结构
3.1 选择题
1. 以下程序的输出结果是( )。
main()
{ int n=4;
while (n--)
printf(〞%d〞,--n);
}
A.20 B.31 C.321 D.210
2. 以下程序的输出结果是( )。
main()
{int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
A.10192 B.9876 C.10990 D.101091
3. 当执行以下程序段时。
x=-1;
do
{x=x*x;}
while (!x);
A.循环体将执行一次 B.循环体将执行两次
C.循环体将执行无数多次 D.系统将提示有语法错误
4. 执行以下程序后输出的结果是( )。
main()
{ int y=10;
do{y--;}while(--y);
printf("%d\n",y--);}
A.-1 B.1 C.8 D.0
5. 下面程序的输出结果是( )。
main()
{ int x=3,y=6,a=0;
while (x++!=(y-=1))
{a+=1;
if (y<x) break;
}
printf("x=%d,y=%d,a=%d\n",x,y,a);
}
A.x=4,y=4,a=1 B.x=5,y=5,a=1
C.x=5,y=4,a=3 D.x=5,y=4,a=1
6.若i,j已定义为int类型,则以下程序段中内循环的总的执行次数是 ( )。
for (i=5;i;i--)
for (j=0;j<4;j++)
{…}
A.20 B.24 C.25 D.30
7. 请读程序:
#include<stdio.h>
main()
{int x=1,y=0,a=0,b=0;
switch(x)
{case 1:switch(y)
{case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
上面程序的输出结果是( )。
A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2
8.若有以下程序段,w和k都是整型变量
w=k;
LB: if(w==0) goto LE;
w--;
printf(〞*〞);
goto LB;
LE:
则不能与上面程序段等价的循环语句是( )。
A. for(w=k;w!=0;w--)
print(〞*〞);
B. w=k;
while(w--!=0)
printf(〞*〞);
w++;
C. w=k;
do {w--;printf(〞*〞);}
while (w!=0);
D.for (w=k;w;--w) printf(〞*〞);
9. 下面程序的输出是( )。
main()
{
char *s=〞12134211〞;
int k,v1=0,v2=0,v3=0,v4=0;
for (k=0;s[k];k++)
switch(s[k])
{
default:v4++;
case 1:v1++;
case 2:v2++;
csse 3:v3++;
}
printf(〞v1=%d,v2=%d,v3=%d,v4=%d\n〞,v1,v2,v3,v4);
}
A.v1=4,v2=2,v3=1,v4=1 B.v1=4,v2=9,v3=3,v4=1
C.v1=5,v2=8,v3=6,v4=1 D.v1=8,v2=8,v3=8,v4=8
10. 有以下程序
#include〞stdio.h〞
int abc(int u,int v );
main()
{
int c,a=24,b=16;
c=abc(a,b);
printf(〞%d\n〞,c);
}
int abc (int u,int v)
{
int w;
while (v)
{w=u%v; u=v; v=w;}
return u;
}
输出结果是( )。
A.6 B.7 C
.8 D.9
11.在下列选项中,没有构成死循环的程序段是( )。
A.int i=100;
while (1)
{
i=i%100+1;
if(i>100) break;
}
B. for ( ; ;);
C.int k
=1000;
do {++k;}while (k>=10000);
D.int s=36;
while (s) ;
--s;
12.若输入B,以下程序的运行结果为( )。
main()
{char grade;scanf("%c",&grade);
switch(grade)
{case'A':printf(">=85.");
case'B':
case'C':printf(">=60.");
case'D':printf("<60.");
default:printf("error.");
}
}
A.>=85. B.>=60. C.>=60.<60.error. D.error.
13.列程序运行的情况是( )。
main()
{ int i=1,sum=0;
while(i<10)sum=sum+1;i++;
printf("i=%d,sum=%d",i,sum);
}
A.i=10,sum=9 B.i=9,sum=9 C.i=2,sum=1 D.运行出现错误
14.有以下语句:
i=1;
for(;i<=100;i++) sum+=i;
与以上语句序列不等价的有( )。
A. for(i=1; ;i++) {sum+=i;if(i==100)break;}
B. for(i=1;i<=100;){sum+=i;i++;}
C. i=1;for(;i<=100;)sum+=i;
D. i=1;for(; ;){sum+=i;if(i==100)break;i++;}
15.下面程序的运行结果为( )。
main()
{ int n;
for(n=1;n<=10;n++)
{ if(n%3==0)continue;
printf("%d",n);
}
}
A.12457810 B.369 C.12 D.12345678910
16.下面程序的运行结果是( )。
main()
{int x,y,z;
x=0;y=z=-1;
x+=-z---y;
printf("x=%d\n",x);
}
A.x=4 B.x=0 C.x=2 D.x=3
17.标有/**/的语句的执行次数是( )。
int y,i;
for(i=0;i<20;i++)
{if(i%2==0)continue;
y+=i;/**/
}
A.20 B.19 C.10 D.9
18.在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式。
A.只能用逻辑表达式 B.只能用关系表达式
C.只能用逻辑表达式或关系表达式 D.可用任意表达式
19.在以下给出的表达式中,与do-while(E)语句中的(E)不等价的表达式是( )。
A.(!E==0) B.(E>0||E<0) C.(E==0) D.(E!=0)
20.假定所有变量均已正确定义,下列程序段运行后x的值为( )。
k1=1;k2=2; k3=3; x=15; if(!k1)x--;else if(k2) if(k3)x=4;else x=3;
A.14 B.4 C.15 D.3
21.执行下面语句的输出为( )。
int i=-1;
if(i<=0)printf(“* * * *\n”);
else printf(“% % % % \n”);
A.* * * * B.% % % % C.% % % % c D.有错,执行不正确
22.下列程序的输出是( )。
#include<stdio.h>
main()
{ int i;char c;
for(i=0;i<=5;i++)
{c=getchar();putchar(c);
}
}
程序执行时从第一列开始输入以下数据,<CR>代表换行符。
u<CR>
w<CR>
xsta<CR>
A.uwxsta B.u C.u D.u
w w w
x xs xsta
23.下列程序的输出为( )。
#include"stdio.h"
main()
{ int i,j,x=0;
for(i=0;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
24.下列程序的输出为( )。
#include<stdio.h>
main()
{int i,j,k=0,m=0
;
for(i=0;i<2;i++)
{ for(j=0;j<3;j++)k++;k-=j;}
m=i+j;
printf("k=%d,m=%d\n",k,m);
}
A.k=0,m=3 B.k=0,m=5 C.k=1,m=3 D.k=1,m=5
25.在C语言中,为了结束while语句构成的循环,while后一对圆括号中表达式的值应该为( )。
A.0 B.1 C.true D.非0
26. 在C语言中,为了结束由do-while语句构成的循环,while后一对圆括号中表达式的值应为( )。
A.0 B.1 C.true D.非0
27.下列程序的输出为( )。
#include<stdio.h>
main()
{ int k=0;char c='A';
do
{switch(c++)
{ case'A':k++;break;
case'B':k--;
case'C':k+=2;break;
case'D':k=k%2;continue;
case'E':k=k*10;break;
default:k=k/3;
}
k++;
}
while(c<'G');
printf("%d\n",k);
}
A.k=3 B.k=4 C.k=2 D.k=0
28.C语言的if语句嵌套时,if与else的配对关系是( )。
A. 每个else总是与它上面的最近的if配对
B. 每个else总是与最外的if配对
C. 每个else与if的配对是任意的
D. 每个else总是与它上面的if配对
29.下列程序的输出为( )。
#include<stdio.h>
main()
{int i=0,j=0,a=6;
if((++i>0)||(++j>0))a++;
printf("i=%d,j=%d,a=%d\n",i,j,a);
}
A.i=0,j=0,a=6 B.i=1,j=1,a=7 C.i=1,j=0,a=7 D.i=0,j=1,a=7
30.下列程序段的输出结果为( )。
main()
{int x=3;
do
{ printf("%3d",x-=2);}
while(!(--x));}
A.1 B.3 0 C.1 -2 D.死循环
3.2 填空题:
1. 当输入19,2,21时下列程序运行的结果是_________。
main()
{int a,b,c,max;
printf("please scan three number a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max<b)max=b;
if(max<c)max=c;
printf("max is:%d",max);
}
2. 若输入字母C,程序输出结果为【1】;若输入字符*,程序将【2】。
#include<stdio.h>
main()
{char c1,c2;
c1=getchar();
while(c1<97||c1>122)c1=getchar();
c2=c1-32;
printf("%c,%c\n",c1,c2);
}
3. 以下程序运行的结果为________。
main()
{ int a,b,c,x,y,z;
a=10;b=2;
c=!(a%b);x=!(a/b);
y=(a<b)&&(b>=0);
z=(a<b)||(b>=0);
printf("%d,%d,%d,%d\n",c,x,y,z);
}
4. 若输入4,程序运行结果为【 1 】,若输入-4,运行结果为【 2 】,若输入10,运行结果为【 3 】.
main()
{ int x,y;
scanf("%d",&x);
if(x<1)
{ y=x;
printf("x=%d,y=x=%d\n",x,y);
}
else if(x<10)
{ y=2*x-1;
printf("x=%d,y=2*x-1=%d\n",x,y);
}
else
{ y=3*x-11;
printf("x=%d,y=3*x-11=%d\n",x,y);
}
}
5.以下程序运行的结果________。
main()
{int i=1,sum=0;
loop:if(i<=10)
{sum+=i;
i++;
goto loop;
}
printf("sum=%d\n",sum);
}
6.以下程序运行的结果________。
main()
{ int x=2,y,z;
x*=3+1;
printf("%d,",x++);
x+=y=z=5;
printf("%d,",x);
x=y==z;
printf("%d\n",x);
}
7.以下程序运行的结果________。
#include<stdio.h>
#include<math.h>
main()
{int i,k,m,n=0;
for(m=1;m<=10;m+=2)
{ if(n%10==0)printf
("\n");
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k)
{printf("%2d",m);
n++;
}
}
}
8.如果输入‘1’,‘2’,‘3’,‘4’,程序运行输出的是________。
#include<stdio.h>
main()
{char c;
int i,k;
k=0;
for(i=0;i<4;i++)
{while(1)
{ c=getchar();if(c>='0'&&c<='9')break;}
k=k*10+c-'0';
}
printf("k=%d\n",k);
}
9.运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为________。
#include <stdio.h>
main()
{int v1=0,v2=0;
char ch;
while ((ch=getchar())!='#')
switch(ch)
{case 'a':
case 'h':
default: v1++;
case '0':v2++;
}
printf("%d,%d\n",v1,v2);
}
10.程序运行结果是_________。
#include<stdio.h>
main()
{int i;
for(i=1;i+1;i++)
{ if(i>4){printf("%d\t",i++);break;}
printf("%d\t",i++);
}
}
11. 以下程序运行的结果是_________。
#include<stdio.h>
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);
}
12.以下程序运行的结果是________。
main()
{int i=1;
while(i<10)
if(++i%3!=1)continue;
else printf("%d",i);
}
13.程序运行的结果是________。
main()
{int n=0;
while(n++<=1)
printf("%d\t",n);
printf("%d\n",n);
}
14.此程序运行时,输入qwert?程序的运行结果是_________。
#include<stdio.h>
main()
{char c;
while((c=getchar())!='?')putchar(++c);
}
15.对以下程序:
当输入65 14时,其运行结果是【 1 】。
当输入14 63时,其运行结果是【 2 】。
当输入25 125时,其运行结果时【 3 】。
#include<stdio.h>
main()
{int m,n;
scanf("%d%d",&m,&n);
while(m!=n)
{ while(m>n)m-=n;
while(n>m)n-=m;
}
printf("m=%d\n",m);
}
16.在执行以下程序时,为了使输出结果为t=4,则给a和b输入的值应满足的条件是_______。
main()
{int s,t,a,b;
scanf(〞%d,%d〞,&a,&b);
s=1; t=1;
if(a>0) s=s+1;
if(a>b) t=s+t;
else if (a==b) t=5;
else t=2*s;
printf(〞t=%d\n〞,t);
}
17.求出1000以内的“完全数”。(提示:如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。如:6的因子是1,2,3而6=1+2+3,则6是个“完数”)。
main()
{int i,a,m;
for(i=1;i<1000;i++)
{for(m=0,a=1;a<=i/2;a++)
if(!(i%a)) 【1 】;
if【2】)printf("%4d",i);
}
}
18.鸡问题:100元钱买100只鸡,公鸡一只5元钱,母鸡一只3元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡各多少只?
#include<stdio.h>
main()
{int cocks,hens,chicks;
cocks=0;
while(cocks<=19)
{ hens=0;
while(hens<=33)
{ chicks=100.0-cocks-hens;
if(5.0*cocks+3.0*hens+chicks/3.0=
=100.0)
printf("%d,%d,%d\n",cocks,hens,chicks);
【1】;
}
【2】;
}
}
19.爱因斯坦的阶梯问题:设有一阶梯,每步跨2阶,最后余1阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;每步跨6阶,
最后余5阶;只有每步跨7阶时,正好到阶梯顶。问共有多少阶梯。
main()
{int ladders=7;
while(【 1 】)ladders+=14;
printf("%d\n",ladders);
}
20.下列程序计算平均成绩并统计90分及以上人数。
main()
{int n,m;
float grade,average;
average=n=m=【1】;
while(【2】)
{ scanf("%f",&grade);
if(grade<0)break;
n++;
average+=grade;
if(grade<90)【3】;
m++;
}
if(n)printf("%.2f%d\n",average/n,m);
}
21.下列程序计算Fibonacci数列:1,1,2,3,5,8,13……的前40项。
main()
{int I;long f1,f2;
【1】;
for(I=0;I<20;I++)
{ printf("%12ld%12ld",f1,f2);
if(I%2)printf("\n");
f1+=f2;
【2】;
}
}
22.下列程序判断一个数是否为素数。
#include<stdio.h>
#include<math.h>
main()
{int I,k,m;
scanf("%d",&m);
k=sqrt(【1】);
for(I=2;I<=k;I++)
if(m%I==0)【2】;
if(【3】)printf("%dyes\n",m);
else printf("%dno\n",m);
}
23. 求100~499之间的所有水仙花数,即各位数字的立方和恰好等于该数本身的数。
main()
{int I,j,k,m,n;
for(I=1;【1】;I++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{【2】;
n=I*I*I+j*j*j+k*k*k;
if(【3】)
printf("%d",m);
}
}
24.从键盘上输入两个整数m和n,求其最大公约数。
main()
{int a,b,num1,num2,temp;
scanf("%d,%d",&num1,&num2);
if(【1】)
{ temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)
{ temp=【2】;
a=b;
b=temp;
}
printf("%d,%d",a,num1*num2/a);
}
3.3 答案及部分解题分析
一.选择题答案
1.A 2.D 3.A 4.D 5.D 6.A
7.A 8.C 9.D 10.C 11.C 12.C
13.D 14C 15.A 16.C 17.C 18.D
19.C 20.B 21.A 22.C 23.B 24.B
25.A 26.A 27.B 28.A 29.C 30.C
1. 答案:A
解析:此题中判断while后面的条件时,先使用n的值再n--,而打印时打印的是n减1
后的值。所以第一次循环,n=4,执行完后n=2,打印出2;第二次循环,n=2, 经过n—和—n,n变成了0,打印出0;第三次循环时while后面的条件不成立(n=0),所以循环结束。故输出为20。
2. 答案:D
解析:第一次循环时打印的x和y的值都是10,然后x通过x—后变成9,因此第二次循环时x=9, 而“y=++i”执行完后,y变成1,所以第二次循环时打印的x和y的值是9和1 ,然后x—变成8; 第三次循环时,x>8条件不成立,循环结束。故D为正确答案。
3. 答案:A
解析:对于一个不为0的数,!x即为0,故对于x
=-1,while后条件不成立,但是do循环体是先执行的,故等判断条件时,循环体已执行了一次。
4. 答案:D
解析:此题是一个do-while循环,当y值为1时,while后的条件--y变成0,从而循环结束,这时打印出0,然后y--变成-1。故D为正确答案。
5. 答案:D
解
析:此题中循环进行了1次,但判断了2次,第一次x加1变成4,y减1变成5,a加1变成1;第2次while后面的条件不成立,因为!=的左边先使用x的值4来判断,右边表达式的值为4,即y由5变成4,判断结束后4变成5,循环结束。故D为正确答案。
6. 答案:A
解析:此题中外层for要进行5次,内层for循环要进行4次,所以共进行4*5=20次循环。
二.填空题答案
1.答案:21
2.答案:【1】c C 【2】等待继续输入,直到输入小写字母。
3.答案:1,0,0,1
4.答案:【1】x=4,y=2*x-1=7 【2】x=-4,y=x=-4 【3】x=10,y=3*x-11=19
5.答案:55
6.答案:8,14,1
7.答案:1 3 5 7
8.答案:1234
9.答案:5,5
10.答案:1 3 5
11.答案:8
12.答案:4 7 10
13.答案:1 2 3
14.答案:rxfsu
15.答案:【1】m=1 【2】m=7 【3】m=25
16.答案:0<a<b
17.答案:【1】m=m+a 【2】m==i
18.答案:【1】hens++ 【2】cocks++
19.答案:【1】ladders/3!=2||ladders/5!=4||ladders/6!=5
20.答案:【1】0 【2】1 【3】continue
21.答案:【1】f1=1;f2=1 【2】f2+=f1
22.答案:【1
】m 【2】break 【3】I>=k+1
23.答案:【1】I<=4 【2】m=I*1000+j*100+k*10 【3】m==n
24.答案:【1】num1>num2 【2】a%b
正在阅读:
C语言基础练习题(含答案)(3)05-15
六一儿童节校长致辞范文两篇02-20
吊顶交底09-29
贵州省黔西南州行政执法人员100套模拟考试及答案正式考试基本从里面抽题09-19
小学语文常考的50个成语造句02-29
高中历史人教版选修三第三单元第1课 1929-1933年资本主义经济危03-11
中国古典园林发展简史04-05
土建安装全套计算规则04-10
分享资料高中巧学巧解大全物理04-30
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 语言基础
- 练习题
- 答案
- 污染源自动监测设备比对监测技术规定
- 09届高三地理地球与地图专题练习
- 一年级语文上册期末试卷分析报告
- 第三章 GPS卫星定位原理
- 九年级物理第二次月考试题
- 优思明对人流后子宫内膜修复的临床观察
- 第十一课经济全球化和对外开放
- 单相SPWM逆变电源
- 场所精神在山地建筑设计中的应用
- 江山路第一小学优秀班主任评选方案
- 九年级政治全册 第四课 伸出你的手问题导读单
- 年会策划方案—拓展培训
- 大型活动风险评估
- 江苏省2011届高三英语一轮阅读理解练习(1)
- 尺寸链及形和位公差检测
- 做一名优秀的员工
- 氧传感器在电控汽车故障检修中的应用
- 《高考调研》衡水重点中学同步精讲精练(数学必修5)课时作业11
- 《电力电子技术》(王兆安)版 课后答案
- 小型农田(河道)水利工程建设验收报告