搜档网
当前位置:搜档网 › 第六章 循环结构

第六章 循环结构

第六章  循环结构
第六章  循环结构

第六章循环结构

一、选择题:

1. 执行语句:for(i=1;i<9; i++)后; 变量i的值是()。

(A)10 (B)9 (C)不定(D)11

2.若t为int类型,进人下面的循环之前,t的值为0 ,

while( t=l )

{ ……}

则以下叙述中正确的是()。

(A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1

(C) 循环控制表达式不合法 (D) 以上说法都不对

3. 对do...while语句错误的描述是:()

A.可构成多重循环结构 B. 循环次数不可能为0

C.循环次数可能为0 D. 先执行后判断。

4.下面程序段的运行结果是()。

int n=0;

while(n++<=2) ; printf(“%d” ,n ) ;

(A)4 (B)3 (C)2 (D)有语法错误

5. 以下描述正确的是()。

A. 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。

B. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。

C. 在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。

D. do-while循环中,根据情况可以省略while。

6.关于do-while 语句的正确叙述是()

A. do-while 语句构成的循环不能用其它语句构成的循环来代替

B. d o-while 语句构成的循环只能用continue语句退出

C. 用do-while 语句构成的循环, 在while后的表达式为非零时结束循环

D. 用do-while 语句构成的循环, 在while后的表达式为零时结束循环

6.C 语言中,while 和 do…while 循环的主要区别是()。

A. while 的循环控制条件比do…while 的循环控制条件严格

B. do…while 的循环体至少无条件执行一次

C. do…while 允许从外部转到循环体内

D. do…while 的循环体不能是复合语句

7.以下程序的输出结果是()。

main( )

{ int x=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d,%d ",x- -,y);

}

A. 10 1 9 2

B. 9 8 7 6

C. 10 9 9 0

D. 10 10 9 1

8.现已定义整型变量int i=1;执行循环语句while(i+ +<5);后,i的值为()

A)1 B)5 C)6 D)以上三个答案均不正确

9.有以下程序

main()

{ int i;

for(i=0;i<=3;i++)

switch(i)

{ case 1: printf("%d",i);

case 2: printf("%d",i);break;

default: printf("%d",i);

}

}

执行后输出的结果是:()

A. 01123

B. 012

C. 012020

D. 120

10、现已定义整型变量int i=1;执行循环语句while(i+ +<5);后,i的值为:()

A)1 B)5 C)6 D)以上三个答案均不正确

11、执行语句:for(i=1;i<=9; i++);后变量i的值是:()

A. 10

B. 9

C. 不定

D. 11

12.下面程序段的运行结果是()。

int n=0; while(n++<=2); printf(“%d”, n) ;

(A)2 (B)3

(C)4 (D)有语法错误

13.设执行变量y值为3,执行下列循环语句后,变量y的值是()。

do y++; while(y++<4);

(A)3 (B)4 (C)5 (D)6

14.若k为整型变量,则下面while循环执行的次数是()。

k=10;

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

(A)0次(B)1次(C)10次(D)无限次

15. 以下程序段_________。

x=-1;

do

{x=x*x;}

while (!x);

A) 是死循环 B) 循环执行 2 次

C) 循环执行 1 次D) 有语法错误

16.对表达式for( 表达式1; ;表达式3) 可理解为()

A.)for(表达式1;0; 表达式3) B)for(表达式1;1; 表达式3)

C)for(表达式1; 表达式1; 表达式3) D)for(表达式1; 表达式3; 表达式3)

二、填空题:

1.在循环语句中,continue和break语句的区别是:语句提前结束本次循环,进

行下一次循环的判断;而语句跳出循环结构,结束循环。

2、执行下面的程序段后,k值是。

k=1; n=263;

do

{ k*=n%10;

n/=10; } while(n);

3.用_________________语句可以实现提前结束循环。

4.执行完语句for (i=0; i <3 ; i ++);后,变量i的值为_________________。

三、看程序写结果:

1.下列程序段的输出结果是。

void main()

{ int i,j;

for(i=4;i>=1;i--)

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

printf("*");

printf("\n"); }

}

