文档库 最新最全的文档下载
当前位置:文档库 › 循环结构程序设计习题及答案

循环结构程序设计习题及答案

第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);

}

}

答:2

4

思考:语句“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输入一行字符(以$结束),统计其中的数字字符、空格字符出现的次数。

解:#include<>

void main()

{ char c;

int d=0,s=0;

printf("请输入字符(当输入$时结束):");

while ((c=getchar())!='$')

{

if(c>='0'&&c<='9')s++;

if(c==' ') d++ ;

}

printf("数字字符出现的次数为%d\n",d);

printf("空格字符出现的次数为%d\n",s);

}

若输入字符:12 345 abcd 678 xyz$

则运行结果为:数字字符出现的次数为8

空格字符出现的次数为4

思考:此题中的循环次数是如何控制的有何特点

6-6编写程序,求1000以内的奇数之和及偶数之和。

解:#include<>

void main()

{long n=0,m=0;

int i;

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

{if(i%2==0) n=n+i;

else m=m+i;

}

printf("奇数之和为%ld\n",m);

printf("偶数之和为%ld\n",n);

}

运行结果:奇数之和为250000

偶数之和为249500

思考:在此题中为何选用for循环进行控制用while循环或do-while循环是否也可以

6-7 计算π,计算公式π/4=1-1/3+1/5-1/7+…直到最后一项的绝对值

10 为止。

小于6

解:#include<>

#include<>

void main()

{ int s=1;

float n=,t=1,pi=0;

while(fabs(t)>1e-6)

{ pi=pi+t*s;

n=n+2;

s=-s;

t=1/n;

}

pi=pi*4;

printf("pi=%f\n",pi);

}

运行结果:pi=

思考:在此题中为何不选用for循环进行控制,而选用while 循环呢

6-8编写程序,求任意两个整数之间的所有素数。

解:#include<>

#include<>

void main()

