ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:25.10KB ,
资源ID:5151415      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5151415.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言各章节单元测试题及答案循环结构程序设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言各章节单元测试题及答案循环结构程序设计.docx

1、C语言各章节单元测试题及答案循环结构程序设计第3章 循环结构程序设计3.1 典型考试题剖析3.1.1 选择题【例1】若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a;for(b=1;bc时循环结束,那么显然s要加c次1。所以s的值为a与c的和。 答案:B【例2】设x和y均为int型变量,则执行下面的循环后,y值为 。for(y=1,x=1;y=10) break;if(x%2=1)x+=5;continue;x-=3;A) 2 B) 4 C) 6 D) 8 考点:本例考查for循环中break和continue的用法,以及区别。 分析:break用在循环

2、中,只能退出一层循环。尤其是在嵌套循环中,只能退出它所在的那一层循环。不能期望用break从最内层循环一下子退出最外层循环(可以用goto实现)。continue语句只能用在循环中,它的作用是跳过其后面的语句,直接将控制转移到下一轮循环条件的测试。语句“if(x=10) break;”中的break只有当x=10时,才会执行,并且跳出for循环;语句“x+=5;continue;”是每次执行完一次跳过其后面的语句,直接将控制转移到下一轮循环条件的测试for(y=1,x=1;y=50;y+)中。 答案:C【例3】以下程序中,while循环的循环次数是_。main() int i=0;while(

3、i10) if(i1) continue;if(i=5) break;i+;.A) 1 B) 10 C) 6 D) 死循环,不能确定次数 考点:本例考查while循环的用法,以及continue和break的分别。 分析:本题要求的是循环次数,首先要检查while中的判断条件,i10是有限循环,然后再观察while内部,if(i1) continue;第一次循环i=0,满足if条件,执行continue直接跳出循环,不再执行循环内部的其它语句,再次执行while(i10),而此时i的值仍为0,无疑仍然重复以上步骤,那么i的值没有变化,循环继续,本题是死循环。 答案:D【例4】假定a和b为int

4、型变量,则执行以下语句后b的值为 。a=1;b=10;dob-=a;a+;while(b-0); A) 9 B) 2 C) -1 D) 8 考点:本例考查do-while循环的用法。 分析:第一次循环a=1,b减去a后b=9。然后执行“while(b-3;j-)if(j%3)j-;-j;-j;printf(%d ,j);A) 6 3 B) 7 4 C) 6 2 D) 7 3 考点:本例考查for循环的用法。 分析:本题的难点可能是几个“j-;”、“-j;”容易让人混淆第一次循环j=10,j%3后j连续减三次1,得到7,继续第二次循环;第二次循环j%3后j连续减三次1,得到4,结束循环。 答案:

5、B【例6】在下列选项中,没有构成死循环的程序段是 。A) int i=100 B) for(;);int i=100;while(1)i=i%100+1;if(i100) break;C) int k=1000; D) int s=36;do+k; while(s);-s; while(k=1000); 考点:本例考查死循环。 分析:A)要退出循环必须满足i100,但是执行语句“i=i%100+1;”后,i不可能超过100;B)没有循环条件,显然为死循环;C)经过“k+”后,k的值一定是大于1000的,所以也为死循环;D)中的循环控制为s,s每循环一次则递减,s0时,退出循环,所以D不是死循环

6、。 答案:D【例7】运行以下程序后,如果从键盘上输入china#,则输出结果为 。#includemain()int v1=0,v2=0;char ch;while(ch=getchar()!=#)switch(ch)case a:case h:case o: v2+;default: v1+;printf(%d,%dn,v1,v2);A)2,0 B)5,0 C)5,5 D)5,2 考点:本例考查switch的用法。 分析:本题的程序是为了检查输入字符中a、h、o的个数。 答案:D【例8】以下程序的输出结果是 。main()int a=0,i;for(i=1;i5;i+) switch(i)

7、case 0:case 3:a+=2;case 1:case 2:a+=3;default:a+=5;printf(%dn,a);A) 31 B) 13 C) 10 D) 20 考点:本例考查for循环中switch的用法。 分析:可以看出此题和上一例题类型一样,只不过上一例题考的是while和switch,而此题考查的是for和switch。大家在分析历年考题时会发现很多题型多次重复出现,所以我们在复习的过程中对以前试题要详加分析。分析本题得到,for一共循环4次,每次循环内部再执行switch,但是有一个问题,本题的case没有break语句结束,所以要从case i一直执行到defaul

