![C语言各章节单元测试题及答案——循环结构程序设计_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/28448bf7-2ae6-492e-aea4-df9550ac0baa/28448bf7-2ae6-492e-aea4-df9550ac0baa1.gif)
![C语言各章节单元测试题及答案——循环结构程序设计_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/28448bf7-2ae6-492e-aea4-df9550ac0baa/28448bf7-2ae6-492e-aea4-df9550ac0baa2.gif)
![C语言各章节单元测试题及答案——循环结构程序设计_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/28448bf7-2ae6-492e-aea4-df9550ac0baa/28448bf7-2ae6-492e-aea4-df9550ac0baa3.gif)
![C语言各章节单元测试题及答案——循环结构程序设计_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/28448bf7-2ae6-492e-aea4-df9550ac0baa/28448bf7-2ae6-492e-aea4-df9550ac0baa4.gif)
![C语言各章节单元测试题及答案——循环结构程序设计_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/28448bf7-2ae6-492e-aea4-df9550ac0baa/28448bf7-2ae6-492e-aea4-df9550ac0baa5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章循环结构程序设计3.1 典型考试题剖析3.1.1 选择题【例11若有如下程序段,其中s、a、b、c均已定义为整型变量,且 a、c 均已赋值(c大于0)s=a;for(b=1;b<=c;b+) s=s+1;则与上述程序段功能等价的赋值语句是。A s=a+b; B ) s=a+c; C ) s=s+c; D ) s=b+c;考点:本例考查for循环。分析:初始赋值时s=a,那么s的值一定与a有关,C、D答案中不含a 所以排除掉。只用清楚for循环的次数,不管b以前的值为多少,第一 次循环时b=1,当b>c时循环结束,那么显然s要加c次1。所以s的值 为a与c的和。答案:B【例2】
2、设x和y均为int型变量,则执行下面的循环后,y值为。 for(y=1,x=1;y<=50;y+)if(x>=10) break;if(x%2=1)x+=5;continue;x-=3;A) 2 B) 4 C) 6 D) 8考点:本例考查for循环中break和continue的用法,以及区别。分析:break用在循环中,只能退出一层循环。尤其是在嵌套循环中,只能退出它所在的那一层循环。不能期望用break从最内层循环一下子退出最外层循环(可以用goto实现)。continue语句只能用在循环中, 它的作用是跳过其后面的语句,直接将控制转移到下一轮循环条件的测 试。语句“if(x&
3、gt;=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(i<10)if(i<1) continue;if(i=5) break;i+;A) 1 B) 10 C) 6D)死循环,不能确定次数考点:本例考查 while循环的用法,以及continue和break的分别。分析:本
4、题要求的是循环次数,首先要检查while中的判断条件,i<10是有限循环,然后再观察while内部,if(i<1) continue;第一次循环i=0 ,满足if条件,执行continue直接跳出循环,不再执行循环内部的 其它语句,再次执行while(i<10),而此时i的值仍为0,无疑仍然重复 以上步骤,那么i的值没有变化,循环继续,本题是死循环。答案:D【例4】假定a和b为int型变量,则执行以下语句后 b的值为 0a=1;b=10;dob-=a;a+;while(b-<0);A) 9B)- 2C) -1 D) 8考点:本例考查do-while循环的用法。分析:第一
5、次循环a=1, b减去a后b=9。然后执行“ while(b-<0);”,为假跳出循环。所以本程序的循环仅执行1次,9-1=8。答案:D【例5】设j为int型变量,则下面for循环语句的执行结果for(j=10;j>3;j-)if(j%3)j-;-j;-j;printf("%d ",j);A) 6 3B) 7 4C) 6 2 D) 7 3考点:本例考查for循环的用法。分析:本题的难点可能是几个“ j-; ”、“-j; ”容易让人混淆第一次 循环j=10, j%3后j连续减三次1,得到7,继续第二次循环;第二次循 环j%3后j连续减三次1,得到4,结束循环。答案
6、:B【例6】在下列选项中,没有构成死循环的程序段是A) int i=100B) for(;);int i=100;while(1)i=i%100+1;if(i>100) break;C) int k=1000;D) int s=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<
7、;0时,退出循环,所以D不是死循环。答案:D【例7】运行以下程序后,如果从键盘上输入 左小2#<回车,,则输出结果为 0#include<stdio.h>main()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, 0B)5, 0C)5, 5D)5, 2考点:本例考查switch的用法。分析:本题
8、的程序是为了检查输入字符中a、h、o的个数。答案:D【例8】以下程序的输出结果是 。main()int a=0,i;for(i=1;i<5;i+) switch(i) 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 。大家在分析历年考题时会发 现很多题型多次重复出现,所以
9、我们在复习的过程中对以前试题要详加 分析。分析本题得到,for 一共循环4次,每次循环内部再执行switch , 但是有一个问题,本题的case没有break语句结束,所以要从case i 一直执行到default,这一点一定要注意!不难发现,i=1时,a=a+3+5=& 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;i<2;i+)x+;for(j=0;j<3;j+)if(j%2) continue; x+;prin
10、tf("x=%dn",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=6o这一题关键要看x能循环几次。答案:C【例10】运行以下程序后,如果从键盘上输入65 14
11、<回车,,则输出结果为 0main()int m,n;printf("Enter m,n:");scanf("%d,%d",&m,&n);while(m!=n) while(m>n) m-=n;while(n>m) n-=m;printf("m=%dn",m);A)m=3B)m=2C)m=1D)m=0考点:本例考查 while嵌套。分析:本题主要是为了比较 m和n的大小,用了两层while循环,直到 m=n了才退出循环(注意循环结束的条件)。开始循环m=65n=14, 65>14, 所以执行&q
12、uot; while(m>n)m-=n; " , m=m-n=65-14=51 又 51>14,接着 m=m-n=51-14=37 直至U m<n m=9,n=14,继续执行“ while(n>m)n -=m;" , n=n-m=14-9=5,再执行“ while(m>n)m-=n; " , m=m-n=9-5=4 4<5,再执 行" while(n>m)n -=m;" , n=n-m=5-4=1,接下来 m>n 再名.续 m=m-n 一 直到m=1此时m=n=1不再循环。本题还可以这样看,当m&
13、gt;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的公因数。答案:C【例11】有以下程序 main() int i=0,s=0;do if (i%2) i+; continue; i+; s += i; while(i<7);printf("%dn", s);执行后输出结果
14、是 oA) 16 B ) 12 C ) 28 D ) 21考点:本例考查 continue 。分析:初始赋值时s=0,由题意知s的值与i有关。if (i%2) i+;continue; 则 i=1,3,5 时,执行 s+=i;即 s=1+3+5+7=16 while(i<7) 退出循环。答案:A3.1.2填空题【例11以下程序运行后的输出结果是 。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(&q
15、uot;%d %d %dn",m,n,k);考点:本例考查for循环与switch的结合应用。分析:for循环i从9开始到11,共循环3次,i=9时,i/10的值为0, 执行 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
16、+)m+=i*f;f= 【1】;return m;main() printf("m=%dn",);考点:本例考查函数调用中for的应用。分析:此题要用到for循环,关键问题在于循环的次数和对加减数的处 理,显然本题要循环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】下面程序
17、的功能是:计算1到10之间奇数之和及偶数之和,请填空。main()int a,b,c,i;a=c=0;for(i=0;i<10;i+=2)a+=i;c+=b;printf("偶数之和二%dn",a);printf("奇数之和二%dn",c-11);考点:本例考查for的简单应用。分析:在做填空题的时候,先要看整个程序的流程,然后再考虑如何填 入语句以符合题意。本题要得到的是1 10之间的奇、偶数之和,for(i=0;i<10;i+=2) 此语句共执行5次,显然a+=i是为了得到偶数之和, 那么c+=b应该是求奇数之和,而且是由前一个我们需要填
18、入的语句决 定,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 <stdio.h>main() int i, j;for(i=0; 【1】;i+)j=i*10+6;if( 【2】)continue;printf("%d",j);考点:本例考查for和continue的结合使用。分析:本题需要输出100以内能被3整除且个位数为6的所有整数。先 看程序流程。答案:
19、【1(1)i<102 (2)i%3!=0【例5】以下程序运行后的输出结果是 。main() int x=15;while(x>10 && x<50)x+;if(x/3)x+;break;else continue;printf("dn”,x);考点:本例考查break和continue在循环结构中的综合使用。分析:本题输出15到50以内第一个被3整除不为0的整数且让该整数 加1。答案:173.2自测练习与参考答案3.2.1 选择题1 .以下程序的输出结果是 。main()int x=10,y=10,i;for(i=0;x>8;y=+i) pri
20、ntf("%d %d ",x-,y);A) 10 1 9 2 B) 9 8 7 6C) 10 9 90D) 10 10 9 12 .以下程序的输出结果是 。main() int n=4;while(n-)printf("%d ",-n);A) 2 0B) 3 1C) 3 2 1D) 2 1 03 .执行下面程序片段的结果是。int x=23;doprintf("%2d",x-);while(!x);A) 321 B) 23 C)不输出任何内容D) 陷入死循环4 .以下程序的输出结果是 。main()int i;for(i=1;i<
21、;6;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) 3B) 2C) 1D) 06. 有如下程序main() int i,sum;for(i=1;i<=3;sum+) sum+=i;printf("%dn",sum
22、);该程序的执行结果是。A) 6 B) 3 C)死循环D) 07. 有以下程序段int n=0,p;doscanf( “ %d” ,&p);n+;while(p!=12345 &&n<3);此处 do-while 循环的结束条件是。( 2002年 9 月)A) P 的值不等于12345并且n 的值小于3B) P 的值等于12345 并且 n 的值大于等于3C) P 的值不等于12345或者n 的值小于3D) P 的值等于12345或者 n 的值大于等于38. 有如下程序main() int n=9;while(n>6)n-;printf("%d&q
23、uot;,n);该程序段的输出结果是。A) 987 B) 876 C) 8765D) 98769. 以下程序的输出结果是。main()int i;for(i='A'i<'I'i+,i+)printf("%c",i+32);printf(" n");A) 编译不通过,无输出B) acegC) acegiD) abcdefghi10. 有以下程序段int k=0while(k=1)k+;while 循环执行的次数是。A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行 1 次11.以下程序执行后sum的值是。
24、main() int i , sum;for(i=1;i<6;i+) sum+=i;printf( “dn” ,sum);A) 15B)14C)不确定D) 012.有以下程序main() int i;for (i=0; i<3; i+)switch (i) case 1: printf("%d ", i);case 2: printf("%d ", i);default : printf("%d ", i);)120执行后输出结果是 oA) 011122 B ) 012 C ) 012020 D13.以下程序的输出结果是
25、。main() int num= 0;while(num<=2)num+; printf("%dn",num);A) 1B) 1C)1D) l2 223 3414 .以下程序的输出结果是 。main()int a,b;for(a=1,b=1;a<=100;a+)if(b>=10) break;if(b%3=1)b+=3;continue;printf("%dn",a);A) 101B) 6C) 5D) 415 .有以下程序main() int k=4,n=0;for( ; n<k ;)n+;if(n%3!=0) continue;
26、k-; printf("%d,%dn",k,n);程序运行后的输出结果是 。A) 1,1B) 2,2C) 3,3D) 4,416 .有以下程序main() int s=0, a=1, n;scanf("%d", &n);dos+=1; a=a-2; while(a!=n);printf("%dn", s); 若要使程序的输出值为2,则应该从键盘给n输入的值是 A) -1 B) -3 C) -5 D) 017 .要求以下程序的功能是计算:s= 1+1/2+1/3+1/10main()int n;float s;s=1.0;for
27、(n=10;n>1;n-)s=s+1/n;printf("%6.4fn", s);程序运行后输出结果错误,导致错误结果的程序行是 。A) s=1.0; B) for(n=10;n>1;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) 1C) 8D)019 .执行语句:for(i=1;i+<4;) 后,变量i的值是。A) 3 B) 4 C) 5D
28、)不定20 .以下程序的输出结果是 。#include <stdio.h>void main() int k=0,m=0;int i, j;for(i=0;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=3B)k=0,m=5C)k=1,m=3D)k=1,m=521 .当执行以下程序段时 。int x;x=-1;do x=x*x;while(!x);A)循环体将执行一次 两次C)循环体将执行无限次 法错误22.当执行以下程序时 <x=-1;dox=
29、x*x;while(!x)B)循环体将执行D)系统将提示有语A)循环体将执行一次B)C)循环体将执行无限次D)23 .下述循环程序。for(a=0,b=0;a<3 && b!=3; a+);A)是无限次循环B)C)循环3次D)循环体将执行两次系统将提示有语法错误循环次数不定循环4次24 .在下列程序中,没有构成死循环的程序段是 <A) int i=100;B) intk=1000;while(1)doi=i%100+1;+k;while(k>=10000); if(i>100) break;C) for(;);D) ints=36;while(s); -
30、s;25. 若程序执行时的输入数据是“2473”,则下述程序的输出结果是 。#include <stdio.h>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)668977B)668966C)6677877D)668876626. 从以下给出的表达式中选择与while(E) 语句
31、中的 (E) 不能等价的表达式A) (!E=0)B) (E>0)| (E<0)C)(E=0)D)(E!=0)27. 以下叙述正确的是。A) do-while语句构成的循环不能用其他语句构成循环。B) do-while语句构成的循环只能用break 语句退出。C) 用 do-while 语句构成的循环,在 while 后的表达式为非0 时结束循环。D) 用 do-while 语句构成的循环,在while 后的表达式为0 时结束循环。28. 对 for( 表达式 1; ;表达式3)可理解为 。A) for( 表达式1; 0 ;表达式3)B) for( 表达式1; 1 ;表达式3)C)
32、for( 表达式 1;表达式1 ;表达式3)D) for( 表达式 1;表达式3 ;表达式3)29. C 语言中用于结构化程序设计的三种基本结构是。A) 顺序结构、选择结构、循环结构B) if 、 switch 、 breakC) for 、 while 、 do-whileD) if 、 for 、 continue30. 以下程序的功能是:按顺序读入10 名学生 4 门课程的成绩,计算出每位学生的平均分并输出,程序如下:main() int n,k;float score ,sum,ave;sum=0.0;for(n=1;n<=10;n+)for(k=1;k<=4;k+)sca
33、nf( "f',&score); sum+=score;ave=sum/4.0;printf("NO%d:%fn",n,ave);上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正 确。这条语句是。A) sum=0.0;B) sum+=score;C) ave=sun/4.0;D) printf("NO%d:%fn",n,ave);3.2.2填空题1 .要使以下程序段输出10个整数,请填入一个整数。for(i=0;i<=; printf("%dn", i+=2);2 .下面程序的功能是
34、计算1到20之间的奇数之和偶数之和,请填空。#include <stdio.h>void main()int a,b,c,i;a=c=0;for(i=0;i<=10;i+=2)a+=i;c+=b;printf("偶数之和:dn",a);printf("奇数之和:%dn”,c-21);3 .下面程序的输出结果是 #include <stdio.h>void main()int a=100,b=0;dob=b+a;a-;while(a>2);printf("%dn",b);4 .设有如下程序段:int i=0,s
35、um=1;dosum+=sum;i+;while(i<6);printf("%dn",sum);上述程序段的输出结果是 。5 .已知如下公式:口/2 = 1+1/3+(1/3)(2/5)+ (1/3)(2/5)(3/7)+(1/3)(2/5)(3/7)(4/9)+函数pi的功能时根据上述公式计算满足精度要求的口值。请填空。double pi(double eps)double s=0.0,t=1.0;int n;for(n=1; 【1;n+)s+=t;t=n*t/(2*n+1)return【2】;6 .执行以下程序后,输出#'号的个数是 #include &l
36、t;stdio.h>main()int i,j;for(i=1; i<5; i+)for(j=2; j<=i; j+) putchar('#');7 .以下程序的功能是调用函数fun计算:m=1-2+3-4i+19-20,并输出结果,请 填空。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", ); 8.下述程序利用二分法求方程 在(10, 10)之间的根。请填空。 #include <stdio.
37、h> #include <math.h> void main() float eps=1.0E-5;float x0=0.0,x1=3.0,x=(x0+x1)/2.0;float mid=(5*x-4)*x+3)*x-6;while( 【1】)if(5*x0-4)*x0+3)*x0-6)*2】<0)x1=x; else x0=x; x=(x0+x1)/2.0; 【3=(5*x-4)*x+3)*x-6; printf("root=%f",x);9 .下述程序接收来自键盘的输入,直到按 <Ctrl>+Z (值为1)键为止。这些字 符被原样输出,但若有连续的一个以上的空格时只输出一个空格。请填空。#include <conio.h>#include <
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学研学活动方案6篇
- 工程造价咨询服务合同范本9篇
- 学校矛盾纠纷排查工作情况汇报三篇
- 中国小动物技能大赛骨科专赛理论考试题库(含答案)
- 《反电信网络诈骗法》知识考试题库150题(含答案)
- 大拇指腱鞘炎偏方课件
- 2025年河北女子职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 2025年江西现代职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- 2025年江西冶金职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 2025年武汉职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年度新能源汽车充电站运营权转让合同样本4篇
- 第5课 隋唐时期的民族交往与交融 课件(23张) 2024-2025学年统编版七年级历史下册
- 2024年全国职业院校技能大赛高职组(生产事故应急救援赛项)考试题库(含答案)
- 老年上消化道出血急诊诊疗专家共识2024
- 广东省广州黄埔区2023-2024学年八年级上学期期末物理试卷(含答案)
- 学校安全工作计划及行事历
- 《GMP基础知识培训》课件
- 数学家华罗庚课件
- 贵州茅台酒股份有限公司招聘笔试题库2024
- 《纳米技术简介》课件
- 血液透析高钾血症的护理查房
评论
0/150
提交评论