{ int n,m,i,j,k,p=0;

printf("请输入两个整数m,n(m

scanf("%d,%d",&m,&n);

for(i=m;i<=n;i++);

{ k=sqrt(n);

for(j=2;j<=k;j++)

if(i%j==0) break;

if(j>=k+1) {printf("%d ",i);p=p+1;}

if(p%10==0)printf("\n");

}

printf("\n");

}

运行结果:请输入两个整数m,n(m

11 13 17 19

思考:此题中若输入的两个整数m,n分别为13,100时,13这个素数是否被输出,为什么

6-9 编写程序,求任意两个整数之间的所有能被3、4、5同时整除的数。

解:#include<>

void main()

{ int n,m,i;

printf("请输入两个整数m,n(m

scanf("%d,%d",&m,&n);

for(i=m;i<=n;i++)

if((i%3==0)&&(i%4==0)&&(i%5==0)) 解:#include<>

void main()

{ int n, i,j;

for(i=1000;i<=9999;i=i+1000)

{ for(j=0;j<=9;j++)

{n=i+j*100+j*10+i/1000;

printf("%d",n);

}

printf("\n");

}

}

运行结果:1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 2002 2112 2222 2332 2442 2552 2662 2772 2882 2992

3003 3113 3223 3333 3443 3553 3663 3773 3883 3993

4004 4114 4224 4334 4444 4554 4664 4774 4884 4994

5005 5115 5225 5335 5445 5555 5665 5775 5885 5995

6006 6116 6226 6336 6446 6556 6666 6776 6886 6996

7007 7117 7227 7337 7447 7557 7667 7777 7887 7997

8008 8118 8228 8338 8448 8558 8668 8888 8888 8998

9009 9119 9229 9339 9449 9559 9669 9999 9999 9999思考:在此题中,内、外循环各起什么作用是否可以交换如果用if语句设计程序,数据的各位数(个位、十位、百位、千位)应该如何分离

6-11编写程序,判断某一个整数是否为完数。完数是指其因子之和等于自身的整数,如6=1+2+3请进一步考虑,求任意两个整数之间的所有完数。

解:#include<>

void main()

{ int n, i,k=0;

printf("请输入整数: ");

scanf("%d", &n);

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

if(n%i==0)k=k+i;

if(n==k)printf("%d是完数\n",n);

else printf("%d不是完数\n",n);

}

运行结果:请输入整数:28

28是完数

思考:变量k在此题中起什么作用初值为何要被赋0循环语句“for(i=1;i<=n;i++)”中的判断式”i

注:1000以内的完数有6=1+2+3,28=1+2+4+7+14,496=1+2+4+8+16+31+62+124+248.

6-12 编写程序,以上三角形式输出九九乘法表。

解:#include<>

void main()

{ int j, i;

printf("%4c", '*');

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

{ for(j=1;j<=9;j++)

printf("%4d",i*j);

printf("\n");

}

}

运行结果:

* 1 2 3 4 5 6 7 8 9

1 1

2

3

4

5

6

7

8 9

2 4 6 8 10 12 14 16 18

3 9 12 15 18 21 2

4 27

4 16 20 24 28 32 36

5 25 30 35 40 45

6 36 42 48 54

7 49 56 63

8 64 72

9 81

思考:如果希望输出下三角形式的九九乘法表,程序应如何改动* 1 2 3 4 5 6 7 8 9

1 1

2 2 4

3 3 6 9

4 4 8 12 16

5 5 10 15 20 25

6 6 12 18 24 30 36

7 7 14 21 28 35 42 49

8 8 16 24 32 40 48 56 64

9 9 18 27 36 45 54 63 72 81

6-13编写程序,计算1!+2!+3!+…+n!的值,n从键盘输入。

解:#include<>

void main()

{long sum=0,t=1;

int n, i;

printf("请输入整数n:");

scanf("%d", &n);

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

{

t=t*i;

sum=sum+t ;

}

printf("总和=%ld\n",sum);

}

6-14 编写程序,求1!+2!+…+n!小于1000的项数n。

解:#include <>

void main()

{ int sum=0,t=1;

int n=0;

do

{ n=n+1;

t=t*n;

sum=sum+t;

}while(sum<1000);

printf(“项数为%d\n”,n-1);

}

运行结果:项数为6

思考:此题为何要选用do-while循环结构最后输出变量的值为何要减1另请改为while循环实现。

6-15 某门课程有n个同学参加考试,编写程序计算这门课程的最高分、最低分及平均分。

解:#include<>

void main()

{

float aver ,max,min,a ;

int n ,i ;

printf("请输入学生的人数n的值:");

scanf("%d",&n) ;

aver=max=0 ;

min = 100 ;

for(i=0;i

{

printf("请输入第%d位同学的成绩:",i+1);

scanf("%f",&a);

aver+=a ; 猴子第一天摘下若干个桃子,当即吃了一半,不过瘾,还多吃了一个。以后每天如此,至第十天,只剩下一个桃子。编写程序计算第一天猴子摘得桃子个数。

解:#include<>

void main()

{

int day ,n1,n2 ;

day = 9 ;

n2 = 1 ;

while(day>0)

{

n1=(n2+1)*2 ; /*第一天的桃子数是第二天桃子数加1后的2倍*/

n2=n1 ;

day--;

}

printf("第一天摘的桃子数为%d\n",n1) ;

}

运行结果:第一天摘的桃子数为1534

思考:此题可假设第一天共摘桃子x颗,可否用递归算法求解(只描述计算过程)

6-19 百鸡问题。百元买百鸡,公鸡8元钱1只,母鸡6元钱1只,鸡仔2元钱4只。编写程序,计算百元所买的公鸡,母鸡,鸡仔数。

解:#include<>

void main()

{

int x,y,z,j ;

for(x=0;x<=12;x++)

for(y=0;y<=16;y++)

{

z=100-x-y ;

if(8*x+6*y+z*==100)

printf("%2d:cock=%-2d hen=%-2d chicken=%-2d\n",++j,x,y,z) ;

}

}

运行结果:1 :cock=8 hen=11 chicken=81

2 :cock=11 hen=4 chicken=84

思考:如何理解条件式x<=12 ,y<=16 与计算式z=100-x-y的含义。

6-20 将十元钱兑换成一元,五角,一角的硬币,共计40枚,计算有多少种兑换方法。

解:#include<>

void main()

{

int x,y,z,j=0 ; /*x表示一元的枚数,y表示五角的/*

/*枚数,z表示一角的枚数*/

for(x=0;x<=10;x++)

for(y=0;y<=20;y++)

{

z=40-x-y ;

if(10*x+5*y+z==100)

{

j = j+1 ;

printf("第%d种兑换方法:1元%d枚,5角%d枚,1角%d枚\n",j,x,y,z) ;

}

}

printf("共有%d种兑换方法\n",j) ;

}

思考:对于任意数额的钱数,有100元、50元、20元、10元、5元、2元、1元、5角、2角、1角、5分、2分、1分等面额,如何找出张钱最少的组合

6-21 两个乒乓球队进行比赛,各出三人。甲队为A,B,C三人,乙队为X,Y,Z三人。有人打听比赛对阵安排,A说他不和X比,C说他不和X,Z比。编写程序,找出三队赛手名单。

解:#include<>

void main()

{

char i,j,k;/*i是A的对手;j是B对手;K是C的对手*/

for(i='X';i<='Z';i++)

for(j='X';j<='Z';j++)

if(i!=j)

for(k='K';k<='Z';k++)

{

if(i!=k&&j!=k)

{

if(i!= 'X'&&k!= 'X'&&k!= 'Z')

printf("顺序为:\nA--%C\tB--%C\n",i,j,k) ;

}

}

}

运行结果:顺序为:

A—Z B—X C—Y

思考:此题为何要用

for(i='X';i<='Z';i++)

for(j='X';j<='Z';j++)

两层的'X'到'Z'的循环

6-22 阶梯问题。有一阶梯,若每步跨2阶,最后余1阶; 若每步跨3阶,最后余2阶; 若每步跨5阶,最后余4阶; 若每步跨6阶,最后余5阶; 若每步跨7阶,刚好到达阶梯顶部。编写程序,求最后的阶梯数。

解:#include<>

void main()

{

int i=7 ;

do

{

if((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0))

break ;

i=i+7 ;

}while(1);

printf("N=%d\n",i) ;

}

运行结果:N=119

思考:循环结构“do-while(1);”这种形式具有什么特性此题中的“break;”语句起什么作用

6-23

算法提示:

牛顿迭代公式为

可用两次结果之差的绝对值小于某个很小的数作为循环控制条件,而用此时的结果值作为近似值。

解:#include<>

#include<>

void main()

{

float a,x1,x2 ;

scanf("%f",&a) ;

x1=a/2 ;

x2=(x1+a/x1)/2 ;

do

{

x1=x2 ;

x2=(x1+a/x1)/2 ;

}while(fabs(x1-x2)>1e-5);

printf("%5.2f的平方根=%8.5f\n",a,x2) ;

}

运行结果:2

2的平方根=

思考: 迭代算法是一个重要的算法,一般根据起精度要求进行循环控制,此题哪个表达式起精度循环控制作用如果出现迭代不收敛的情况,应如何再进行迭代次数的控制

循环程序设计习题及答案

模块三循环程序设计习题及答案 一、填空题 1、当在数据处理中要重复执行相同的操作时,宜采用程序结构来实现。 2、循环的3要素是、、。 3、在循环语句体中包含另一个循环语句的用法称为。 4、执行循环语句体中的break语句后将使用包含它的循环语句。 5、要结束当前正在执行循环体语句而直接进入下一循环周期,需要执行语句。 6、在for语句中表达式允许省略,但不能少,语句for( ; ;) ;构成的是循环。 7、在for语句中,省略表达式2时,则循环为循环。 8、执行语句for(i=1;i++<4; );后变量i的值是。 9、要使用循环程序提前结束本次循环周期并开始下一个循环周期,应在循环体内有条件使用语句。 10、在每次循环周期均要执行一次的语句,称为。 11、for语句括号内的3个表达式的作用分别是、和循环控制变量的更新。 二、选择题 1、若k为整形变量,则while循环共循环()。 k=5; while(k>=0) k-1; A、无限循环 B、6次 C、5次 D、4次 2、与while( ! n) ; 中表达式!dn等价的是()。 A、dn>=0 B 、dn!=0 C、dn == 0 D、dn != 1 3、以下程序段,while循环执行的次数是() int k=0;

while( k == 1) k++; A、无限次 B、有语法错,不能执行 C、一次也不执行 D、执行1次 4、在C语言中,当do while语句中的条件为()时,结束该循环。 A、0 B、1 C、TRUE D、非0 5、下面程序段的输出结果是() do { b-=a; a++; }while(b--<0); A、10,-1 B、2,8 C、9,0 D、4,-3 6、以下描述正确的是() A、由于do while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B、do while循环由do开始,用while结束,在while(表达式)后面不能写分号 C、在do while循环体中,一定要有能使while后面匠值变为零的操作 D、do while循环中,根据情况可以省略while 7、若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)。 s=c; 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; 8、假定a,b,c,d均已定义为整型变量,且a、c均已赋值,a大于0,c大于0,则与程序段for(d=a,b=1;b<=c;b++) d--;功能等价的语句是() A、d=a+b; B、d=a+c; C、d=a-b; D、d=a-c 9、下列关于for循环的说法正确的是()

循环结构程序设计练习题内含答案

第三单元循环结构练习题 选择题: 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、以下程序程序的执行后的输出结果是(c)。 main() {int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf(“%d”,t[2 -i][i]);} A.753 B.357 C.369 D.751 5、以下程序运行后的输出结果是( A )。 void fun(char*s) { while(*s) { if(*s%2==0)printf(“%c”,*s);s++;} } main() { char a[]={“good”};fun( a) ;printf(“ n”);} 注意:字母 a 的 ASCⅡ码值为 97 A.d B.go C.god D.good 6、已知 int t=0 ; while ( t=1 ){...}则以下叙述正确的是( B)。 A)循环控制表达式的值为 0 B)循环控制表达式的值为 1 C)循环控制表达式不合法 D)以上说法都不对 7、设有以下程序段 B int x=0,s=0; while (!x!=0 ) s+=++x; printf ( "%d",s );则 A)运行程序段后输出0

循环结构程序设计习题答案

循环结构程序设计习题答案 一、单选题。 1.下面有关for循环的正确描述是( ) A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判定表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环体语句中,可以包含多条语句,但要用花括号括起来 [解答]:D。 2.对于for(表达式1;;表达式3)可理解为() A.for(表达式1;1;表达式3) B.for(表达式1:1;表达式3) C.for(表达式1;表达式1;表达式3) D.for(表达式1;表达式3;表达式3) [解答]:B。 3.以下正确的描述是()。 A.continue语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句 C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时,只能使用goto语句 [解答]:B。 4.C语言中( )。 A.不能使用do-while语句构成的循环 B.do-while语句构成的循环必须用break语句才能退出 C.do—whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环D.do—while语句构成的循环,当while语句中的表达式值为零时结束循环[解答]:D。 5.C语言中while和do-while循环的主要区别是( ) A.do—while的循环体至少无条件执行一次 B.while的循环控制条件比do—while的循环控制条件严格 C.do—while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 [解答]:A。 6.下面程序段不是死循环的是()。 A.int I=100; B.for ( ; ; ); while(1) { I=I%100+1; if(I>100) break;

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答 1 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构 【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。【答案】多分支 2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。 【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。 【答案】直到型 3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。 【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。【答案】#include"stdio.h"或#include<stdio.h> 4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( ) ①'A'/②A/③x=A/ ④x=A,y=12/ 12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键 【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符, 在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。【答案】④ 5 设有下列程序段,则执行该程序段后的输出是( ) int i=012; float f=1.234E-2; printf("i=%-5df=%5.3f",i,f); ... ①i=__012f=1.234 ②i=10___f=0.012 ③10___O.012 ④___100.012 注:答案中的_代表一个空格。 【分析】输出语句的格式控制符串中的“i=”、“f=”都是非格式控制符,在输出时必须原样,原位置输出,所以只有备选答案①和②才符合这个要求;格式控制符“%-5d”的格式控制是数据左对齐、宽度为5的整型数据,备选答案①中的数据是右对齐的;此外,该答案中的实数“1.234E-2”应该代表“0.01234”,而不是“1.234”。只有备选答案②符合题意。【答案】② 6 在Turbo C的主屏幕中,将当前编辑的源程序以原名存盘,可以选用___________菜单项,也可以直热键________。 【分析】如果选用“File/Save”菜单项,或者使用热键(f12),当前编辑的源程序将以原来的文件名存盘;如果选用“File /Write to”,当前编辑的源程序将以新的文件名存盘。 【答案】File/Save F2 7 下列各种选择结构的问题中,最适合用if-else语句来解决的是( ) ①控制单个操作做或不做的问题 ②控制两个操作中选取一个操作执行的问题 ③控制三个操作中选取一个操作执行的问题 ④控制10个操作中选取一个操作执行的问题 【分析】if-else语句是专门解决“双分支结构”的,而“双分支结构”的问题就是用单个条件控制从两个操作中选取一个操作来执行的问题。 【答案】② 8 下列程序是输入一个小写字母,转换成对应大写字母的后一个字母输出。例如:'a'将转换成’B’、…、‘y’将转换成’Z’,其中的’Z’将转换成’A’。请填写程序中所缺少的语句。 main() {char ch ; scanf(”%c”,&ch〕; ch=ch- 32+1; ___________________; printf("%c\n",ch); } 【分析】分析程序库中的“ch=ch- 32+ 1;”语句,可知是将字符型变量 ch中的小写字母转换成对应的大写字母(- 32)的后一个字母(+ l)。如果ch中的字母是' a'、' b'、··,'y',转换结果都不会出错,但是,如果 ch中的字母是'Z',则-32后是大写字母'Z',再+l后将不是大写字母了。为了使其转换成'A',需要用一个单分支结构来实现:如果ch的值等于'Z'+ l,则硬性将 ch的值改成'A'。完成这个任务的语句是一条单分支语句,正是所缺少的语句。 【答案】 if (ch=='Z'+l) h='A'; 9不能正确计算下列分段函数的程序段是_________ |-1 x<0 y=|0 x=0 x>0 ① switch(x< 0)② if(x> 0) {case1:y=-1;break; y=1; case 0:switch(x==0) else {casel:y=0;break; if(x==0) case 0: y= l; y=0 } else } &ny=-l ③ y= l;④ y= l; if(x==0) if(x<0) y=0; y=-l; else else y=- l; if(x== 0) y=0; 【分析】先来分析备选答案①:表达式“x<0”的值只有两种可能性,成立值为1、不成立值为on如果“x<0”的值为 1(即 x< 0),则执行“easel:”后的语句“y=-l”后,退出 switch语句,符合分段函数要求。如果“x<0”的值为0(即x>=0),则执行“case 0:”后的switch语句。该switch语句的表达式是“x==0”,结果也有两种:成立为1、不成立为0.如果“x==0”的值为1(即x=0),则执行“case l:”后的语句“y=0”后,退出 switch语句,符合分段函数要求。如果“x==0”的值为0(即x>0),则执行“case 0:”后的语句“y=1”,也符合分段函数要求。再分析备选答案②:这是标准的用嵌套双分支结构来实现三分支的分段函数,结果显然是能求解分段函数的。分析备选答案③:双分支语句的条件是“x==0”,条件成立时,y值为0,符合分段函数的要求,条件不成立时(包含x>0和x<0两种情况),结果y值为-l,显然不符合分段函数的要求,所以本题要选该答案。至于备选答案④,是能正确计算分段函数的,首先置y为1;接着用双分支结构处理“x<0”和“x>=0”的两种情况:前者使得y值为一l;后者再执行一个单分支结构,如果“x==0”则使y值为0,否则不改变y值,保持y的原值1,符合分段函数的要求。 【答案】③ 10 三种循环语句都能解决循环次数已经确定的次数型循环,其中__________循环语句最适合。 【分析】当“for(表达式 1;表达式 2;表达式 3)语句;”中的表达式1为:整型变量 k=l;表达式 2为:整型变量 k<= n;表达式 3为:整型变量 k++;则这个 for循环就是次数为n次的标准次数型循环结构。 【答案】 for 11执行下列程序段后的输出是() x=l; while(x<=3) x++,y=x+++x; printf("%d,%d",x,y); ① 6,10 ②5,8 ③4,6 ④3,4 【分析】我们可以使用逐步记录运行结果的方法来获得输出结果,记录如下: x=1; 进入循环,条件满足执行循环体:计算x+十得x为2,计算y=x+++x,得y为4、x为3; 继续循环,条件满足执行循环体:计算x+十得x为4,计算y=x+++x,得y为8、x为5; 继续循环,条件不满足退出循环; 输出x和y的值为5,8。 【答案】② 12 执行下列程序段,其中的do-while循环一共执行_次。 static int x; do x+=x*x; while (x); 【分析】对静态型变量,不赋初值也有值,对整型变量,其值为 0。执行循环语句 do-while 的循环体,x+=x* x是x=x+(x* x)=0+(0* 0)=0;再判断控制循环的条件“x”,结果为0,条件不成立,退出循环。所以循环仅执行1次。 【答案】 1 13 下列程序段的输出结果是() for( i=0; i<1;i+=l) for( j= 2;j> 0;j--)

C语言程序设计习题集第4章循环结构(答案)

第4章循环结构 一、选择题 1、有以下程序段 int k=0; while(k=1)k++; while 循环执行的次数是( A) A) 无限次B) 有语法错,不能执行 C) 一次也不执行D) 执行1次 2、t为int类型,进入下面的循环之前,t的值为0 while( t=1) { …… } 则以下叙述中正确的是( B) A) 循环控制表达式的值为0 B) 循环控制表达式的值为1 C) 循环控制表达式不合法 D) 以上说法都不对 3、在C程序中,与while(m)中表达式m完全等价的是(B ) A) m==0 B) m!=0 C) m==1 D) m!=1 4、有以下程序,程序运行后的输出结果是(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) 9876

