搜档网
当前位置:搜档网 › 5-6章 选择结构循环结构

5-6章 选择结构循环结构

5-6章 选择结构循环结构
5-6章 选择结构循环结构

第五章选择结构循环结构

1.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是。(1级)

A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)

B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)

C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)

D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)

2.main( )

{ int x=5,a=0,b=0;

if(x=a+b) prin tf(“** **\n”);

else printf(“## ##\n”);

以上程序。(1级)

A)有语法错,不能通过编译B)通过编译,但不能连接

C)输出** ** D)输出## ##

3.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是。(1级)

main( )

{ int x;

scanf(“%d”,&x);

if(x++>5) printf(“%d”,x);

else printf(“%d\n”,x--);

}

A)7和5 B)6和3 C)7和4 D)6和4

4.假定所有变量均已正确说明,下列程序段运行后x的值是。(1级)

a=b=c=0;x=35;

if(!a) x=-1;

else if(b);

if(c) x=3;

else x=4;

A)34 B)4 C)35 D)3

5.能表示整数x符合下面两个条件的语句是。

(1)“能被4整除,但不能被100整除”.(2)能被4整除,又能被400整除.

A)(x%4==0&&x%100!=0)||x%400==0

B)(x%4==0||x%100!=0)&&x%400==0

C)(x%4==0&&x%400!=0)||x%100==0

D)(x%100==0||x%4!=0)&&x%400==0

6.若I为整型变量,则下列程序段的运行结果为。(03试题)

I=322;

if(I%2==0) printf(“#####”)

else printf(“*****”);

A)##### B)#####*****

C)***** D)有语法错误,无法输出结果

7.已知int x=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为:。

if (x>y||xz)

z=x; x=y; y=z;

A)x=50, y=80, z=80 B)x=50, y=30, z=30

C)x=30, y=50, z=80 D)x=80, y=30, z=50

8.已知int x=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为:。

if (x>y||xz)

{ z=x; x=y; y=z; }

A)x=50, y=80, z=80 B)x=50, y=30, z=30

C)x=30, y=50, z=80 D)x=80, y=30, z=50

9.在C的if语句中,可用作判断的表达式是:。

A)关系表达式B)逻辑表达式

C)算术表达式D)任意表达式

10.在C语言中,多分支选择结构语句为:

switch(c)

{ case 常量表达式1:语句1;

……

case 常量表达式n-1:语句n-1;

default 语句n;}

其中括号内表达式c的类型:。

A)可以是任意类型B)只能为整型

C)可以是整型或字符型D)可以为整型或实型

11.若x=3,y=z=4,则下列表达式的值分别为。

(1)(z>=y>=x)?1:0

(2)y+=z,x*=y

A)0 24 B)1 8 C)0 8 D)1 12

12.程序段如下

int k=-20;

while(k=0) k=k+1;

则以下说法中正确的是。

A)while循环执行20次B)循环是无限循环

C)循环体语句一次也不执行D)循环体语句执行一次

13.程序段如下

int k=1;

while(!k==0) {k=k+1;printf("%d\n",k);}

说法正确的是。)

A)while循环执行2次B)循环是无限循环

C)循环体语句一次也不执行D)循环体语句执行一次

14.在下列程序中,while循环的循环次数是。

main( )

{ int i=0;

while(i<10)

{if(i<1) continue;

if(i= =5) break;

i++; }

......

}

A)1 B)10 C)6 D)死循环、不能确定次数15.程序段如下

int k=0; while(k++<=2) printf("%d\n",k);

则执行结果是。

A)2 B)3 C)4 D)无结果

16.执行下面的程序后,a的值为。

main()

{int a,b;

for(a=1,b=1;a<=100;a++)

{if(b>=20)break;

if(b%3==1)

{b+=3;

continue;

}

b-=5;

}

}

A)7 B)8 C)9 D)10

17.以下程序的输出结果。

main()

