GCT专业课习题循环结构
- 格式:doc
- 大小:127.50 KB
- 文档页数:23
循环结构程序设计习题与答案1、循环语句的三要素分别是、、.2、for语句括号内的3个表达式的作用分别是、、.3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整地,只有当时,才结束整个循环.4、在循环结构中,break语句的作用是;continue语句的作用是.5、当循环条件一开始就为假时,对于while语句、do…while语句、for语句,分别执行循环体次、次、次.6、下面程序段的执行次数:int a=0;while<a=0>{ printf<"good\n">;a--;}7、下面程序段的执行次数:int a=0;while<a==0>{ printf<"good\n">;a--;}8、下面程序段的执行次数:int a=1;while<a=1>{ printf<"good\n">;a++;}9、下面程序段的执行次数:int a=1;while<a==1>{ printf<"good\n">;a++;}10、下列程序段的运行结果是.for<i=5;i>=0;i-->printf<"%d ",i>;11、下列程序段的运行结果是.for<n=1;n<20;n=n+3>printf<"%d ",n>;12、下列程序段的运行结果是.for<ch='a' ;ch<='e' ;ch++>printf<"%d",ch-97>;13、下列程序段的运行结果是.for<i=1,j=5 ; i<j ; i++,j-->printf<"i=%d j=%d\n",i,j>;14、下列程序段的运行结果是.for<n=1 ; n*n<20 ; n++>printf<"%d \n",n+n>;二、选择题1、下列程序段中,死循环的是〔〕A、for <i=1; ;>B、i=32767;{ if<++i%2==0> continue; doif<++i%3==0> break; { if<i<0> break;} }while<++i>;C、i=1;D、for<i=1; ; >while<i-->; if<++i<10> break;2、下列程序段中,不是死循环的是〔〕A、inti=10;B、for< ; 1;>while<1>{ i=i%100+1;if<i>100> break;}C、int a=0;D、int x=21;do while<x>{ ++a; --x;}while<a>=0>;三、阅读程序,写出程序运行结果.1、#include"stdio.h"main<>{inti=0,sum=1;do{sum+=i;i++;}while<i<5>;printf<"%d\n",sum>;}程序运行结果:2、#include"stdio.h"main<>{inta,b;b=10;a=1;while<a<=b>a*=2;printf<"%d\n",a>;}程序运行结果:3、#include"stdio.h"main<>{int x=2;while<x-->;printf<"%d\n",x>;}程序运行结果:4、#include"stdio.h"main<>{int x=3;do{printf<"%d\n",x-=2>;}while<!x>;}程序运行结果:5、#include"stdio.h"main<>{inti;for<i=1;i<=5;i++>switch<i%5>{case 0:printf<"*">;break; case 1:printf<"#">;break; case 2:printf<"&">;break; default:printf<"\n">;}}程序运行结果:6、#include"stdio.h"main<>{charch;while<<ch=getchar<>>!='!'>putchar<++ch>;}程序运行结果:7、#include"stdio.h"main<>{inti,j;for<i=0;i<=5;i++>{for<j=1;j<10;j++>if<j==5> break;if<i<2> continue;if<i>2> break;printf<"j=%d\n",j>;}printf<"i=%d\n",i>;}程序运行结果:8、#include"stdio.h"main<>{int x ,y;x=37,y=13;while<x!=y>{if<x>y>x=x-y;if<y>x>y=y-x;}printf<"x=%d\n",x>;}程序运行结果:四、编程题1、输出下列图案12 43 6 94 8 12 165 10 15 20 252、输出下列图案*********3、编程求2-4+6-8+…-100+102的值.4、输出公元1500年至2500年所有的闰年的年号.5、从键盘上输入若干学生的C语言成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入.循环结构程序设计〔参考答案〕一、填空题、1.循环条件循环体循环控制变量2.循环变量赋初值循环测试条件循环变量更新3.执行整个周期外层循环条件为假4.提前结束包含它的循环语句的执行提前结束本次循环周期开始执行下一次循环周期5.0 1 06.07. 18.无数9. 110.5432111.1 4 7 10 13 16 1912.0123413.I=1,j=5I=2,j=414.14916二、选择题1. B2. D三、程序运行结果1.112.163.-14.15.#&*6.bgufsoppo7.i=5J=38.x=1四、编程题1.#include"stdio.h"main<>{inti,j;for<i=1;i<=5;i++>{for<j=1;j<=i;j++>printf<"%d ",i*j>;printf<"\n">;}}2.#include"stdio.h"main<>{inti,j;for<i=5;i>=1;i-=2>{for<j=1;j<=i;j++>printf<"*">;printf<"\n">;}}3.#include"stdio.h"main<>{inti,y=1,s=0;for<i=2;i<=102;i+=2>{ s=s+y*i;y*=-1; 〔y=-y>; } printf<"2-4+6+...-100+102=%d",y>;}4.#include"stdio.h"main<>{inti;for<i=1500;i<=2500;i++>if<i%4==0&&i%100!=0||i%400==0> printf<"%d ",i>;}5.#include"stdio.h"main<>{floatcj,min,max=0;printf<"请输入学生成绩,输入负数时结束:\n">; scanf<"%f",&cj>;min=cj;while<cj>=0>{if<cj>max>max=cj;if<cj<min>min=cj;scanf<"%f",&cj>;}printf<"max=%f\nmin=%f",max,min>;}。
第4章循环结构一、选择题1、有以下程序段int k=0;while(k=1)k++;while 循环执行的次数是( A)A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次2、t为int类型,进入下面的循环之前,t的值为0while( t=1){ …… }则以下叙述中正确的是( B)A) 循环控制表达式的值为0B) 循环控制表达式的值为1C) 循环控制表达式不合法D) 以上说法都不对3、在C程序中,与while(m)中表达式m完全等价的是(B )A) m==0 B) m!=0 C) m==1 D) m!=14、有以下程序,程序运行后的输出结果是(C )。
main(){int i=1,sum=0;while(i<=4){sum=sum+i;i=i+1;}printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环5、有以下程序,程序运行后的输出结果是(D )。
main(){ int i=1,sum=0;while(i<=4)sum=sum+i;i=i+1;printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环6、有如下程序main(){int n=9;while(n>6){n--;printf(“%d”,n);}}该程序段的输出结果是(B)A) 987 B) 876 C) 8765 D) 98767、以下程序的输出结果是( B )main(){ int num= 0;while(num<=2){ num++; printf(“%d\n”,num);}}A) 1 B) 1 C)1 D) l2 2 23 348、有以下程序,若运行时输入3.6 2.4<回车>,则输出的结果是( B)。
main(){float x,y,z;scanf(“%f%f”,&x,&y);z=x/y;while(1){if(fabs(z)>1.0){x=y;y=z;z=x/y;}elsebreak;}printf(“%f\n”,y);}A)1.500000 B)1.600000 C)2.000000 D)2.4000009、执行以下程序段时x=-1;do{ x=x*x; }while(! x);则下面描述正确的是(A )A) 循环体将执行一次B) 循环体将执行两次C) 循环体将执行无限次D) 系统将提示有语法错误10、有以下程序段其输出结果是(C )int x=3;do{ printf("%d",x-=2); }while (!(--x));A) 1 B) 3 0 C) 1 -2D) 死循环11、有如下程序main(){int x=23;do{printf(“%d”,x);x--;}while(!x);}该程序的执行结果是(B )A) 321 B) 23 C) 不输出任何内容D) 陷入死循环12、有以下程序段int n=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345 &&n<3);此处do—while循环的结束条件是( D)A) P的值不等于12345并且n的值小于3B) P的值等于12345并且n的值大于等于3C) P的值不等于12345或者n的值小于3D) P的值等于12345或者n的值大于等于313、以下不构成无限循环的语句或语句组是(A)A) n=0;do {++n;}while(n<0);B) n=0;while(1){n++;}C) n=10;while(n);{n--;}D) for(n=0,i=1; ;i++)n+=i;14、若i为整型变量,则以下循环执行的次数是(B)for(i=2;i= =0;) printf(“%d”,i--);A)无限次B)0次C)1次D)2次15、执行语句for(i=1;i++<4;)后,变量i的值是(C)A) 3 B) 4 C) 5 D) 不定16、有以下程序main(){int y=9 ;for( ; y>0 ; y--)if(y%3==0 ) printf("%d" , --y) ;}程序的运行结果是(C)A) 741 B)963 C)852 D)87542117、以下程序执行后sum的值是( C)A)15 B)14 C) 不确定D)0main(){ int i , sum;for(i=1;i<6;i++) sum+=i;printf(“%d\n”,sum);}18、有如下程序{ int i,sum=0;for(i=1;i<=3;sum++) sum+=i;printf(“%d\n”,sum);}该程序的执行结果是(C)A) 6 B) 3 C) 死循环D) 019、执行语句for(i=3;i>0;i--);i--;后,变量i的值是(C )A)0 B)10 C)-1 D)120、执行下面程序片段的结果是(A )。
第5章循环结构程序设计5.1 基本知识点while语句的使用格式和注意事项do-while语句的使用格式和注意事项for语句的使用格式和注意事项break和continue语句在循环语句中的应用循环结构的嵌套使用goto语句实现循环结构穷举法程序设计方法迭代程序设计方法5.2 练习题51. 单项选择题(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__。
循环结构程序设计练习1、编写程序,计算:m=1-2+3-4+…+9-10,并输出结果2、编写程序,输入一行字符,以换行为结尾,分别统计出其中英文字母、空格、数字和其他字符的个数.3、猴子吃桃问题.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃一个.以后每天早上都吃了前一天剩下的一半零一个.到第 10 天早上想再吃时,见只剩下一个桃子了.求第一天共摘多少桃子.4、编写程序,求 Sn=a+aa+aaa+…+aa…aaa(有n 个a)之值,其中 a 是一个数字. 例如:2+22+222+2222+22222(n=5),n 由键盘输入.(提示:需要包含数学库文件 #include <math.h> )5、打印如下图案程序参考(注:答案不唯一,可以有不同设计方法)1、#include <stdio.h>int main(){int m=0,f=1, i,n=10,z=0;for (i=1; i<=n; i++){ m+=i*f;f= -f ;}z=z+m;printf("m=%d\n",z);return 0;}2、#include <stdio.h>int main(){char c;int i=0,j=0,k=0,l=0;printf("请输入一串字符\n");while((c=getchar())!='\n'){if(c>=65&&c<=90||c>=97&&c<=122) i++;else if(c>=48&&c<=57) j++;else if(c==32) k++;else l++;}printf("字母:%d\n 数字:%d\n 空格:%d\n 其他:%d\n",i,j,k,l); return 0;}3、#include <stdio.h>int main(){int i,sum=1;for(i=1;i<10;i++)sum=2*(sum+1);printf("第一天共摘桃子%d 个\n",sum);return 0;}4、#include <stdio.h>#include <math.h>int main(){int n,sum=0,i=1,s;printf("请输入1~9 中的1 个数字:");scanf("%d",&s);printf("请输入位数:");scanf("%d",&n);while(i<=n){sum=sum+s;s=s+2*pow(10,i);i++;}printf("和=%d\n",sum); return 0;}5、#include <stdio.h>int main(){int i,j,k;//输出上半部分for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(" ");for(k=0;k<=2*i;k++)printf("*");printf("\n");}//输出下半部分for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf(" ");for(k=0;k<=4-2*i;k++)printf("*");printf("\n");}return 0;}。
第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,将它们转化为小写字母的格式输出。
循环控制结构练习题1.从键盘上输入一个正整数n,计算其阶乘n!#include<iostream>#include<cmath>using namespace std;int f(int n){int t = 1;for (int i = n; i > 0; i--)t = t*i;return t;(0的阶层为1)}int main(){int n;cout <<"n=";cin >> n;cout << endl;if (n < 0)n = abs(n);cout <<"n!="<<f(n);system("pause");return 0;}2.从键盘上输入一个正整数n,判断是否是素数?法1:#include<iostream>#include<iomanip>using namespace std;void f(int n) {int k = sqrt(n),i;for ( i = 2; i <= k; i++)if (n%i == 0)break;if (i >= k+1)cout <<n<<"是素数"<< endl;else cout <<n<<"不是素数"<< endl;}int main(){int n;cout <<"n=";cin >> n;f(n);system("pause");return 0;}法2;#include<iostream>#include<iomanip>using namespace std;bool f(int n) {int k = sqrt(n), i;for (i = 2; i <= k; i++)if (n%i == 0)break;if (i >= k + 1)return 1;else return 0;}int main(){int n;cout <<"n=";cin >> n;f(n);if(f(n))cout << n <<"是素数"<< endl;else cout << n <<"不是素数"<< endl;system("pause");return 0;}bool f2(int n){int k=sqrt(n),i;for( i=2;i<=k;i++)if(n%i==0)return 0;if(i>=k+1)return 1;1}int main(){int n;while(1){cin>>n;if(n==0)break;if(f2(n))cout <<"是素数!!"<<endl;}system("pause");return 03.编写程序,输入一个整数,求该整数的各位数字和。
习题答案及教程答案习题答案第四章循环结构选择题:1.答案:B①N的值为10,n>7为真,执行循环体,n的值减1后为9,输出n的值9②N的值为9,n>7为真,执行循环体,n的值减1后为8,输出n的值8③N的值为8,n>7为真,执行循环体,n的值减1后为7,输出n的值7④N的值为7,n>7为假,结束循环。
2.答案:Ak的值为5,进入循环,(--k)表达式的值为4(真),同时k的值改变为4,输出表达式k-=3的值1,同时k的值为1。
k为1,表达式(—k)的值为0, 结束循环。
3.答案:A1.X=0,y=5,z=3,(z>0&&x<4)值为真,进入循环体,y值为4,z值为2, x值为12.(z>0&&x<4)值为真,进入循环体, y值为3,z值为1, x值为23.(z>0&&x<4)值为真,进入循环体, y值为2,z值为0, x值为34.(z>0&&x<4)值为假,结束循环。
5.输出x,y,z的值3,2,04.答案:D分析:当K的值为3时,只执行case 3后面的语句n+=k,n的值为3;当k的值为2时,先执行case 2后面的语句,但没有break,所以不会退出,继续执行case 3后面的语句n+=k,n的值为5;当k的值为1时,先执行case 1后面的语句n+=k,n的值为6,先执行case 2后面的语句(没有),继续执行case 3后面的语句n+=k,n的值为7。
输出n的值7。
5.答案:B在循环体中有“s+=1;”s的初始值为0,要让s的值等于2必须是循环体执行两遍。
当循环提执行两遍后a的值等于-3,所以在n=-3的时候循环体执行两遍后条件表达试(a!=0)为假,会退出循环。
6.答案:A分析:t值为1,s的值为0。
从键盘中输入-3后,n的值为-3.先执行循环体。
执行s=s+t;s的值为1,执行t=t-2;t的值为-1.再判断表达式的值t!=n为真,再次执行循环体。
C语言循环结构练习题带标准答案第5章循环结构程序设计5.1基本知识点while语句的使用格式和注意事项do-while语句的使用格式和注意事项for语句的使用格式和注意事项break和continue语句在循环语句中的应用循环结构的嵌套使用goto语句实现循环结构穷举法程序设计方法迭代程序设计方法5.2练习题51.单项选择题(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)。
第三单元循环构造练习题选择题:(有答案) 1、有以下程序履行后的输出结果是( D )。
main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf("%d\n",s);} A .自然数 1~ 9 的累加和 B .自然数 1~ 10 的累加和 C .自然数 1~ 9 中的奇数之和 D.自然数 1~ 10 中的偶数之和 2、以下对于 for 语句的说法不正确的选项是( A )。
A. for 循环只好用于循环次数已经确立的状况 B. for 循环是先判断表达式,后履行循环体语句 C. for 循环中,能够用 break 跳出循环体D. for 循环体语句中,能够保含多条语句,但要用花括号括起来 3、若 i 和 k 都是 int 种类变量,有以下 for 语句 for(i=0,k=-1;k=1;k++) printf("*****\n"); D )。
下边对于语句履行状况的表达中正确的选项是(A. 循环体履行两次B. 循环体履行一次C.循环体一次也不履行D. 组成无穷循环4、若运转以下程序时,输入 2473↙,则程序的运转结果是:(A ) main ( ) { int c;while ((c=getchar( )) ! =’ n ’) switch (c- ‘2’) {case 0 :case 1 : putchar (c+4) ;case 2 : putchar (c+4) ; break ;case 3 : putchar (c+3) ; default : putchar (c+2) ; break ;}pr intf( “ n ”);}A ) 668977B ) 668966C ) 66778777D ) 6688766 5、以下 for 循环的履行次数是:( C ) 。
for (x=0,y=0; (y=123) && (x<4) ; x++) ;A )无穷循环B )循环次数不定C ) 4 次D ) 3 次 6、已知 int t=0 ; while (t=1 ) {...} 则以下表达正确的选项是( B )。
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);上面程序的输出结果是()。
第6章循环结构程序设计6-1.比较while语句、do–while语句和for语句的异同。
答:(1)while语句、do-while语句用于条件循环,for语句用于计数循环。
(2)while语句、for语句是先判断循环条件,后执行循环体,如果循环条件一开始就不成立,则循环体一次也不被执行;而do-while语句是是先执行循环体,后判断循环条件,所以循环体至少被执行一次。
(3)知道循环的次数可选用for语句实现循环,不知道循环的次数可选用while语句或do-while语句实现循环.(4)一般而言,三种循环语句可等价实现.6-2 仔细阅读下面的程序,指出程序的运行结果.#include<>void main(){ int i;for(i=0;++i;i<5){ if(i==3){printf("%d\n",++i);break;}printf("%d\n",++i);}}答:24思考:语句“for(“i=0;++i;i<5”)在编译时为何会给出语法警告错误当将其改为“for(i=0;i<5;++i)”时,运行结果又将如何6-3 仔细阅读下面的语的程序,指出程序的运行结果。
#include""void main(){ int i, a=0;for(i=1;i<=5;i++){do{i++;a++;} while(i<3);}i++;printf("a=%d,i=%d",a,i);}答:a=3,i=7思考:在for循环中嵌套着do-while循环,那么do-while循环中对i的修改会对for循环产生影响吗6-4编写程序,用1000个单词”computer”填充屏幕,每行60个.解:#include<>void main(){ int i;for(i=1;i<=1000;i++){ printf("computer.");if(i%60==0)printf("\n");}}思考:在for循环中,”if(i%60==0)printf(“\n”);”语句的作用是什么没有此语句将会是什么状况6-5输入一行字符(以$结束),统计其中的数字字符、空格字符出现的次数。
C++循环结构23道题(含答案)题目、描述、输入、输出、输入样例、输出样例、测试输入、测试输出循环01:最大数写一个程序,可以输入一批正数,输入0时结束循环,并且输出最大的正数。
输入39 28 5 63 18 27 0输出63测试:输入153 26 963 28 75 90 156 0输出963#includeusing namespace std;int main(){inti,max=0;cin>>i;while(i!=0){if(i>max)max=i;cin>>i;}cout<<max<<endl;< p="">return 0;}循环02:素数输入正数n,判断n是否为素数。
若为素数则输出1,否则输出0。
(提示:素数是指只可以被1和其本身整除的正数(1除外))输入10输出0输入7输出1测试:输入9输出0#includeusing namespace std;int main(){intn,i,d;cin>>n;for(i=2;i<n;i++)< p="">{d=n%i;if(n%i==0)break;}if(n==i)cout<<"1"<<endl;< p="">elsecout<<"0"<<endl;< p="">return 0;}循环03:数列求和输入一个正整数n,计算前n项之和:1+1/4+1/7+1/10..+1/(3*n-2)。
输入5输出1.56978输入4输出1.49286#includeusing namespace std;int main(){inti,n;double s=0;cin>>n;for(i=1;i<=n;i++)s+=1.0/(3*i-2);cout<<s<<endl;< p="">return 0;}循环04:西瓜卖几天n个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?说明:当西瓜个数为奇数时,卖一半为一半的整数,如当西瓜个数为5时,卖一半为卖2个。
循环结构、函数练习题1.以下由while构成的循环执行的次数是:A:无限次B:有语法错,不能执行C:一次也不执行D:执行一次int k=0;while(k=1) k++;2.以下程序的输出结果是:A:15 B:14 C:不确定 D:0{ int i,sum;for (i=1;i<6;i++) sum+=i;printf(“%d\n”);}3. 以下的for循环是:A:无限循环B:循环次数不定C:执行4次D:执行3次for(x=0,y=0;(y!=123)&&(x<4);x++);4. 以下程序段的执行结果是:A:输出321 B:输出23 C:不输出任何内容D:陷入死循环int x=23;do{ printf(“%d”,x ); }while (!x);5. 以下程序段输出的结果是:A:12 B:15 C:20 D:25int i, j,m=0;for(i=1;i<=15;i+=4)for (j=3;j<=19;j+=4) m++;p rintf (“%d\n”,m);6.设j为int型变量,则下面for循环语句的执行结果是:A:6 3 B:7 4 C:6 2 D:7 3for (j=10;j>3;j--){ if (j%3) j--;--j; --j;printf(“%d”,j);}7.若i, j已定义为int类型,则以下程序段中内循环体的执行次数是:A:20 B:24 C:25 D:30for (i=5;i;i--)for (j=0;j<4;j++)8.若x是int型变量,以下程序段的输出结果是:A:**3 B:##3 C:##3 D:**3##4##4 **4 **4##5 **5**5 ##5for(x=3;x<6;x++)printf( ( x%2 ) ? (**%d”) : (“##%d\n”), x);9.以下函数的类型是(1),函数的返回值是(2):(1)A:与参数x的类型相同B:void类型C:int 类型D:无法确定(2)A:0 B:1 C:无法确定D:出错fff (float x){ printf(“%d\n”,x*x); }10. 以下函数调用语句中,含有的实参个数是:A:3 B:4 C:5 D:有语法错func (rec1,rec2+1,(rec3,rec4));11. 以下叙述中正确的是:A:C语言程序总是从第一个定义的函数开始执行B:在C语言程序中,要调用的函数必须在main()函数中定义C:C语言程序中,只有int类型的函数可以未经说明而出现在调用之后D:C语言程序中的main()函数必须放在程序的开始部分12.以下叙述中正确的是:A:C语言程序的函数中必需有return语句B:在C语言程序中,函数的类型必须进行显式说明C:函数中,return语句必须放在函数体的最后D:C语言程序中,return语句中表达式的类型应该与函数的类型一致13.能正确表示数学公式根号下sin(x0)的C语言表达式是:A:sqrt(abs(sin(x*/180)))B:sqrt(sin(x*3.14/180)))C:sqrt(sin(x))D:sqrt(fabs(sin(x*3.14/180)))14.能求出a的3次方的表达式是:A:a^3 B:a**3 C:pow(a,3) D:power(a,3)15.以下正确的函数定义是:A:double sub(int x,y) B:double sub(int x,inty);{ double z; { double z;z=x-y; return z; } z=x-y; return z; }C: double sub(int x, int y) D:double sub(int x, int y) { z=x-y; { double z;return z; } z=x-y; return z; }16.C语言中,形参与实参之间的数据传递方式是:A:只能按值传递B:只能按地址传送C:由使用者指定传递方式D:既可以按值传送也可以按地址传送17.以下程序的输出结果是:A:9 8 B:8 9 C:6 6 D:以上三个都不对#include <math.h>void main(){ double a=-3.0,b=2;printf(“%3.0f,%3.0f\n”,pow(b,fabs(a)),pow(fabs(a),b)); }循环结构、函数练习题答案1. A2. C3. C4. B5. C6. B7. A8. D9.C、C10. A11. C12. D13. D14. C15. D16. D17. B。
循环结构程序设计复习题一.选择题1.以下while循环中,循环体执行的次数是:()k=1;while (--k) k=10;a) 10次 b) 无限次 c) 一次也不执行 d) 1次2.有以下程序段,其中x为整型变量,以下选项中叙述正确的是:()x=0;while (!x!=0) x++;a) 退出while循环后,x的值为0b) 退出while循环后,x的值为1c) while的控制表达式是非法的d) while循环执行无限次3. 有以下程序段,其中n为整型变量,执行后输出结果是:()n=20 ;while(n--) ; printf(“%d”,n) ;a) 2 b) 10 c) -1 d) 04. 有以下程序段,其中t为整型变量,以下选项中叙述正确的是:()t=1;while (-1){ t--;if(t) break;}a) 循环一次也不执行b) 循环执行一次c) 循环控制表达式(-1)不合法d) 循环执行2次5. 有以下程序段,其中x为整型变量,以下选项中叙述正确的是:()x=-1;do{;}while (x++);printf(“x=%d”,x);a) 该循环没有循环体,程序错误b) 输出x=1c) 输出x=0d) 输出x=-16. 有以下程序段,其中x,y为整型变量,程序输出结果是:()for(x=0,y=0;(x<=1)&&(y=1);x++,y--) ;printf(“x=%d,y=%d”,x,y);a) x=2,y=0 b) x=1,y=0c) x=1,y=1 d) x=0,y=0解析:在开始时 x=0,y=0;进入循环判断(x<=1)&&(y= 1) 条件成立,同时把1赋给y,此时x=0,y=1; 然后执行 x++,y--,执行之后x=1,y=0;再进入循环判断(x<=1)&&(y= 1),条件成立,同时同时把1赋给y,此时x=1,y=1;然后执行 x++,y--,执行之后x=2,y=0;再进入循环判断(x<=1)&&(y= 1),条件不成立,跳出循环输出x=2,y=0 。
第五章循环结构一、单项选择题1.int a=1, x=1; 循环语句while(a<10) x++; a++; 的循环执行( )。
A. 无限次B.不确定次C.10次D.9次2.下列语句中,错误的是()。
A.while(x=y) 5;B.do x++ while(x= =10);C.while(0) ;D.do 2;while(a= =b);3.循环语句for(x=0,y=0;(y! =123)| | (x<4); x++); 的循环执行( )。
A.无限次 B.不确定次C.4次 D.3次4.循环语句for(i=0, x=1; i=10 && x>0; i++); 的循环执行( )。
A.无限次 B.不确定次C.10次D.9次5.i、j 已定义为int类型,则以下程序段中内循环体的执行次数是( )。
for(i=5;i;i--)for(j=0;j<4;j++){………}A.20 B.24 C.25 D.306. while循环,执行次数是()i=4; while(--i) printf(“%d”,i);A. 3次B. 4次C. 0次D. 无数次7. 下列程序段执行后s的值为()int i=1, s=0; while(i++) if( !(i%3) ) break ; else s+=i ;A. 2B. 3C. 6D. 以上均不是8. 下列程序输出结果是()#include <stdio.h>void main( ){ int x=3, y=6, z=0;while(x++!=(y-=1)){ z++; if(y<x) break; } printf(“x=%d,y=%d,z=%d”,x,y,z); }A. x=4,y=4,z=1B. x=5,y=4,z=3C. x=5,y=4,z=1D. x=5,y=5,z=19. int i=1,s=0;while (i<100) {s+=i++;if (i>100 ) break;}执行以上程序段后,s的值是( )。
A.1到101的和B.1到100的和C.1到99的和 D.以上均不是10. 假定i和j为int型变量,则执行以下语句后i的值为( )。
int i=1;switch (i++){case 1: for (j=0;j<9;j++) if (i= =1) break;case 2: for (j=1;j<10;j++) if (i= =2) break;case 3: printf (“i=%d\n”,i );}A.0 B.1 C.9 D.1011. 假定a和b为int型变量,则执行以下语句后b的值为( )。
a=1;b=10;do { b - =a;a++;}while (b- -<0);A.9 B.-2 C.-1 D.812. 设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.813. 求整数1至10的和并存入变量s,下列语句中错误的是()。
A、s=0;for(i=1;i<=10;i++) s+=i;B、s=0;i=1;for(;i<=10;i++) s=s+i;C、for(i=1,s=0;i<=10;s+=i,i=i+1);D、for(i=1;s=0;i<=10;i++) s=s+i;14. 若sizeof(int)为2,计算1至10的乘积,下列语句序列中正确的是()。
A、int jc=1; for(int i=2;i<=10;i++) jc*=i;B、for(float jc=1,int i=2;i<=10;i++,jc*=i);C、float jc=1; for(int i=2;i<=10;jc*=i,i=i+1);D、for(float jc=1;i=2;i<=10;i++) jc*=i;15. 下列语句中,哪一个可以输出26个大写英文字母()。
A、for(a=’A’;a<=’Z’;printf(”%c”,++a));B、for(a=’A’;a<’Z’;a++)printf(”%c”,a);C、for(a=’A’;a<=’Z’;printf(”%c”,a++));D、for(a=’A’;a<’Z’;printf(”%c”,++a));16. 与语句while(i>=0&&i<=10) { if(i++==5)continue; printf(”%f\n”,1.0/(i-5));}功能相同的是()。
A、for(;i>=0&&i<=10;i++) if(i!=5) printf(”%f\n”,1.0/(i-5));B、for(;i>=0&&i<=10;i++) if(i==5) printf(”%f\n”,1.0/(i-5));C、for(;i>=0&&i<=10;i++) if(i!=5) printf(”%f\n”,1.0/(i-5)); else break;D、for(;i<=0&&i>=10;i++) if(i!=5) printf(”%f\n”,1.0/(i-5));17. 下列语句中与语句while(1){if(i>=100)break;s+=i;i++;} 功能相同的是()。
A、for(;i<100;i++) s=s+i;B、for(;i<100;i++;s=s+i);C、for(;i<=100;i++) s+=i;D、for(;i>=100;i++;s=s+i);18. 在C语言中,下列说法中正确的是( )。
A.不能使用“do语句while(条件)”的循环B.“do语句while(条件)”的循环必须使用“break”语句退出循环C.“do语句while(条件)”的循环中,当条件为非0时将结束循环D.“do语句while(条件)”的循环中,当条件为0时将结束循环19. C语言中while和do-while循环的主要区别是()。
A) do-while的循环体至少无条件执行一次B) while的循环控制条件比do-while的循环控制条件严格C) do-while允许从外部转到循环体内D) do-while的循环体不能是复合语句20. 以下描述中正确的是()。
A) 若while循环中循环体语句只有一条可执行语句,就可以不使用复合语句B) do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作D) do-while循环中,根据情况可以省略while21 设有程序段int k=10;while(k) k=k-1;则下面描述中正确的是()。
A)while循环执行10次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次22.下列循环语句中有语法错误的是()。
A) while(x=y) 5;B) while(0) ;C) do printf(“%d”,a);while(a--);D) do x++ while(x==10);23. 已知int i=1;执行语句while (i++<4) ;后,变量i的值为()。
A) 3 B) 4 C) 5 D) 624、语句while(!E);中的表达式!E等价于()。
A)E==0 B)E!=1 C)E!=0 D)E==125、下面程序段的运行结果是()。
a=1; b=2; c=2;while(a<b<c) { t=a; a=b; b=t; c--; }printf(“%d,%d,%d”,a,b,c);A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,126、下面程序的运行结果是()。
#include <stdio.h>main(){int num=0;while(num<=2){num++;printf(“%d\n”,num);}}A)1 B)1 C)1 D)12 2 23 327、以下能正确计算1×2×3×…×10的程序段是()。
A)do{i=1; s=1; B)do{i=1; s=0;s=s*i; s=s*i;i++; i++;}while(i<=10); }while(i<=10);C)i=1; s=1; D)i=1; s=0;do{s=s*i; do{s=s*i;i++; i++;}while(i<=10); }while(i<=10);28、下面程序的运行结果是()。
#include <stdio.h>main(){int y=10;do{ y--; }while(--y);printf(“%d\n”,y--);}A)-1 B)1 C)8 D)029、已知int i=1,j=0;执行下面语句后j的值是()。
while(i)switch(i){ case 1: i+=1;j++;break;case 2: i+=2;j++;break;case 3: i+=3;j++;break;default: i--;j++;break;}A) 1 B) 2 C) 3 D) 死循环30、若运行以下程序时,从键盘输入2473<回车>,则下面程序的运行结果是()。
#include <stdio.h>main(){int c;while((c=getchar())!=‘\n’)switch(c-‘2’){case 0:case 1: putchar(c+4);case 2: putchar(c+4); break;case 3: putchar(c+3);default: putchar(c+2); break;}printf(“\n”);}A)668977 B)668966 C)66778777 D)668876631、下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。
#include <stdio.h>main()int m=0,n=0;char c;while(( )!=‘\n’){if(c>=‘A’&&c<=‘Z’) m++;if(c>=‘a’&&c<=‘z’) n++;}printf(“%d\n”,m<n? );}(1) A)c=getchar() B)getchar() C)scanf(“%c”,c)(2) A)n:m B)m:n C)m:m D)n:n32. 下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。