2.以下程序运行后的输出结果是。

#include

main()

{int k=1,s=0;

do{

if((k%2)!=0)continue;

s+=k;k++;

}while(k>10);

printf("s=%d",s);

}

3.源程序如下,运行时假定键盘输入数据为:2004

#include

void main(void)

{int n=0;

char c;

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

{if(c>='0'&&c<='9')

n=n*10+c-'0';}

printf("value=%d\n", n);}

结果为:

4.以下程序运行后的输出结果是。main()

{

char c1,c2; c1='0',c2='9';

for( ;c1

printf("%c,%c",c1,c2);

printf("\n");

}

5.以下程序运行后的输出结果是。main()

{ int i, j, k;

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

{ for(j=1; j<=31-i; j++)printf(" ");

for(k=1; k<=2*i-1 ; k++)printf("*");

printf("\n");

}

}

7.以下程序运行后的输出结果是。#include

void main(void)

{int n=0;

char c;

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

{if(c>='0'&&c<='9')

n=n*10+c-'0';}

printf("value=%d\n", n);}

(设输入:2518)

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

main ()

{int s,i;

for(s=0,i=1;i<3;i++,s+=i);

printf("%d\n",s);

}

9.以下程序运行后的输出结果是。 main()

{ int s=0,n;

for(n=0;n<3;n++)

{switch(s)

{ case 0:

case 1: s+=1;

case 2: s+=2;break;

case 3: s+=3;

default: s+=4;

}

printf(“%d”,s);

}

}

10.以下程序的运行结果是_________。

main()

{ int num=0;

while (num<=2)

{ printf(“%3d”,num); num++;}

}

11.写出程序运行结果。

#include

main()

{

int i=10,j=0;

do

{

j=j+i;

i--;

}while(i>2);

printf("%d\n",j);

}

12.设有以下程序:

#include

main()

{

int n1,n2;

scanf("%d",&n2);

while(n2!=0)

{

n1=n1*10+n2%10;

n2=n2/10;

}

printf("%d",n1);

}

程序运行后,如果从键盘上输入7648;写出输出结果为。

四、程序填空题:

1.以下程序的功能是:打印出所有的水仙花数。请补充完整。

#include

;

void main()

{ int i,j,k,n;

printf("parcissus numbers are:\n");

for(n=100; n<=999; n++)

{

i=;

j=(n/10)%10;

k=;

if (n==pow(i,3)+pow(j,3)+pow(k,3))

printf(" %d\n ",n); } }

2.以下程序是求1+1/2+1/4+1/6……+1/100的值。请补充完整。

#include

main( )

{ int i=2;

float sum=1;

while ( )

{ sum=sum+1.0/i;

;

}

printf(“sum=%f”, sum);

}

3. 下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。

#include

void main( )

{

int n=0, ch;

ch=getchar( );

while( ______________ )

{ if ( _______________ ) n++;

c=getchar( );

}

}

3.下面程序的功能是计算并输出“(1)*(1+2)*(1+2+3)*……*(1+2+3+……+10)”,请完善程序:(本题4分)

main()

{ float x,y;

int i,j;

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

{ _;

for(j=1;j<=i;j++) _ __;

y=y+x;

}

printf("%ft\n",y);

}

4. 统计所有四位正整数中各个数位上数字之和是9的数的个数。

如:1008、1017是满足条件的数

#include

void main()

{

int i,j,s, count;

;

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

{

j=i;

s=0;

while( )

{

;

j=j/10;

}

if(s==9) count++;

}

printf("%d\n",count);

}

5. 下列程序用来计算n!的值,请填空。

main( )

{int i,s,n;

s=1;

printf("Enter n:");

scanf("%d",&n);

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

printf("s=%d",s);

}

19.下面程序的功能是计算1-3+5-7+…-99+101的值存在s中,请填空。

#include

main()

{

int i,t=1,s=0;

for(i=1;i<=101;_______)

{

s=s+i*t;

t=_______;

}

}

五、程序设计题:

1、编程实现:输入两个正整数m和n,求其最大公约数和最小公倍数。

2、求1+2+4+6+……+100之和。分别用三种循环语句实现(while,do-while,for)。

3、编写程序求2到100间的全部素数,要求每行输出5个数。

4、编程输出九九乘法表。

5、编程求Fibonacci数列前20个数。这个数列有如下特点:第1、2两个数为1、1。

从第3个数开始,该数是其前面两个数之和。

6、一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过了多少米?第10次反弹多高?

第6章 循环结构程序设计

第6章循环结构程序设计 【计划课时】授课6课时+上机4课时 6.1 概述 循环是在循环条件为真时计算机反复执行的一组指令(循环体)。 循环控制通常有两种方式: ·计数控制——事先能够准确知道循环次数时用之 用专门的循环变量来计算循环的次数,循环变量的值在每次执行完循环体各语句后递增,达到预定循环次数时则终止循环,继续执行循环结构后的语句。 ·标记控制——事先不知道准确的循环次数时用之 由专门的标记变量控制循环是否继续进行。当标记变量的值达到指定的标记值时,循环终止,继续执行循环结构后的语句。 在C语言中可用以下语句构成循环: if … goto while do … while for 6.2if … goto语句循环结构P106 goto是一种无条件转向语句。 一般形式: goto标号; if … goto 可构成当型/直到型循环结构(尽量少用,以提高程序可读性/结构性)。 【例一】 { int n=0,sum=0; loop: sum+=n; ++n; if (sum<=10000) goto loop; printf(“n = %d\n”,n); }

6.3 while 语句循环结构 P107 一般形式 while (条件表达式) 循环体; 用于构成当型循环:先判断后执行/条件为真继续循环,直到条件为假时结束循环。 【注意】条件表达式或循环体内应有改变条件使循环结束的语句,否则可能陷入“死循环”。 【例一】 main() { int n=0; while (n<=2) { n++; printf(“%d”,n); } } 结果:123 【讨论】若去while 语句中的{},结果:3;若将n++移到printf 语句中,结果:012 【例二】 int n=0; while (n++<=2); printf(“%d”,n); 结果:4 【讨论】n=3时,while 条件为假,结束循环,但比较后n 自加了一,所以n=4。 【例三】 main() { int i=0; while (1) { printf(“*”); i++; 【例二】 main() { int n=0,sum=0; loop: if (sum>=10000) goto end; sum+=n; ++n; goto loop; end: printf(“n = %d \n”,n); }

南昌大学第六章循环控制答案

A.20 B.24 C.25 D.30 A.1 B.30 C.1 -2 D. A.15 B.14 C. D.0 A. B. C. D.

A.45 B.55 C.0 D. A.while B. C. D. A. 2 B. 3 C. 4 D. A. 1,2,0 B. 2,1,0 C. 1,2,1 D. 2,1,1

A. 20 B. 6 C. 20 D. 8 A.!a=b B.a!=b C.a==b D.a=b A. continue B. C. D. A. B. x>=0 C. printf D.

A. B. C. D. A.for B.for C. D.for 括号括起来 A.for( B.for( C)for(D)for( A) B)0 C)1D)2 A)3 B)4