7、以下程序的输出结果是( B ) main() { int num= 0; while(num<=2) { num++; printf(“%d\n”,num);} } A) 1 B) 1 C)1 D) l 2 2 2 3 3 4 8、有以下程序,若运行时输入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;} else break;} printf(“%f\n”,y);} A)1.500000 B)1.600000 C)2.000000 D)2.400000 9、执行以下程序段时 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 {

循环结构程序设计课后习题及答案

循环结构程序设计习题及答案 1、循环语句的三要素分别是、、; 2、for语句括号内的3个表达式的作用分别 是、、; 3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整 地,只有当时,才结束整个循环; 4、在循环结构中,break语句的作用是;continue语句的作用是; 5、当循环条件一开始就为假时,对于while语句、do…while语句、for语句,分别执行循环体次、次、次; 6、下面程序段的执行次数: int a=0; whilea=0 { printf"good\n"; a--; } 7、下面程序段的执行次数: int a=0; whilea==0 { printf"good\n"; a--; } 8、下面程序段的执行次数: int a=1; whilea=1 { printf"good\n"; a++; } 9、下面程序段的执行次数: int a=1; whilea==1 { printf"good\n"; a++; } 10、下列程序段的运行结果是; fori=5;i>=0;i-- printf“%d “,i; 11、下列程序段的运行结果是; forn=1;n<20;n=n+3 printf“%d “,n; 12、下列程序段的运行结果是; for ch='a' ;ch<='e' ;ch++ printf“%d“,ch-97;

13、下列程序段的运行结果是; fori=1,j=5 ; i100 break; } C、int a=0; D、int x=21; do whilex { ++a; --x; }whilea>=0; 三、阅读程序,写出程序运行结果; 1、include"stdio.h" main { int i=0,sum=1; do { sum+=i; i++; }whilei<5; printf"%d\n",sum; } 程序运行结果: 2、 include"stdio.h" main { int 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); } } 答:2 4 思考:语句“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输入一行字符(以$结束),统计其中的数字字符、空格字符出现的次数。 解: #include<> void main() { char c; int d=0,s=0;

