C语言循环结构测习题带答案
- 格式:doc
- 大小:41.50 KB
- 文档页数:6
C语言之循环结构测试一、选择题(1)有以下程序段int n,t=1,s=0;scanf("%d",&n);do{ s=s+t; t=t-2; }while (t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是A)任意正奇数B)任意负偶数C)任意正偶数D)任意负奇数(2)设变量已正确定义,则以下能正确计算f = n!的程序段是A)f=0; B)f=1;for(i=1;i<=n;i++) f*=i; for(i=1;i<n;i++) f*=i;C)f=1; D)f=1;for(i=n;i>1;i++) f*=i; for(i=n;i>=2;i--) f*=i;(3)有以下程序main(){ int k=5,n=0;while(k>0){ switch(k){ default : break;case 1 : n+=k;case 2 :case 3 : n+=k;}k--;}printf("%d\n",n);}程序运行后的输出结果是A)0B)4C)6D)7(4)有以下程序main()int a=1,b;for(b=1;b<=10;b++){if(a>=8) break;if(a%2==1) { a+=5; continue;}a-=3;}printf("%d\n",b);}程序运行后的输出结果是A)3B)4C)5D)6(5) 有以下程序main (){ int s=0,a=1,n;scanf("%d",&n);do{ s+=1; a=a-2; }while(a!=n);printf("%d\n",s);}若要使程序的输出值为2,则应该从键盘给n输入的值是A) -1B) -3C) -5D) 0(6) 若有如下程序段,其中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;(7) 有以下程序main(){ int k=4,n=4;{ n++;if(n%3!=0) continue;k--; }printf("%d,%d\n",k,n);}程序运行后的输出结果是A) 1,1B) 2,2C) 3,3D) 4,4(8) 要求以下程序的功能是计算:main (){ int n; float s;s=1.0;for(n=10;n>1;n--)s=s+1/n;print("%6.4f\n",s);}程序运行后输出结果错误,导致错误结果的程序行是A) s=1.0;B) for(n=10;n>1;n--)C) s=s+1/n;D) printf("%6.4f/n",s);(9)有以下程序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);}}执行后输出结果是A) 011122B) 012C) 012020D) 120(10)有以下程序{ int i=0,s=0;do{if(i%2){i++;continue;}i++;s +=i;}while(i<7);printf("%d\n",s);}执行后输出结果是A) 16B) 12C) 28D) 21(11) 以下程序的功能是:按顺序读入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++){ scanf(“%f”,&score); sum+=score;}ave=sum/4.0;printf(“NO%d:%f\n”,n,ave);}}上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。
第6章循环结构程序设计1.以下叙述正确的是()A、do-while语句构成的循环不能用其它语句构成的循环代替。
B、d o-while语句构成的循环只能用break语句退出。
C、用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D、用do-while语句构成的循环,在while后的表达式为零时结束循环。
答案:D2.以下程序的输出结果是( )A、10,1 9,2B、9,8 7,6C、10,9 9,0D、10,10 9,1main( ){int x=10,y=10,i;for(i=0;x>8;y=++i)printf("%d,%d",x--,y);}答案:D注解:循环执行2次,由x控制循环的执行次数;输出值为两次循环过程中x每次的自减值和y在for语句的第三个表达式中得到的i自增变化后的值。
3.以下程序的输出结果是( )A、2 0B、3 1C、3 2 1D、2 1 0main( ){ int n=4;while(n--) printf("%d ",--n);}答案:A4.以下程序的输出结果是( )A、#*#*#B、#####C、*****D、*#*#*main( ){ int i;for(i=1;i<6;i++){ if(i%2) {printf("#");continue;}printf("*");}printf("\n");}答案:A注解:循环控制变量i的值从1变化到5,i为1、3、5时,i%2为1,if语句的条件为真,则执行if后的子句,输出#,然后执行continue语句,终止本次循环的执行,进入下一轮循环,i为2、4时,i%2为0,if语句的条件为假,则if后的子句并不执行,直接输出*,所以最后的输出为#*#*#。
5.以下程序的输出结果是( )A、编译不通过,无输出B、acegC、acegiD、abcdefghimain( ){ int i;for(i='A';i<'I';i++,i++) printf("%c",i+32);printf(" \n");}答案:B注解:循环控制变量i的取值为A、C、E、G,将它们转化为小写字母的格式输出。
C循环结构程序设计试题以及参考答案C循环结构程序设计试题以及参考答案实验内容:1.编程:输出200以内所有能被7整除的数。
#includemain(){int i;for(i=1;i<200;i++)if(i%7==0)printf("%4d",i);}2. 编程:求出1 ~ 1000之间能被13整除的最⼤的那个数。
#includemain(){int i,max=0;for(i=1;i<1000;i++)if(i%13==0){i>=max;max=i;}printf("max=%d",max);}3.编程:找出若⼲个⾮零数中的最⼩值m以及它们的平均值a。
要求:若⼲个数由键盘输⼊,每次输⼊⼀个赋给变量x,x为零时,结束输⼊。
#includemain(){int n,i,b,min,s=0;float a;printf("输⼊的数据的个数n=");scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&b);if(i==1)min=b;if(min>b)min=b;s=s+b;}a=s*1.0/n;printf("min=%d\n a=%f",min,a); }4. 编程:求两个正整数m、n之间所有奇数之和x与偶数之和y。
要求:(1)m、n的值由键盘输⼊。
(2)输⼊时,允许⽤户随意先输⼊⼤的或⼩的整数。
#include main(){int m,n,i,x1=0,x2=0;printf("input m,n(mscanf("%d,%d",&m,&n);for(i=m;i<=n;i++){if (i%2==1)x1+=i;elsex2+=i;}printf("x1=%d,x2=%d\n",x1,x2);}5. 编程:计算π的近似值,π的计算公式为:要求:(1)n值由键盘输⼊。
题目、描述、输入、输出、输入样例、输出样例、测试输入、测试输出循环01:最大数写一个程序,可以输入一批正数,输入0时结束循环,并且输出最大的正数。
输入39 28 5 63 18 27 0输出63测试:输入153 26 963 28 75 90 156 0输出963#include<iostream>using namespace std;int main(){int i,max=0;cin>>i;while(i!=0){if(i>max)max=i;cin>>i;}cout<<max<<endl;return 0;}循环02:素数输入正数n,判断n是否为素数。
若为素数则输出1,否则输出0。
(提示:素数是指只可以被1和其本身整除的正数(1除外))输入10输出0输入7输出1测试:输入9输出0#include<iostream>using namespace std;int main(){int n,i,d;cin>>n;for(i=2;i<n;i++){d=n%i;if(n%i==0)break;}if(n==i)cout<<"1"<<endl;elsecout<<"0"<<endl;return 0;}循环03:数列求和输入一个正整数n,计算前n项之和:1+1/4+1/7+1/10..+1/(3*n-2)。
输入5输出1.56978输入4输出1.49286#include<iostream>using namespace std;int main(){int i,n;double s=0;cin>>n;for(i=1;i<=n;i++)s+=1.0/(3*i-2);cout<<s<<endl;return 0;}循环04:西瓜卖几天n个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?说明:当西瓜个数为奇数时,卖一半为一半的整数,如当西瓜个数为5时,卖一半为卖2个。
第 5 章循环结构程序设计练习题1.单项选择题( 1)语句 while (!e);中的条件!e等价于A。
A. e==0B. e!=1C. e!=0D. ~e( 2)下面有关for循环的正确描述是D。
A. for循环只能用于循环次数已经确定的情况B. for循环是先执行循环体语句,后判定表达式C. 在 for循环中,不能用break 语句跳出循环体D. for循环体语句中,可以包含多条语句,但要用花括号括起来(3)C语言中D。
A.不能使用do-while语句构成的循环B. do-while 语句构成的循环必须用break 语句才能退出C. do-while 语句构成的循环,当while 语句中的表达式值为非零时结束循环D. do-while 语句构成的循环,当while 语句中的表达式值为零时结束循环( 4) C 语言中 while 和 do-while 循环的主要区别是A 。
A. do-while的循环体至少无条件执行一次B. while的循环控制条件比do-while的循环控制条件严格C. do-while允许从外部转到循环体内D. do-while的循环体不能是复合语句( 5)以下程序段C。
int x=-1;do{x=x*x;}while (!x);A.是死循环B. 循环执行二次C. 循环执行一次D. 有语法错误( 6)下列语句段中不是死循环的是__C__。
A.i=100;while (1){i=i%100+1;if (i==20) break;}B.for (i=1;;i++)sum=sum+1;C.k=0;do{++k;} while (k<=0);D.s=3379;while (s++%2+3%2)s++;( 7)与以下程序段等价的是__A__。
while (a){if (b) continue;c;}A.while (a)B.while (c){ if (!b) c; }{ if (!b) break; c; }C. while (c)D. while (a){ if (b) c; }{ if (b) break; c; }( 8)以下程序的输出结果是_B___。
循环习题集锦一. 选择题1. for(i=0;i<10;i++);结束后,i 的值是;(10)A 9B 10C 11D 122.下面程序的循环次数是:(D)int k=0;while(k<10){if(k<1) continue;if(k==5) break;k++;)A. 5 B 6 C 4 D死循环,不能确定循环次数3.下面程序的输出结果是(10)main(){int s,k;for(s=1,k=2;k<5;k++)s+=k;printf("%d\n”,s))A 1B 9C 10D 154.要使下面程序输出10个整数则在下画线处填入正确的数是(c)for(i=0;i<=;)printf("%d\n”,i+=2);A 9B 10C 18D 205.运行下面程序:(B)main(){ int i=10,j=0;do{ j=j+i;i--;}while(i>5);printf("%d\n”,j);}输出结果是:A 45B 40C 34D 556.运行下面程序#include “stdio.h”main(){ int k=0,a=1;while(k<10){for( ; ;){ if((k%10)==0)break;elsek--;)k+=11;a+=k;)printf("%d %d\n”,k,a);)则输出的结果是(C)A 21 32B 21 33C 11 12D 10 117.以下叙述正确的是:(D)A.do---while语句构成的循环不能用其他语句构成的循环来代替。
B.do---while语句构成的循环只能用break语句退出。
C.用do---while语句构成的循环,在while后的表达式为非零时结束循环。
D.用do---while语句构成的循环,在while后的表达式为零时结束循环。
8.有如下程序:main(){ int x=3;do{printf("%d”,x--);}while(!x);)该程序的执行结果是:(C)A 3 2 1B 2 1 0C 3D 29.若k为整型变量,则下面while循环执行的次数为:(A)k=10;while(k==0) k=k-1;A 0B 1C 10 D无限次10.下面有关for循环的正确描述是(D)A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体。
一、单选题1、下面程序的运行结果是 ( )。
#include <stdio.h>int main( ){int i=5;while(i>0);printf("%d",i--);return 0;}A.5B.死循环C.0D.-1正确答案:B2、关于下面程序段,正确的是()。
int k=10;while(!k)k--;A.循环体执行1次B.循环体执行10次C.循环体一次也不执行D.死循环正确答案:C3、下面程序的运行结果是( )。
#include <stdio.h>int main( ){int x=3;do{printf("%3d",x-=2);}while(!(--x));return 0;}A.1 -2B.死循环C.10D.1正确答案:A4、下面程序的运行结果是( )。
#include <stdio.h>int main( ){int i=10;while(i-->0);printf("%d ",i);return 0;}A.10B.0C.10987654321D.-1正确答案:D5、已定义int j; 下面程序段的输出结果是()。
for(j=7;j<10;j++)printf("%d",j);A.91011B.8910C.789D.无结果正确答案:C6、下面程序的输出结果是()。
#include <stdio.h>int main( ){int i,j,s=0;for(j=1,i=7;j<=i;j++,i--)s=s+i+j;printf("%d",s);return 0;}A.死循环B.28C.0D.32正确答案:D二、判断题1、while循环语句至少无条件执行一次循环体。
正确答案:×2、for循环语句只能用于循环次数已经确定的情况。
2021年C语言考试循环结构训练习题库及答案(精品)1 选择题1.以下程序的输出结果是( )。
main(){ int n=4;while (n--)printf(〞%d〞,--n);}A.20B.31C.321D.2102.以下程序的输出结果是( )。
main(){int x=10,y=10,i;for(i=0;x>8;y=++i)printf("%d%d",x--,y);}A.10192B.9876C.10990D.1010913.当执行以下程序段时。
x=-1;{x=x*x;}while (!x);A.循环体将执行一次B.循环体将执行两次C.循环体将执行无数多次D.系统将提示有语法错误4.执行以下程序后输出的结果是()。
main(){ int y=10;do{y--;}while(--y);printf("%d\n",y--);}A.-1B.1C.8D.05.下面程序的输出结果是()。
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=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=4,a=1 6.若i,j已定义为int类型,则以下程序段中内循环的总的执行次数是()。
for (i=5;i;i--)for (j=0;j<4;j++){…}A.20B.24C.25D.307.请读程序:#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);上面程序的输出结果是()。
循环结构测试一、选择题(2’*20)1. C语言的for语句中的表达式可以部分或全部省略,但两个( C )不可省略。
但当三个表达式均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。
A) <B) ++C) ;D) ,2. 下列程序的输出结果是( B )#include "stdio.h"main(){ int i=6;while(i- -)printf("%d",- -i);printf("\n");}A)531B)420C)654321D)死循3. 下面有关for循环的正确描述是( D )。
A) for循环只能用于循环次数已经确定的情况B) for循环是先执行循环体语句,后判定表达式C) 在for循环中,不能用break语句跳出循环体D) for循环体语句中,可以包含多条语句,但要用花括号括起来4.设有程序段int k=10;while(k=0) k=k-1;则下面描述正确的是( C )。
A) while 循环执行10次B) 循环是无限循环C) 循环体语句一次也不执行D) 循环体语句执行一次5.下列程序段的运行结果是( C )int n=0;while(n++<3);printf("%d",n)A. 2B. 3C. 4D. 以上都不对6.以下程序段的输出结果是( A ).main(){ int i=5;for ( ;i<=15; ){ i++;if (i%4==0) printf("%d ",i);else continue;}}A. 8 12 16B. 8 12C. 12 16D. 87.以下不是无限循环的语句为( A )。
A) for(y=0,x=1;x>++y;x=i++) i=x;B) for( ; ;x++=i);C) while(1){x++;}D) for(i=10; ; i--) sum+=i;8.以下正确的描述是( B )。
第3章循环结构程序设计3.1 典型考试题剖析3.1.1 选择题【例1】若有如下程序段,其中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】设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>=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) 6 D) 死循环,不能确定次数✧考点:本例考查while循环的用法,以及continue和break的分别。