C)5 D) A. B. C. D. A.k-- B.k=k+1 C.k++ D.k+=2 21 #include main() {int day=0,buy=2; float sum=0.0 ,ave; do{ sum+=0.8*buy; day++; buy*=2} while(buy<=100); ave=sum/day; printf(”%f,ave);} 21 #include main() {int i; for(i=1;i<100;i++) if(i*i%10==i || i*i%100==i)

printf("%3d",i); } 22 #include main() { int i , j; float g,sum,ave; for(i=1; i<=6; i++) { sum=0.0; for(j=1; j<=5;j++) { scanf("%f",g); sum=sum+g; } ave=sum/5; printf("No.%d ave=%5.2f\n",i,ave); } } 23 #include void main() { int a , b, p,t ,r printf("input a b :"); scanf("%d,%d", &a,&b); p=a*b; if(b>a) {t=a;a=b;b=t;} while((r=a%b)!=0) { a=b; b=r; } printf("max_gy=%d\n", b); printf("min_gb=%d\n",p/b); } 24 #include void main() { int i,a,n; long s=0 , sum=0; clrscr(); printf("input a , n :\n"); scanf("%d,%d",&a,&n); for(i=1;i<=n;i++) { s=s*10+a; sum=sum+s; } printf("a=%d n=%d sum=%ld",a,n,sum);