{

int x=3;

do

{printf("%3d",x-=2);

}while(--x);

}

A)1 B)30 3 C)1 -2 D)死循环

18.以下程序的输出结果是。

main()

{int i;

for(i=1;i<=5;i++)

{if(i%2)printf("#");

else continue;

printf("*");

}

printf("$\n");

}

A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$

二、填空题

1.设有程序片段如下:

switch(class)

{case 'A':printf("GREAT!\n");

case 'B':printf("GOOD!\n");

case 'C':printf("OK! \n");

case 'D':printf("NO!\n");

default:printf("ERROR!\n");

}

若class的值为'C',则输出结果是。

2.以下程序段的运行结果是。

int x=1,y=0;

switch(x)

{case 1:

switch(y)

{

case 0:printf("x=1 y=0\n");break;

case 1:printf("y=1\n");break;

}

case 2:printf("x=2\n");

}

3.根据以下if语句写出与其功能相同的switch语句(x的值在0~100之间)。if语句:

if(x<60) m=1;

else if(x<70) m=2;

else if(x<80) m=3; C 语言程序设计习题集29

else if(x<90) m=4;

else if(x<100) m=5;

switch语句:

switch((1))

{

(2)m=1;break;

case 6:m=2;break;

case 7:m=3;break;

case 8:m=4;break;

(3)m=5;

}

4.写出结果:--------

#include

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(“%d,%d\n”,a,b);

}

三、编程:

1.编写程序,判断某一年是否是闰年 p106

main( )

{int year,leap;

scanf(“%d”,&year);

if(year%4= =0)

{if(year%100= =0)

{if(year%400= =0)

leap=1;

else leap=0;

}

else leap=1;

}

else leap=0;

if(leap)

printf(“%d is ”,year);

else printf(“%d is not ”,year);

printf(“ a leap year\n”);

}

2. 编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为…A?;80~89分为…B?;70~79分为…C?;60~69分为…D?;60分以下为…E?。(switch 实现)p111 5.6

3.输入一个不多于4位的整数,求出它是几位数,并逆序输出各位数字。P112 5.7

main( )

{int num,a,b,c,d,p;

scanf(“%d”,&num);

if(num<=9999&&num>999) p=4;

else if(num>99) p=3;

else if(num>9) p=2;

else if(num>0) p=1;

printf(“位数是:%d\n”,p);

a=num/1000;

b=num/100%10;

c=num/10%10;

d=num%10;

switch(p)

{case 4:printf(“%d%d%d%d\n”,d,c,b,a);

case 3:printf(“%d%d%d \n”,d,c,b);

case 2:printf(“%d%d\n”,d,c);

case 1:printf(“%d \n”,d);

}

}

4.判断m是否素数

素数:除了1和它本身外,不能被其它整除

所以只需循环判断m是否能够被2到m-1之间的数整除

可缩小范围,只需判断m是否能够被2到根号m之间的数整除即可。(设一个标志位flag, flag 等于0,代表是素数,flag等于1,代表不是素数)

5.请编写一程序,打印出九九乘法口诀表

1*1=1

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9

第i行1*i 2*i 3*i ……. (i-1)*i i*i

6.编写一程序,求1-3+5-7+.........-99+101的值。

#include

mian( )

{int k,sum=0,sign=1;

for(k=1;k<=101;k+=2)

{sum+=k*sign;

sign*=-1;

}

printf(“\nsum=%d”,sum);

}

7.编写程序,计算1!+2!+3!+.......+n!的值,其中n的值由用户输入

mian( )

{int k,l,n;

double sum=0,fact_k=1;

printf(“Please Input n:”);

scanf(“%d”,&n);

for(k=1;k<=n;k++)

{

fact_k=fact_k*k;

sum+=fact_k;

}

printf(“sum=%.2lf”,sum);

}

8.利用e=1+1/1!+1/2!+…+1/n!+….求e的近似值,直到某一项小于10-6

