C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx
- 文档编号:18121471
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:25
- 大小:25.10KB
C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx
《C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
while(i<
10)
{if(i<
1)continue;
if(i==5)break;
i++;
......
A)1B)10C)6D)死循环,不能确定次数
本例考查while循环的用法,以及continue和break的分别。
本题要求的是循环次数,首先要检查while中的判断条件,i<
10是有限循环,然后再观察while内部,if(i<
第一次循环i=0,满足if条件,执行continue直接跳出循环,不再执行循环内部的其它语句,再次执行while(i<
10),而此时i的值仍为0,无疑仍然重复以上步骤,那么i的值没有变化,循环继续,本题是死循环。
D
【例4】假定a和b为int型变量,则执行以下语句后b的值为。
a=1;
b=10;
do{
b-=a;
a++;
}while(b--<
0);
A)9B)–2C)-1D)8
本例考查do-while循环的用法。
第一次循环a=1,b减去a后b=9。
然后执行“while(b--<
”,为假跳出循环。
所以本程序的循环仅执行1次,9-1=8。
【例5】设j为int型变量,则下面for循环语句的执行结果是。
for(j=10;
j>
3;
j--)
if(j%3)
j--;
--j;
printf("
%d"
j);
A)63B)74C)62D)73
本例考查for循环的用法。
本题的难点可能是几个“j--;
”、“--j;
”容易让人混淆第一次循环j=10,j%3后j连续减三次1,得到7,继续第二次循环;
第二次循环j%3后j连续减三次1,得到4,结束循环。
【例6】在下列选项中,没有构成死循环的程序段是。
A)inti=100B)for(;
;
);
inti=100;
while
(1)
i=i%100+1;
if(i>
100)break;
C)intk=1000;
D)ints=36;
do{++k;
while(s);
--s;
}while(k>
=1000);
本例考查死循环。
A)要退出循环必须满足i>
100,但是执行语句“i=i%100+1;
”后,i不可能超过100;
B)没有循环条件,显然为死循环;
C)经过“k++”后,k的值一定是大于1000的,所以也为死循环;
D)中的循环控制为s,s每循环一次则递减,s<
0时,退出循环,所以D不是死循环。
【例7】运行以下程序后,如果从键盘上输入china#<
回车>
,则输出结果为。
#include<
stdio.h>
intv1=0,v2=0;
charch;
while((ch=getchar())!
='
#'
)
switch(ch)
case'
a'
:
h'
o'
v2++;
default:
v1++;
%d,%d\n"
v1,v2);
A)2,0B)5,0C)5,5D)5,2
本例考查switch的用法。
本题的程序是为了检查输入字符中a、h、o的个数。
【例8】以下程序的输出结果是。
inta=0,i;
for(i=1;
i<
5;
i++)
{switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
a+=5;
%d\n"
a);
A)31B)13C)10D)20
本例考查for循环中switch的用法。
可以看出此题和上一例题类型一样,只不过上一例题考的是while和switch,而此题考查的是for和switch。
大家在分析历年考题时会发现很多题型多次重复出现,所以我们在复习的过程中对以前试题要详加分析。
分析本题得到,for一共循环4次,每次循环内部再执行switch,但是有一个问题,本题的case没有break语句结束,所以要从casei一直执行到default,这一点一定要注意!
不难发现,i=1时,a=a+3+5=8;
i=2时,a=a+3+5=16;
i=3时,a=a+2+3+5=16+10=26;
i=4时,a=a+5=31。
A
【例9】以下程序的输出结果是。
inti,j,x=0;
for(i=0;
2;
x++;
for(j=0;
j<
j++)
if(j%2)continue;
x=%d\n"
x);
}
A)x=4B)x=8C)x=6D)x=12
本例考查for嵌套。
本题有两层for循环,内层for循环中嵌套if判断。
首先从i=0,j=0开始,x=x+1=0+1=1;
j%2=0%2,则x=x+1=1+1=2,再执行内层循环,i=0,j=1,x=3;
继续i=0,j=2,j%2=2%2=0,跳出循环;
再执行i=1,x=x+1=3+1=4;
接着i=1,j=0,x=5;
i=1,j=1,x=6,再下来j=2跳出循环,最终x=6。
这一题关键要看x能循环几次。
【例10】运行以下程序后,如果从键盘上输入6514<
intm,n;
Enterm,n:
"
scanf("
%d,%d"
&
m,&
n);
while(m!
=n)
while(m>
n)m-=n;
while(n>
m)n-=m;
m=%d\n"
m);
A)m=3B)m=2C)m=1D)m=0
本例考查while嵌套。
本题主要是为了比较m和n的大小,用了两层while循环,直到m=n了才退出循环(注意循环结束的条件)。
开始循环m=65n=14,65>
14,所以执行”while(m>
n)m-=n;
”,m=m-n=65-14=51,又51>
14,接着m=m-n=51-14=37,直到m<
n,m=9,n=14,继续执行”while(n>
m)n-=m;
”,n=n-m=14-9=5,再执行”while(m>
”,m=m-n=9-5=4。
4<
5,再执行”while(n>
”,n=n-m=5-4=1,接下来m>
n,再继续m=m-n,一直到m=1,此时m=n=1不再循环。
本题还可以这样看,当m>
n时,循环执行m-n,所以65除以14,商4余9,9是最终执行m-n的结果m=9;
再来当n>
m时,循环执行n-m,所以14除以9,商1余5,此时n=5,m=9,接着m>
n,再执行m-n,同样9除以5,商1余4,m=4,n=5,再来用5除以4,余1,此时n=1,最后不难得到m=1,m=n=1,不再循环。
本题可以看作是求m和n的公因数。
【例11】有以下程序
inti=0,s=0;
do{
if(i%2){
continue;
s+=i;
}while(i<
7);
s);
执行后输出结果是。
A)16B)12C)28D)21
本例考查continue。
初始赋值时s=0,由题意知s的值与i有关。
if(i%2){i++;
}则i=1,3,5时,执行s+=i;
即s=1+3+5+7=16。
7)退出循环。
3.1.2填空题
【例1】以下程序运行后的输出结果是。
{inti,m=0,n=0,k=0;
for(i=9;
i<
=11;
switch(i/10)
m++;
n++;
break;
case10:
n++;
break;
k++;
%d%d%d\n"
m,n,k);
本例考查for循环与switch的结合应用。
for循环i从9开始到11,共循环3次,i=9时,i/10的值为0,执行case0,m=1,n=1;
i=10时,i/10的值为1,执行default,k=1,n=2;
i=11时,i/10的值为1,执行default,k=2,n=3。
132
【例2】以下程序的功能是调用函数fun计算:
m=1-2+3-4+…+9-10,并输出结果。
请填空。
intfun(intn)
{intm=0,f=1,i;
=n;
i++)
m+=i*f;
f=【1】;
returnm;
{printf("
【2】);
}
本例考查函数调用中for的应用。
此题要用到for循环,关键问题在于循环的次数和对加减数的处理,显然本题要循环10次,所以,n的值为10。
注意到奇数加,偶数减所以m+=i*f中的f用到正负数变化,f=-f或f*-1或-1*f或f*(-1)或(-1)*f,最终打印的m值是由fun函数计算的,intn的值应该由主函数传入10。
【1】f=-f或f*-1或-1*f或f*(-1)或(-1)*f;
【2】fun(10)
【例3】下面程序的功能是:
计算1到10之间奇数之和及偶数之和,请填空。
inta,b,c,i;
a=c=0;
10;
i+=2)
{a+=i;
;
c+=b;
偶数之和=%d\n"
奇数之和=%d\n"
c-11);
本例考查for的简单应用。
在做填空题的时候,先要看整个程序的流程,然后再考虑如何填入语句以符合题意。
本题要得到的是1-10之间的奇、偶数之和,for(i=0;
i+=2)此语句共执行5次,显然a+=i是为了得到偶数之和,那么c+=b应该是求奇数之和,而且是由前一个我们需要填入的语句决定,b是每次加入的数据,那么要填的语句应该是b的取值,i是0、2、4、6、8,那么b应该是1、3、5、7、9,可以由i得来,所以b=i+1。
b=i+1
【例4】下面程序的功能是:
输出100以内能被3整除且个位数为6的所有整数,请填空。
#include<
{inti,j;
【1】;
{j=i*10+6;
if(【2】)continue;
%d"
本例考查for和continue的结合使用。
本题需要输出100以内能被3整除且个位数为6的所有整数。
先看程序流程。
【1】
(1)i<
10【2】
(2)i%3!
=0
【例5】以下程序运行后的输出结果是_。
{intx=15;
while(x>
10&
&
x<
50)
{x++;
if(x/3){x++;
elsecontinue;
printf(“%d\n”,x);
本例考查break和continue在循环结构中的综合使用。
本题输出15到50以内第一个被3整除不为0的整数且让该整数加1。
17
3.2自测练习与参考答案
3.2.1选择题
1.以下程序的输出结果是。
main()
intx=10,y=10,i;
x>
8;
y=++i)
%d%d"
x--,y);
A)10192B)9876C)10990D)101091
2.以下程序的输出结果是_______。
{intn=4;
while(n--)printf("
--n);
A)20B)31C)321D)210
3.执行下面程序片段的结果是_______。
intx=23;
do
%2d"
x--);
while(!
x);
A)321B)23C)不输出任何内容D)陷入死循环
4.以下程序的输出结果是________。
inti;
6;
if(i%2){printf("
#"
*"
\n"
A)#*#*#B)#####C)*****D)*#*#*
5.以下循环体的执行次数是________。
main()
{inti,j;
for(i=0,j=1;
=j+1;
i+=2,j--)printf("
%d\n"
i);
A)3B)2C)1D)0
6.有如下程序
{inti,sum;
=3;
sum++)sum+=i;
sum);
该程序的执行结果是_______。
A)6B)3C)死循环D)0
7.有以下程序段
intn=0,p;
do{scanf(“%d”,&
p);
}while(p!
=12345&
n<
3);
此处do-while循环的结束条件是______。
(2002年9月)
A)P的值不等于12345并且n的值小于3
B)P的值等于12345并且n的值大于等于3
C)P的值不等于12345或者n的值小于3
D)P的值等于12345或者n的值大于等于3
8.有如下程序
{intn=9;
6)
n--;
n);
该程序段的输出结果是_______。
A)987B)876C)8765D)9876
9.以下程序的输出结果是_______。
for(i='
A'
'
I'
i++,i++)
%c"
i+32);
\n"
A)编译不通过,无输出B)aceg
C)acegiD)abcdefghi
10.有以下程序段
intk=0
while(k=1)k++;
while循环执行的次数是_______。
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行1次
11.以下程序执行后sum的值是_______。
{inti,sum;
i++)sum+=i;
printf(“%d\n”,sum);
A)15B)14C)不确定D)0
12.有以下程序
{inti;
for(i=0;
switch(i)
{case1:
printf("
i);
default:
A)011122B)012C)012020D)120
13.以下程序的输出结果是_______。
{intnum=0;
while(num<
=2)
num++;
num);
A)1B)1C)1D)l
222
33
4
14.以下程序的输出结果是_______。
inta,b;
for(a=1,b=1;
a<
=100;
a++)
{if(b>
if(b%3==1)
b+=3;
A)101B)6C)5D)4
15.有以下程序
{intk=4,n=0;
for(;
n<
k;
)
{n++;
if(n%3!
=0)continue;
k--;
}
k,n);
程序运行后的输出结果是_______。
A)1,1B)2,2C)3,3D)4,4
16.有以下程序
{ints=0,a=1,n;
&
do{
s+=1;
a=a-2;
while(a!
=n);
若要使程序的输出值为2,则应该从键盘给n输入的值是_______。
A)-1B)-3C)-5D)0
17.要求以下程序的功能是计算:
s=1+1/2+1/3+……+1/10
intn;
floats;
s=1.0;
for(n=10;
n>
1;
n--)
s=s+1/n;
%6.4f\n"
程序运行后输出结果错误,导致错误结果的程序行是_______。
A)s=1.0;
B)for(n=10;
n--)C)s=s+1/n;
D)printf("
18.执行以下程序后,输出的结果是。
inty=10;
y--;
}while(--y);
y--);
A)-1B)1C)8D)0
19.执行语句:
i++<
4;
)后,变量i的值是。
A)3B)4C)5D)不定
20.以下程序的输出结果是_______。
voidmain()
{intk=0,m=0;
inti,j;
{for(j=0;
k++;
k-=j;
m=i+j;
k=%d,m=%d"
k,m);
A)k=0,m=3B)k=0,m=5C)k=1,m=3D)k=1,m=5
21.当执行以下程序段时。
intx;
x=-1;
x=x*x;
A)循环体将执行一次B)循环体将执行两次
C)循环体将执行无限次D)系统将提示有语法错误
22.当执行以下程序时_______。
do
x)
A)循环体将执行一次B)循环体将执行两次
C)循环体将执行无限次D)系统将提示有语法错误
23.下述循环程序_______。
for(a=0,b=0;
3&
b!
a++);
A)是无限次循环B)循环次数不定
C)循环3次D)循环4次
24.在下列程序中,没有构成死循环的程序段是_______。
A)inti=100;
B)intk=1000;
while
(1)do
{i=i%100+1;
{++k;
=10000);
C)for(;
while(s);
--s;
25.若程序执行时的输入数据是“2473”,则下述程序的输出结果是_______。
intcx;
while((cx=getchar())!
\n'
switch(cx-'
2'
case0:
putchar(cx+4);
putchar(cx+3);
putchar(cx+2);
A)668977B)668966C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 各章 单元测试 答案 循环 结构 程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)