软件工程第六章答案

精心整理 作业4参考答案 1.假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作?

ENDIF 3.画出下列伪码程序的程序流程图和盒图: START IFpTHEN WHILEqDO f g n (2 4.下图给出的程序流程图代表一个非结构化的程序,请问:(1)为什么说它是非结构化的? (2)设计一个等价的结构化程序。

(3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag的程序;若用了,再设计一个不用flag 的程序。 答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图示的程序的循环控制结构有两个 (2 (3)不使用flag把该程序改造为等价的结构化程序 的方法如图4-4所示。 图4-4与该图等价的结构化程序(不用flag)5.研究下面的伪代码程序: LOOP: SetIto(START+FINISH)/2

IfTABLE(I)=ITEMgotoFOUND IfTABLE(I)ITEMSetFINISHto(I-1) If(FINISH-START )>1gotoLOOP IfTABLE(START)=ITEMgotoFOUND 入口和一个出口,而该程序的流程途中有两个出口。(3)等价的结构化程序的流程图如下:

(4)此程序有二分查找的功能,它完成预定功能的隐含前提条件是现有序列为从小到大顺序排好的有序序列。 6.用Ashcroft_Manna技术可以将非结构化的程序转化为结构化程序,图6.19是一个转换的例子。 (2)进一步简化后的结构化程序的流程图如下所示。

第六章循环控制概要

第六章循环控制 通过本章实验作业应达目标 1.熟悉while、for、do_while、break、continue语句的作用与使用规范。 2.学习并掌握利用while语句、for语句、do_while语句实现循环结构。 3.掌握循环结构和选择结构之间嵌套、多重循环间嵌套的设计方法。 4.进行算法设计训练,能综合所学控制结构语句解决一般问题。 本章必须上交作业 程序6_1.c、6_2.c、6_5.c、6_6.c、6_8.c上传至211.64.135.121/casp。 本章开始,上机实验项目量加大,希望同学们多多自行上机。本章实验项目有余力都可以做一下并上交。 循环程序设计 计算机解决问题都是按指定的顺序执行一系列的动作。按照特定的顺序执行相应的动作来求解问题的过程称为算法。程序中的语句是算法的体现,而算法要解决的是“做什么”和“怎么做”的问题。 计算机程序中指定语句的执行顺序称为“程序控制”。结构化的程序控制包含三种基本结构:顺序结构,选择结构和循环结构。 1. 循环设计 循环是在循环条件为真时反复执行的一组计算机指令,是计算机解题的一个重要结构。循环控制有两种基本方法:计数法和标志法。 1)计数器控制的循环 事先准确地知道循环次数,因此设计一个循环控制变量,由变量值来控制循环次数。每循环一次,循环变量的值会递增(增值通常为1或-1),当其值达到终值时结束循环。 教材例6.2、6.3、6.7都是典型的计数器控制的固定次数次数循环。 2)标志控制的循环 事先不知道准确的循环次数,由某一目标值标记循环的结束。如,教材例6.6中以|t|的值达到标记下限值1e-6作为循环的结束。 循环设计时要注意合理设计循环条件,使得循环不会成为死循环。 2. 算法 程序设计的首要工作是算法设计,离开了算法也就没有了程序。算法,是指完成某一项工作而采取的方法和步骤,具体到程序设计,是对解题过程的准确而完整的描述,并用一种程序设计语言的来实现。 循环主要用来解决程序设计中两类基本的算法:穷举和迭代。 1)穷举 穷举的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。穷举是一种重复型算法,其核心是设计循环,在循环体中依次测试。 例:输入两个正整数x和y,求其最大公约数。 main() {int x,y,i,flag; printf("Please input two numbers:"); scanf("%d%d",&x,&y);

6 循环控制

6 循环控制 一、单项选择题 1、for(i=1;i<9;i+=1);该循环共执行了(C)次。 A. 7 B. 8 C. 9 D. 10 分析:第一次i=1,i<9,i+1=2; 第二次i=2,i<9,i+1=3; …… 第八次i=8,i<9,i+1=9 第九次i=9,i<9不满足,跳出循环。 2、int a=2;while(a=0) a--;该循环共执行了(A)次。 A. 0 B. 1 C. 2 D. 3 分析:a=2不满足初始条件a=0,直接跳出循环,不执行a--。 3、执行完循环 for(i=1;i<100;i++);后,i 的值为(B)。 A. 99 B. 100 C. 101 D. 102 分析:第一次 i=1,a<100,i+1=2; 第二次 i=2,a<100,i+1=3; …… 第99次 i=99,i<100,i+1=100; 第100次 i=100,不满足i<100,跳出循环,i=100。 4、以下 for语句中,书写错误的是(C)。 A. for(i=1;i<5;i++) B. i=1;for(;i<5;i++) C. for(i=1;i<5;i++); D. for(i=1;i<5;) i++; 分析:for语句后面的第一个、第三个语句都可以省略,只需要规定循环条件避免循环无休止的进行。但for语句后面不需要加“;”。 5、(C)语句,在循环条件初次判断为假,还会执行一次循环体。 A. for B. while C. do-while D. 以上都不是 分析:do..while无条件执行一次先,而while或for语句都是先判断,满足条件后在执行。用for语句可以完全替代while语句。 6、有以下程序段 int i=5; do{ if(i%3==1) if(i%5==2) {printf("*%d",i); break; } i++; } while(i!=0);

第6章循环结构(二)

第6章 循环结构(二) ◇本章工作任务 实现MyShopping统计顾客的年龄层次 实现MyShopping循环录入会员信息 实现MyShopping登录时用户信息验证 ◇本章技能目标 会使用for循环结构 会在程序中使用break和continue

本章单词 请在预习时学会下列单词的含义和发音,并填写 在横线处。 1.rate: 2.young: 3.schedule: 4.negative: 5.customer: 6.birthday: 7.point: 8.continue: 9.return: _

本章简介 上一章我们学习了while和do-while循环结构。在编程的过程中,把一些重复执行的代码采用循环结构进行描述,大大简化了编码工作,使得代码更加简洁、易读。相信通过使用循环结构编程,你一定体会到了它的魅力。while循环结构是先进行条件判断,然后执行循环操作;do-while循环结构是先执行依次循环操作,然后进行判断。但是Java中的循环结构不只有while和do-while两种,还有for循环结构,它又是什么样子的?有什么功能?这一章就让我们揭晓这一结构:for循环结构。 6.1 for循环 6.1.1 为什么需要for循环 在上一章,通过使用while循环,张浩轻松解决了老师补充的问题,如示例1所示。 示例1 public class WhileDemo { public static void main(String[] args) { int i=0; while(i<100){ ←使用while循环 System.out.println(“好好学习,天天向上!”); i++; } } } 仔细观察你会发现,这里的循环次数“100遍”已经固定,这是我们也可以选用for循环结构来实现,如示例2所示。 示例2 public class ForDemo { public static void main(String[] args) { for(int i=0; i<100; i++;) { ←使用for循环 System.out.println(“好好学习,天天向上!”); } } }

第六章循环结构练习题

第六章循环控制 【题6.1】设有程序段 int k=10; while(k=10) k=k-1; 则下面描述中正确的是。 A)while循环执行10次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次 【题6.2】设有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; printf(“%d”,s); 则。 A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序段执行无限次 【题6.3】下面程序段的运行结果是。 int n=0; while(n++<=2); printf(“%d”,n); A)2 B)3 C)4 D)有语法错 【题6.4】下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。请选择填空。 #include main() { char c; while((c=getchar())!=‘\n’) { if(c>=‘a’&&c<=‘z’) { 【1】; if(c>‘Z’) 【2】; } printf(“%c”,c); } } 【1】 A)c+=2 B)c-=32 C)c=c+32+2 D)c-=30 【2】 A)c=‘B’B)c=‘A’C)c-=26 D)c=c+26 【题6.5】下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。 #include main() { int a,max=0; scanf(“%d”,&a); while(【1-B】) { if(max