void main()

{float e,t;

int n=1;

e=1;t=1;

while(t>=1e-6)

{

t=t/n;

e=e+t;

n++;

}

9.编程实现下列图形的打印

*

***

******

*******

******

***

*

前四行第i行打印9-2*i个空格 2*i-1个* 后三行。。。。。

第五章 循环结构程序设计编程题(参考答案)

第五章循环结构程序设计 1.用for循环语句编程输出1~20之间的所有整数,两数之间以空格分隔。 #include void main() { int i; for(i=1;i<=20;i++) printf("%d ",i); printf("\n"); } 2.用for循环语句编程输出20~1之间的所有整数,两数之间以空格分隔。 #include void main() { int i; for(i=20;i>=1;i--) printf("%d ",i); printf("\n"); } 3.用for循环语句编程输出A~Z之间的所有字符,两字母之间以空格分隔,要求一行输出8个字符。 #include void main() { char c; for(c='A';c<='A'+25;c++) { putchar(c);

printf(" "); } } 4.输出100~200之间所有能被3和7整除的数(每行输出4个数)。#include void main() { int i,j=0; for(i=100;i<=200;i++) { if(i%21==0) { j++; printf("%12d",i); if(j%4==0) printf("\n"); } } } 5.输出1至1000之间所有满足用3除余2、用5除余3、用7除余2的数(要求每行只输出5个数)。 #include void main()

int i,j=0; for(i=1;i<=1000;i++) { if((i%3==2)&&(i%5==3)&&(i%7==2)) { j++; printf("%12d",i); if(j%5==0) printf("\n"); } } } 6.先读入一个正整数n,然后计算并显示前n个偶数的和。例如n为5,则求2+4+6+8+10的值,即sum=30。 #include void main() { int i,n,sum=0; printf("Please enter an integer n:"); scanf("%d",&n); for(i=1;i<=n;i++) sum+=(2*i); printf("sum=%d\n",sum);

第5章 循环结构程序设计作业参考答案

第5章循环结构程序设计作业参考答案 班级学号姓名 【第140页】 5-1、请画出课本里5.6中给出的3个程序段的传统流程图。 (1)程序1: #include int main() { int i,j,n=0; for (i=1;i<=4;i++) for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 printf("%d\t",i*j); } printf("\n"); return 0; } (2)程序2: #include int main() { int i,j,n=0; for (i=1;i<=4;i++) for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 if (i==3 && j==1) break; //遇到第3行第1列,终止内循环 printf("%d\t",i*j); } printf("\n"); return 0; } (3)程序3: #include int main() { int i,j,n=0; for (i=1;i<=4;i++)

for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 if (i==3 && j==1) continue; //遇到第3行第1列,提前结束执行本次内循环体 printf("%d\t",i*j); } printf("\n"); return 0; } (1)程序1流程图(2)程序2流程图(3)程序3流程图 5-3、输入两个正整数m和n,求其最大公约数和最小公倍数。 #include int main()

第五章循环结构