8、t,这一点一定要注意!不难发现,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】以下程序的输出结果是 。main()int i,j,x=0;for(i=0;i2;i+)x+;for(j=0;j3;j+)if(j%2) continue;x+;printf(x=%dn,x); A)x=4 B)x=8 C)x=6 D)x=12 考点:本例考查for嵌套。 分析:本题有两层for循环,内层for循环中嵌套if判断。首先从i=0,j=0开始,x=x+1=0+1=1;j%2=0%2,则x=x+1=

9、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能循环几次。 答案:C【例10】运行以下程序后,如果从键盘上输入65 14,则输出结果为 。main()int m,n;printf(Enter m,n:);scanf(%d,%d,&m,&n);while(m!=n)while(mn) m-=n;while(nm) n-=m;printf(m=%dn,m); A)m=3 B)m=2 C)m=1 D)m=0

10、 考点:本例考查while嵌套。 分析:本题主要是为了比较m和n的大小,用了两层while循环,直到m=n了才退出循环(注意循环结束的条件)。开始循环m=65 n=14,6514,所以执行”while(mn)m-=n;”,m=m-n=65-14=51,又5114,接着m=m-n=51-14=37,直到mm)n-=m;”,n=n-m=14-9=5,再执行”while(mn)m-=n;”,m=m-n=9-5=4。4m)n-=m;”,n=n-m=5-4=1,接下来mn,再继续m=m-n,一直到m=1,此时m=n=1不再循环。本题还可以这样看,当mn时,循环执行m-n,所以65除以14,商4余9,9是

11、最终执行m-n的结果m=9;再来当nm时,循环执行n-m,所以14除以9,商1余5,此时n=5,m=9,接着mn,再执行m-n,同样9除以5,商1余4,m=4,n=5,再来用5除以4,余1,此时n=1,最后不难得到m=1,m=n=1,不再循环。本题可以看作是求m和n的公因数。 答案:C【例11】有以下程序main()int i=0,s=0;do if (i%2) i+; continue; i+;s += i; while(i7);printf(%dn, s);执行后输出结果是 。A)16 B)12 C)28 D)21 考点:本例考查continue。 分析:初始赋值时s=0,由题意知s的值与

12、i有关。if (i%2) i+; continue; 则i=1,3,5时,执行s+=i;即s=1+3+5+7=16。while(i7)退出循环。 答案:A3.1.2填空题【例1】以下程序运行后的输出结果是 。main() int i,m=0,n=0,k=0;for(i=9; i=11;i+)switch(i/10) case 0: m+;n+;break;case 10: n+; break;default: k+;n+;printf(%d %d %dn,m,n,k); 考点:本例考查for循环与switch的结合应用。 分析:for循环i从9开始到11,共循环3次,i=9时,i/10的值为0

13、,执行case 0,m=1,n=1;i=10时,i/10的值为1,执行default,k=1,n=2;i=11时,i/10的值为1,执行default,k=2,n=3。 答案:1 3 2【例2】以下程序的功能是调用函数fun计算:m=1-2+3-4+9-10,并输出结果。请填空。int fun( int n) int m=0,f=1,i;for(i=1; i=n; i+)m+=i*f;f= 【1】 ;return m;main() printf(m=%dn, 【2】 ); 考点:本例考查函数调用中for的应用。 分析:此题要用到for循环,关键问题在于循环的次数和对加减数的处理,显然本题要循环

14、10次,所以,n的值为10。注意到奇数加,偶数减所以m+=i*f中的f用到正负数变化,f = - f或 f*-1 或 -1*f或 f*(-1) 或 (-1)*f,最终打印的m值是由fun函数计算的,int n的值应该由主函数传入10。 答案:【1】f = - f或 f*-1 或 -1*f或 f*(-1) 或 (-1)*f;【2】fun(10)【例3】下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。main()int a,b,c,i;a=c=0;for(i=0;i10;i+=2) a+=i; ;c+=b;printf(偶数之和=%dn,a);printf(奇数之和=%dn,c-11

15、); 考点:本例考查for的简单应用。 分析:在做填空题的时候,先要看整个程序的流程,然后再考虑如何填入语句以符合题意。本题要得到的是110之间的奇、偶数之和,for(i=0;i10;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 main() int i, j;f

16、or(i=0; 【1】 ; i+) j=i*10+6;if( 【2】 ) continue;printf(%d,j); 考点:本例考查for和continue的结合使用。 分析:本题需要输出100以内能被3整除且个位数为6的所有整数。先看程序流程。 答案:【1】(1)i10 & x8;y=+i)printf(%d %d ,x-,y);A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1 2.以下程序的输出结果是_。main() int n=4;while(n-)printf(%d ,-n);A) 2 0 B) 3 1 C) 3 2 1 D) 2 1 0