最新C语言第六章循环结构复习题

循环结构程序设计复习题 一.选择题 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的值为0 b) 退出while循环后,x的值为1 c) while的控制表达式是非法的 d) while循环执行无限次 3. 有以下程序段,其中n为整型变量,执行后输出结果是:() n=20 ; while(n--) ; printf(“%d”,n) ; a) 2 b) 10 c) -1 d) 0 4. 有以下程序段,其中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=1 c) 输出x=0 d) 输出x=-1 6. 有以下程序段,其中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=0 c) x=1,y=1 d) x=0,y=0

第六章循环控制(6033)

请你负责具体第五章、第六章的题目,主要有以下几个方面: 2、将相应章节的题库内容进行审核,主要包括题目本身及答案是否正确,题目的难易度是否合适(太难或太偏可删除),题目是否有重复,格式是否符合导入数据库规范; 3、审核后的相应章节题目若每章不够60题,请进行补充。 4、第二阶段工作请于3月底完成,如有不清楚,可与我电话联系。 1.阅读下列程序: main( ) { int n[3],i,j,k; for(i=0;i〈3;i++〉 n[i]=0; k=2; for (i=0;i〈k;i++〉 for (j=0;j〈k;j++〉 n[j]=n[i]+1; printf("%d\n",n[1]); } 程序运行后输出结果是(D)。 A. 2 B. 1 C.0 D. 3 2.以下正确的描述是(B)。 A.continue语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句 C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时, 只能使用goto语句 3.若int x;且有下面的程序片断,则输出结果是(A)。 for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "**%d\n", x); } A.##3 **4 ##5 B.**3

##4 **5 C.**3 ##4**5 D.##3**4 ##5 4.下列保留字中用于构成循环结构的是( B)。 A.if B.while C.switch D.default 5.以下程序段的输出结果为( B)。 for(i=4;i>1;i--) for(j=1;j

软件工程第六章答案

作业4参考答案 1.假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作?

3.画出下列伪码程序的程序流程图和盒图: START IFpTHEN WHILEqDO f g n 答: (2 4 (1)为什么说它是非结构化的? (2)设计一个等价的结构化程序。 (3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。

答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。 (2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图4-3描绘了等价的结构化程序的盒图。 IfTABLE(I)=ITEMgotoFOUND IfTABLE(I)ITEMSetFINISHto(I-1) If(FINISH-START )>1gotoLOOP IfTABLE(START)=ITEMgotoFOUND

IfTABLE(FINISH)=ITEMgotoFOUND SetFLAGto0 GotoDONE FOUND: SetFLAGto1 DONE:Exit 程序,图6.19是一个转换的例子。 (1)能否从这个例子总结出Ashcroft_Manna技术的一些基本方法? (2)进一步简化6.19(b)给出的结构化设计。

答:(1)从这个例子中看出,Ashcroft_Manna技术的基本方法是,当待改造的序含有嵌套的非结构化的IF语句时,改造后的程序中增加DO-CASE语句和DO-UNTIL语句,并增加一个辅助变量I,I的初始值为1。最外层的IF语句在I=1时执行,执行完这个IF 语句后把I赋值为随后应该执行的内层IF语句所对应的CASE标号

第6章 循环控制

第六章循环控制 一单项选择题 1.下面程序段的运行结果是()。 int n=0; while(n++<=2); printf(“%d”,n); A) 2 B) 3 C) 4 D) 有语法错 2.设有程序段: t=0; while(printf(“*”)) {t++; if(t<3) break; } 下面描述正确的是()。 A) 其中循环控制表达式与0等价 B) 其中循环控制表达式与'0'等价 C) 其中循环控制表达式是不合法的 D) 以上说法都不对 3.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空()。 #include main() {int a,b,t; scanf(“%d%d”,&a,&b); while( ___________ ) {if(a>b) {t=a;a=b;b=t;} printf(“%d,%d\n”,a,b); scanf("%d%d",&a,&b); } } A) !a=b B) a!=b C) a==b D) a=b 4.C语言中,while和do-while循环的主要区别是()。 A) do-while的循环体至少无条件执行一次 B) while的循环控制条件比do-while的循环控制条件更严格 C) do-while允许从外部转到循环体内 D) do-while的循环体不能是复合语句 5.对以下程序段描述正确的是()。