(完整版)c语言第六章循环结构程序设计(习题册答案)

第六章循环结构程序设计 基础练习(A) 一、选择题 1、C语言中while和do-while循环的主要区别是(A)。 A) do-while的循环体至少无条件执行一次 B) while的循环控制条件比do-while的循环控制条件严格 C) C)do-while允许从外部转到循环体内 D) do-while的循环体不能是复合语句 2、以下描述中正确的是(C)。 A) 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用 复合语句 B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操 作 D)do-while循环中,根据情况可以省略while 3、设有程序段 int k=10; while(k) k=k-1; 则下面描述中正确的是(A)。 A)while循环执行10次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次 4、下列循环语句中有语法错误的是( D )。 A) while(x=y) 5;B) while(0) ; C) do 2;while(x==b);D) do x++ while(x==10); 5、已知int i=1;执行语句while (i++<4) ;后,变量i的值为(C)。 A) 3 B) 4 C) 5 D) 6 6、语句while(!E);中的表达式!E等价于(A)。 A)E==0 B)E!=1 C)E!=0 D)E==1 7、下面程序段的运行结果是(A)。 a=1; b=2; c=2; while(a main() { int num=0; while(num<=2) { num++; printf(“%d\n”,nu m); } } A)1 B)1 C)1 D)1 2 2 2 3 3 9、以下能正确计算1×2×3×…×10的程序段是(C)。