17、3.执行下面程序片段的结果是_。int x=23;doprintf(%2d,x-);while(!x);A) 321 B) 23 C) 不输出任何内容 D) 陷入死循环4.以下程序的输出结果是_。main()int i;for(i=1;i6;i+)if(i%2)printf(#); continue;printf(*);printf(n);A) #*#*# B) # C) * D) *#*#* 5.以下循环体的执行次数是_。main() int i,j;for(i=0,j=1; i=j+1; i+=2, j-)printf(%d n,i);A) 3 B) 2 C) 1 D) 0 6.有如下程序

18、main() int i,sum;for(i=1;i=3;sum+) sum+=i;printf(%dn,sum);该程序的执行结果是_。A) 6 B) 3 C) 死循环 D) 07.有以下程序段int n=0,p;doscanf(“%d”,&p);n+;while(p!=12345 &n6)n-;printf(%d,n);该程序段的输出结果是_。A) 987 B) 876 C) 8765 D) 98769.以下程序的输出结果是_。main()int i;for(i=A;iI;i+,i+)printf(%c,i+32);printf( n);A) 编译不通过,无输出 B) acegC) ace

19、gi D) abcdefghi10.有以下程序段int k=0while(k=1)k+;while 循环执行的次数是_。A) 无限次 B) 有语法错,不能执行C) 一次也不执行 D) 执行1次11.以下程序执行后sum的值是_。main() int i , sum;for(i=1;i6;i+) sum+=i;printf(“%dn”,sum);A) 15 B)14 C) 不确定 D)012.有以下程序main() int i;for (i=0; i3; i+)switch (i) case 1: printf(%d , i);case 2: printf(%d , i);default : p

20、rintf(%d , i);执行后输出结果是 。A)011122 B)012 C)012020 D)12013.以下程序的输出结果是_。main() int num= 0; while(num=2) num+; printf(%dn,num); A) 1 B) 1 C)1 D) l 2 2 23 34 14.以下程序的输出结果是_。main()int a,b;for(a=1,b=1;a=10) break;if(b%3=1)b+=3;continue;printf(%dn,a); A) 101 B) 6 C) 5 D) 415.有以下程序main() int k=4,n=0;for( ; n1

21、;n-)s=s+1/n;printf(%6.4fn, s); 程序运行后输出结果错误,导致错误结果的程序行是_。 A) s=1.0; B) for(n=10;n1;n-) C) s=s+1/n; D) printf(%6.4fn, s);18.执行以下程序后,输出的结果是 。main()int y=10;doy-;while(-y);printf(%dn,y-);A) -1 B) 1 ) )019.执行语句:for(i=1;i+4;)后,变量i的值是 。A) 3 B) 4 C) 5 D) 不定20.以下程序的输出结果是_。#include void main() int k=0,m=0;int

22、 i, j;for(i=0;i2;i+) for(j=0;j3;j+)k+;k-=j; m=i + j;printf(k=%d, m=%d, k, m); A)k=0,m=3 B)k=0,m=5 C)k=1,m=3 D)k=1,m=521.当执行以下程序段时 。int x;x=-1;dox=x*x;while(!x);A)循环体将执行一次 B)循环体将执行两次C)循环体将执行无限次 D)系统将提示有语法错误22.当执行以下程序时_。x=-1;do x=x*x;while(!x)A) 循环体将执行一次 B)循环体将执行两次C) 循环体将执行无限次 D)系统将提示有语法错误23.下述循环程序_。for(a=0,b=0;a=10000);if(i100) break; C) for(;); D) int s=36;while(s); -s;25.若程序执行时的输入数据是“2473”,则下述程序的输出结果是_。#include void main()int cx;while(cx=getchar()!=n)switch(cx-2)case 0:case 1: putchar(cx+4);case 2: putchar(cx+4); break;case 3: putchar(cx+3);default: putchar(cx+2); A)668977 B)668966 C

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1