x=-1; do {x=x*x;} while(!x); A) 是死循环B) 循环执行二次 C) 循环执行一次D) 有语法错误 6.以下描述中正确的是()。 A) do-while循环中循环体内不能使用复合语句 B) do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作 D) do-while循环中,根据情况可以省略while 7.若有如下语句 int x=3; do{ printf(“%3d”,x-=2);} while(!(--x)); 则上面程序段()。 A) 输出的是1 B) 输出的是1和-2 C) 输出的是3和0 D) 是死循环 8.下面有关for循环的正确描述是()。 A) for循环只能用于循环次数已经确定的情况 B) for循环是先执行循环的循环体语句,后判断表达式 C) 在for循环中,不能用break语句跳出循环体 D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 9.对for(表达式1; ;表达式3)可理解为()。 A) for(表达式1;0;表达式3) B) for(表达式1;1;表达式3) C) for(表达式1;表达式1;表达式3) D) for(表达式1;表达式3;表达式3) 10.若i为整型变量,则以下循环执行次数是()。 for(i=2;i==0;) printf(“%d”,i--); A) 无限次B) 0次C) 1次D) 2次 11.以下不是无限循环的语句为()。 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; 12.下面程序段的运行结果是()。 for(y=1;y<10;) y=((x=3*y,x+1),x-1); printf(“x=%d,y=%d”,x,y); A) x=27,y=27 B) x=12,y=13 C) x=15,y=14 D) x=y=27 13.执行语句for(i=1;i++<4;) ;后变量i的值是()。 A) 3 B) 4 C) 5 D) 不定