第五章循环结构 一、选择题 1.C语言中while和do_while循环的主要区别是( )。 A.do_while的循环体至少无条件执行一次 B.while的循环控制条件比do_while的循环控制条件严格 C.do_while允许从外部转到循环体内 D.do_while的循环体不能是复合语句 2.以下描述中正确的是( )。 A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C.在do-while循环体中,是先执行一次循环,再进行判断 D.do-while循环中,根据情况可以省略while 3.语句while (!E); 括号中的表达式!E等价于( ) 。 A.E==0 B.E!=1 C.E!=0 D.E==1 4.以下程序的功能是计算:s= 1+1/2+1/3+……+1/10 main() { int n; float s s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%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); 5.下面程序段的运行结果是( )。 a=1;b=2;c=2; while(a

第5章循环结构程序设计

第5章循环结构程序设计 通过本章实验作业应达目标 1.熟悉while、for、do_while、break、continue语句的作用与使用规范,能使用while语句、for 语句、do_while语句实现循环结构; 2.掌握循环结构和选择结构之间嵌套、多重循环间嵌套的设计方法。 3.进行算法设计训练,能综合所学控制结构语句解决一般问题。 本章必须上交作业 程序5_1.c、5_2.c、5_3.c、5_5.c、5_6.c、5_7.c、5_8.c、5_11.c上传至http://121.251.227.27:8080/c 1.循环设计 循环是在循环条件为真时重复执行一组循环体语句的控制结构,是计算机解题的一个基本结构。循环控制有两种基本方法:计数法和标志法。 (1)计数器控制的循环 事先准确地知道循环次数,因此设计一个循环控制变量,由变量值来控制循环次数。每循环一次,循环变量的值会递增(增值通常为1或-1),当其值达到终值时结束循环。 (2)标志控制的循环 事先不知道准确的循环次数,由某一目标值标记循环的结束。如,例3-23中以变量sum的值达到标记值1000作为循环的结束,例3-24中就是以键盘输入一个负数为标记结束循环。 2.基本算法 程序设计的首要工作是算法设计,离开了算法也就没有了程序。算法,是指完成某一项工作而采取的方法和步骤,具体到程序设计,是对解题过程的准确而完整的描述,并用一种程序设计语言的来实现。 循环主要用来解决程序设计中两类基本的算法:穷举和迭代。 1. 穷举算法 穷举的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。穷举是一种重复型算法,其核心是设计循环,在循环体中依次测试。 例1 输入两个正整数x和y,求其最大公约数。 #include void main() { int x,y,i,flag; flag=1; /*flag是标志变量,当其值为0时表示已找到公约数*/ printf("Please input two numbers:"); scanf("%d%d",&x,&y); for(i=x

第5章 循环结构 习题

第三章循环结构 3.1 选择题 1.以下程序的输出结果是( )。 main() { int n=4; while (n--) printf(〞%d〞,--n); } A.20 B.31 C.321 D.210 2.以下程序的输出结果是( )。 main() {int x=10,y=10,i; for(i=0;x>8;y=++i) printf("%d%d",x--,y); } A.10192 B.9876 C.10990 D.101091 3.当执行以下程序段时。 x=-1; do {x=x*x;} while (!x); A.循环体将执行一次 B.循环体将执行两次 C.循环体将执行无数多次 D.系统将提示有语法错误4.执行以下程序后输出的结果是()。 main() { int y=10; do{y--;}while(--y); printf("%d\n",y--);} A.-1 B.1 C.8 D.0 5.下面程序的输出结果是()。 main() { int x=3,y=6,a=0; while (x++!=(y-=1)) {a+=1; if (y

A.x=4,y=4,a=1 B.x=5,y=5,a=1 C.x=5,y=4,a=3 D.x=5,y=4,a=1 6.若i,j已定义为int类型,则以下程序段中内循环的总的执行次数是()。 for (i=5;i;i--) for (j=0;j<4;j++) {…} A.20 B.24 C.25 D.30 7.请读程序: #include 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); } 上面程序的输出结果是()。 A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 8.若有以下程序段,w和k都是整型变量 w=k; LB: if(w==0) goto LE; w--; printf(〞*〞); goto LB; LE: 则不能与上面程序段等价的循环语句是()。 A. for(w=k;w!=0;w--) print(〞*〞); B. w=k; while(w--!=0) printf(〞*〞); w++; C. w=k; do {w--;printf(〞*〞);} while (w!=0); D.for (w=k;w;--w) printf(〞*〞); 9.下面程序的输出是()。

第五章 循环结构

第五章循环结构 5.1 选择题 1.以下程序的输出结果是( )。 main() { int n=4; while (n--) printf(〞%d〞,--n); } A.20 B.31 C.321 D.210 2.以下程序的输出结果是( )。 main() {int x=10,y=10,i; for(i=0;x>8;y=++i) printf("%d%d",x--,y); } A.10192 B.9876 C.10990 D.101091 3.当执行以下程序段时。 x=-1; do {x=x*x;} while (!x); A.循环体将执行一次 B.循环体将执行两次 C.循环体将执行无数多次 D.系统将提示有语法错误4.执行以下程序后输出的结果是()。 main() { int y=10; do{y--;}while(--y); printf("%d\n",y--);} A.-1 B.1 C.8 D.0 5.下面程序的输出结果是()。 main() { int x=3,y=6,a=0; while (x++!=(y-=1)) {a+=1; if (y

A.x=4,y=4,a=1 B.x=5,y=5,a=1 C.x=5,y=4,a=3 D.x=5,y=4,a=1 6.若i,j已定义为int类型,则以下程序段中内循环的总的执行次数是()。 for (i=5;i;i--) for (j=0;j<4;j++) {…} A.20 B.24 C.25 D.30 7.请读程序: #include 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); } 上面程序的输出结果是()。 A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 8.若有以下程序段,w和k都是整型变量 w=k; LB: if(w==0) goto LE; w--; printf(〞*〞); goto LB; LE: 则不能与上面程序段等价的循环语句是()。 A. for(w=k;w!=0;w--) print(〞*〞); B. w=k; while(w--!=0) printf(〞*〞); w++; C. w=k; do {w--;printf(〞*〞);} while (w!=0); D.for (w=k;w;--w) printf(〞*〞); 9.下面程序的输出是()。

第5章 循环结构

第五章循环结构 一、单项选择题(本大题共20小题,每小题1分,共20分) 1.执行下面程序段后,输出字符B的个数是() x=0; while(x<=5) {printf("B"); x+=2;} A.0个B.3个C.5个D.6个 2.在下述程序中,for循环执行的次数是() main( ) {int i =0,j=10,k=2,s=0; for(; ;) {i+=k; if(i>j) {printf("%d\n",s); break;} s+=i; } } A.4 B.5 C.6 D.7 3.执行下面程序段后,输出字符A的个数是() for(i=0;i<=5;i+=2) printf(“A”); A.0个B.3个C.5个D.6个 4.执行while(表达式)循环的条件是() A.当表达式的值为0时B.仅当表达式的值为1时 C.当表达式的值非0时D.当表达式的值不为1时 5.下列程序段输出的结果是() for(i=1;i<3;i+ +) for(j=1;j<3;j+ +) printf("%d",i+j); A.2 3 3 4 B.2 3 4 C.2 3 D.2 3 4 3 4 6.对do语句while(表达式);结构的循环,下列说法正确的是()A.当表达式的值为非零时不执行循环体

B.循环体至少被执行一次 C.当表达式的值为零时循环体一次也不执行 D.循环体仅被执行一次 7.只能在循环语句中用于结束本轮循环的语句是() A.break; B.continue; C.goto D.if 10.下列程序段的输出结果是() i=1; while(i<3) {j=1; while(j<=i) {printf(“%d”,i+j); j++;} i++; printf(“\n”); } A. 2 3 3 4 B. 2 3 4 C. 2 3 D. 2 3 4 3 4 8.下列程序段的输出结果是() a=100; do a=a+l; while(a>120); printf(“%d”,a); A.100 B.101 C.120 D.121 9.关于break和continue语句,下列说法正确的是() A.在循环体中可以用break语句结束本次循环 B.在循环体中可以用continue语句结束本次循环 C.break语句仅能使用在switch结构中 D.可以使用continue语句跳出switch结构 10.对于for(表达式l;表达式2;表达式3)语句;控制循环结束的表达式是() A.表达式1 B.表达式2 C.表达式3 D.表达式l和表达式3 11.下列语句中不能 ..实现循环结构的语句是() A.if语句 B.while语句 C.do—while语句 D.for语句 12.以下程序的输出结果是() main()

相关主题