循环结构程序设计练习题内含答案

循环结构程序设计练习题内含答案 第三单元循环结构练习题 选择题: 1、有以下程序执行后的输出结果是( D )。 main( ) { int i,s=0; for(i=1;i0; x--) { if (x%3==0) { printf( “%d”,--x); continue ; } } } A )741B)852C)963D)875421 20. int i=100;以下不是死循环的程序段是。A A ) while (1) {i=i%100+1 ;if (i>100) break ;} B)for ( ; ; ) ; C ) int k=0; do { ++k; } while (k>=0); D)int s=36;while(s) ;--s ; 21. 下述程序段的运行结果是C。 int a=1,b=2, c=3, t=4; while (a= ’A’ && c= ’a’ && c++y;x=i++) i=x ; B ) for ( ; ; x++=i ) ;

C) while (1) { x++ ; } D) for (i=10 ; ; i--) sum+=i ; 32.下面程序段的运行结果是。 ( 自己算算吧不难! ) x=y=0; while (x='0'&&s[i]=20) break; if (b%3==1) { b+=3 ; continue ; } b-=5; } printf( “%d n”,a);} 9. 写出下面程序运行的结果。_________36_________ main ( ) { int k=1,n=263 ; do { k*= n%10 ; n/=10 ; } while (n) ; printf( “%d n”,k);} 10.写出下面程序运行的结果。---- 31-1---- main ( ) { int i=5 ; do { switch (i%2) { case 4 : i-- ; break ; case 6 : i-- ; continue ; }

循环程序设计习题及答案

棋块三常环程序设计习题及答案 一、填空题 2、当在数据处理中要重复执行相同的操作时,宜采用 __________________ 程序结构来实 现。 2、 循环的3要素是 ______________ 、 ________________ 、 _____________________ - 3、 在循环语句体中包含另一个循环语句的用法称为 _______________________________ 4、 执行循环语句体中的break 语句后将使用包含它的循环语句 ___________________ 、 5、 要结朿当前正在执行循环体语句而直接进入下一循环周期,需要执行 语句。 6、 在for 语句中表达式允许省略,但 ___________________ 不能少,语句for(;;);构 成的是 __________ 循环。 7、 在for 语句中,省略表达式2时,则循环为 ____________________ 循环。 8、 执行语句for(i=l;i++<4;);后变戢i 的值是 __________________ 。 9、 要使用循环程序提前结束本次循环周期并开始下一个循环周期,应在循环体内有条 件使用 ___________________________ 语句。 10、 _______________________________________________________________ 在每次循环周期均要执行一次的语句,称为 ___________________________________________ o 11、 f or 语句括号内的3个表达式的作用分别是 _________________________________ 、 和循环控制变量的更新。 1. 若k 为整形变虽:,则while 循环共循环( k=5; while(k>=0) k-1; A 、无限循环 B 、6次 C 、5次 D 、4次 2^与while( ! n);中表达式! dn 等价的是( )。 B 、dn!=0 C 、dn == 0 D 、dn != 1 3、以下程序段,while 循环执行的次数是( ) int k=0; 选择 A 、 dn>=0

相关文档