第六章 循环结构

第六章循环结构 一、选择题: 1. 执行语句:for(i=1;i<9; i++)后; 变量i的值是()。 (A)10 (B)9 (C)不定(D)11 2.若t为int类型,进人下面的循环之前,t的值为0 , while( t=l ) { ……} 则以下叙述中正确的是()。 (A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1 (C) 循环控制表达式不合法 (D) 以上说法都不对 3. 对do...while语句错误的描述是:() A.可构成多重循环结构 B. 循环次数不可能为0 C.循环次数可能为0 D. 先执行后判断。 4.下面程序段的运行结果是()。 int n=0; while(n++<=2) ; printf(“%d” ,n ) ; (A)4 (B)3 (C)2 (D)有语法错误 5. 以下描述正确的是()。 A. 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。 C. 在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。 D. do-while循环中,根据情况可以省略while。 6.关于do-while 语句的正确叙述是() A. do-while 语句构成的循环不能用其它语句构成的循环来代替 B. d o-while 语句构成的循环只能用continue语句退出 C. 用do-while 语句构成的循环, 在while后的表达式为非零时结束循环 D. 用do-while 语句构成的循环, 在while后的表达式为零时结束循环 6.C 语言中,while 和 do…while 循环的主要区别是()。 A. while 的循环控制条件比do…while 的循环控制条件严格 B. do…while 的循环体至少无条件执行一次 C. do…while 允许从外部转到循环体内 D. do…while 的循环体不能是复合语句 7.以下程序的输出结果是()。 main( ) { int x=10,y=10,i;

第六章 循环系统_1

---------------------------------------------------------------最新资料推荐------------------------------------------------------ 第六章循环系统 第六章循环系统第六章循环系统名词解释: 血液循环: 是指血液在心血管系统中周而复始地、不间断地沿一个方向流动。 心脏是血液循环的动力器官,血管使血液循环的管道,瓣膜是保证血液按一个方向流动的特有结构。 窦性心率: 指在窦房结以外的心肌潜在起搏点所引起的心脏节律性活动。 自动节律性: 心肌细胞在没有受到外来刺激的条件下,自动产生节律性兴奋的特性。 心动周期: 心脏每收缩和舒张一次,构成一个心脏机械活动周期称为一个心动周期。 心输出量: 每分钟一侧心室排出的血液总量,称为每搏排出量,简称排出量。 心率: 心脏每分钟搏动的次数。 动脉: 1 / 10

是血管由心脏射出后流往全身各个器官所经过的血管,可分为大、中、小、微动脉 4 种。 静脉: 是血液由全身各器官流回心脏时所经过的血管。 血压: 指血管内的血液对于血管壁的侧压力,也即压强,通常以毫米汞柱为单位。 动脉脉搏: 在每个心动周期中,动脉内周期性的压力波动引起动脉血管所发生的搏动,称为动脉脉搏。 微循环: 心肌细胞兴奋过程中,由 0 期开始到 3 期膜内电位恢复到60mV 这一段不能再产生动作电位的时期,称为有效不应期。 问答题: 1. 简述体循环和肺循环的途径和意义。 体循环: 左心室搏出的血液经主动脉及其分支流到全身毛细血管(肺泡毛细血管除外),进行物质交换后,再经各级静脉汇入上、下腔静脉及冠状窦流回右心房。 血液沿上述路径循环称体循环。 由于左心室的血液来自于肺部,经气体交换,是含氧较多的、鲜红的动脉血,在全身毛细血管除进行气体交换后,变为静脉血。

(完整版)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)。

第六章 循环结构程序设计

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"stdio.h" 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())!='$')

第六章 循环结构(含答案)

第六章循环控制 一、选择题 1.while (!E);语句中,条件表达式等价于【 A 】。 A. E==0 B. E!=1 C. E!=0 D. E==1 2.下面程序的运行结果是【 C 】。 int n=0; while(n++<=2); printf(“%d”,n); A. 2 B. 3 C. 4 D. 有语法错 3.下面程序段的运行结果是【 A 】。 a=1; b=2; c=2; while (a100) break; } B. for ( ;;); C. int k=0; do {++k;} while (k>=0); D. int s=36; while (s);――s; 8.执行语句for (i=1;i++<4;);后i的值为【 C 】。 A. 3 B. 4 C. 5 D. 不定 9.下列程序段的输出结果是【 B 】。 int x=3; do {printf (“%2d\n”,x-=2);} while (!(――x)); A. 1 B. 1 -2 C. 3,0 D. 是死循环 10.以下四个关于C语言的结论中,只有一个是错误的,它是【 D 】。 A. 可以用while语句实现的循环一定可以用for语句实现 B. 可以用for语句实现的循环一定可以用while语句实现 C. 可以用do-while语句实现的循环一定可以用while语句实现

第六章 循环控制

第七章数组 实验目的: 掌握一维数组的定义和引用 二维数组的定义和引用 字符数组的定义,初始化和引用。及字符串和运用。实验内容: 用筛选法求100之内的素数。 #include main() { int i,j,a[100]; for(i=2;i<100;i++) { a[i]=i; for(j=2;j<=i;j++) {if(j

{static int i,j,k,a[98]; for(i=2;i<100;i++) {a[i]=i;k=sqrt(i); for(j=2;j<=a[i];j++) if(j=k+1) printf("%5d",a[i]); } printf("\n"); } 7.2用选择法对10个整数从小到大排序。#include main() { int i,j,a[10],t; for(i=0;i<10;i++) scanf("%d",&a[i]); for(j=1;j<10;j++) for(i=0;i<=9-j;i++) if(a[i]>a[i+1]) {t=a[i+1];a[i+1]=a[i];a[i]=t;} for(i=0;i<10;i++) printf("%5d",a[i]); } 7.3求一个3×3矩阵对角线元素之和。

#include main() {int i=0,j=0,a[3][3],s1,s2; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); s1=a[0][0]+a[1][1]+a[2][2]; s2=a[0][2]+a[1][1]+a[2][0]; printf("s1=%d,s2=%d\n",s1,s2); } 7.4已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。 #include main() { static int a[10]={1,7,8,17,23,24,59,62,101};int i,j,t; scanf("%d",&a[9]); for(i=9;i>0;i--) if(a[i] main()

相关主题