搜档网
当前位置:搜档网 › 6 循环控制

6 循环控制

6 循环控制
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);

其运行结果是(C)

A.*2*6

B. *7

C.*5

D. *3*5

分析:do ..while循环结构不管初始值满不满足初始条件都要先执行一次循环。

7、i、j已定义为 int 类型,则以下程序段中内循环体的执行次数是(A)。

for(i=5;i;i--) for(j=0;j<4;j++){…}

A. 20

B. 24

C. 25

D. 30

分析:当j=5时,执行for(j=0;j<4;j++){...},其中循环体执行4次,之后j每减一循环体都执行4次,直到j=0。

8、以下不构成无限循环的语句或语句组是(A)。

A.n=10; while(n);{n--;}

B.n=0; while(1){n++;}

C.n=0; do{++n;}while(n<=0);

D.for(n=0,i=1;;i++)n+=i;

分析:A中while(n)和{n--;}中间不用加“;”。

9、有以下程序段

int y=9;

for(;y>0;y--)

if(y%3==0)

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

其运行结果是(C)。

A. 875421

B.963

C.852

D. 741

分析:执行循环。当y能被3整除时,输出“--y”。

第一次9%3=0,输出8;

第二次6%3=0,输出5;

第三次3%3=0,输出2。

10、有以下程序段:

int i,j;

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

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

printf("%d",i+j);

printf("\n");

}

其运行结果是(A)。

A.2 3 4

B.4 3 2

C.2 3

D.4 5

3 4 5 5 4 3 3 4 3 4

4 5 2 3

二、判断题

(√)1、do {……} while(0); 程序块至少会执行一次

(×)2、语句for(i=0;i=10;i++) {……}; 至多循环10次

(√)3、for( ; ; )表示无限循环。

(×)4、下面的循环不能正常结束: for (s=0,i=1; i<=10; ) { s=s+i; i++; }

(×)5、continue语句是终止整个循环的执行。

(×)6、对for(表达式1;;表达式3;)可理解为for(表达式1;1;表达式3;)。

(×)7、下列程序段执行循环二次 x=-1; do {x=x*x;}while(!x);

(√)8、下列程序段能计算s=10!的值 i=1;s=1; do {s=s*i;i++;} while(i<=10); (×)9、下列程序段将输出3和0,int x=3; do{printf(“%d\n”,x-=2);}while(!--x));

三、程序填空题

1.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后卖完?

main( )

{ int day,x1,x2;

day=0; x1=1020;

while( x1>0 )

{ x2= (x1)/2+2 ; x1= x2 ; day++; }

printf("day=%d\n",day);

}

2.输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。

#include

void main( )

{ int s1=0,s2=0;

char ch;

while(( getchar()() )!='\n')

{ if(ch>='0'&&ch<='9') s1++;

if(ch>='a'&&ch<='z' || s<’Z’&&s>’A’ ) s2++;

} printf(“%d,%d”,s1,s2);

}

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

#include

main( )

{ int i=1,t=1,s=0;

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

{ t=t*i ; s=s+t ; t=-t ;}

printf(“%d\n”,s);

}

四、阅读下列程序,写出程序运行的输出结果

1.void main( )

{ int y=9;

for( ;y>0; y--)

if(y%3==0) { printf("%d", --y); continue;}

}

程序运行后输出结果为 852

2. main( )

{ int n1,n2;

scanf("%d",&n2);

while(n2!=0)

{ n1=n2%10; n2=n2/10; printf("%d",n1); }

}

程序运行后,如果从键盘上输入1298;则输出结果为 8921 分析:定义n2=1298,第一次循环n1=1298%10=8,n2=1298/10=129;

第二次循环n1=129%10=9,n2=129/10=12;

第三次循环n1=12%10=2,n2=12/10=1;

第四次循环n1=1%10=1,n2=1/10=0;

跳出循环。

3. main ( )

{int s,i;

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

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

}

程序运行后输出结果为 5

分析:执行循环。

第一次i=1<3;i++=2,s=s+i=2;

第二次i=2<3;i++=3,s=s+i=5;

4. #include

void main( )

{ int s=1,t=1,a,n;

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

for(int i=1;i

{ t=t*10+1; s=s+t; }

s*=a; printf("SUM=%d\n",s);

}

程序运行后,如果从键盘上输入2,4;则输出结果为 2762

分析:第一次i=1<4,t=11,s=1+11=12,s=s*a=24;

第二次i=2<4,t=111,s=24+111=135,s=s*a=270;

第三次i=3<4,t=1111,s=270+1111=1381,s=s*a=2762.

五、程序改错

1、以下程序是显示[200,300]所有能被7整除的数,每行显示5个数,此程序有 5处错。 main( )

{ int i,n=0; /*n用来记录每行已打印数的个数*/ i<=300

while(i<300)

{ if(i%7==0) break; int i=200,n=0;

printf("%5d",i); 增加i++

n=n+1; 换成n=4

if(n=5)/*满5个换行*/

{ printf("\n"); n=0; }

}

}

2、以下程序是求 1!+2!+3!+4!+5!+6!+7!的值,其中有 3 处错误。

main() t=1

{ int i,s,t=0;

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

{ s=0; t=t*i; s=s+t; }

printf("sum=d\n",s);

} &d

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

实验4 循环控制 答案

实验4 循环控制 班级:学号: 姓名:日期: 一、实验目的 (1)熟悉掌握用while语句、do—while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调试程序。 二、实验内容 1.while语句 while 语句的一般形式为: while(表达式)语句; while 语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。 编程:求1-100的奇数和。 提示:循环变量的步长值为2。 #include void main() { int i=1,sum=0; while(i<=100) { sum=sum+i; i=i+2; } printf("sum=%d\n",sum); } 2.do-while语句 do-while 语句的一般形式为: do { 语句; }while(表达式);

do-while 语句的语义是:先执行循环体语句一次,再判别表达式的值,若为真(非0)则继续循环,否则终止循环。 编程:求1—100的偶数和。 #include void main() { int i=0,sum=0; do { i=i+2; sum=sum+i; }while(i<100); printf("sum=%d\n",sum); } 3.for语句 其一般形式为: for(表达式1;表达式2;表达3) 语句; for 语句的语义是: ⑴首先计算表达式1 的值。 ⑵再计算表达式2 的值,若值为真(非0)则执行循环体一次,否则结束循环。 ⑶执行循环体后再计算表达式3 的值,转回第2 步重复执行。 下列程序用于输出fibnocci 数列的前20 项,每行输出5 个。请填空。 说明:fibnocci 数列的前两项均为1,以后各项等于其前两项之和。 #include void main( ) { int i,f1,f2,f3,n; f1=1;f2=1; printf("\n%d %d ",f1,f2); n=2; for(i=1; i<=18 ;i++) { if (n % 5==0 ) printf("\n"); f3=f1+f2 ; printf("%d ",f3); n++;` f1=f2;f2=f3; } }

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

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

c语言循环语句和循环控制例题解析

一、循环控制 (一)、break语句 break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。 当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。 例如: int main(int argc, char *argv[]) { int sn=0,i; for(i=1;i<=100;i++) { if(i==51) break; /*如果i等于51,则跳出循环*/ sn+=i; /*1+2+……+50*/ } printf(%d\n,sn); } 可以看出,最终的结果是1+2+……+50。因为在i等于51的时候,就跳出循环了。自己写写怎样在while和do--while循环中增加break语句。 注意: 1. break语句对if-else的条件语句不起作用。 2. 在多层循环中,一个break语句只向外跳一层。 例如: int main(int argc, char *argv[]) { int i,j; printf(i j\n); for(i=0;i<2;i++) for(j=0;j<3;j++) { if(j==2) break; printf(%d %d\n,i,j); } } 输出结果为: i j 0 0 0 1 1 0 1 1 当i==0,j==2时,执行break语句,跳出到外层的循环,i变为1。 (二)、continue语句

软件工程第六章答案

精心整理 作业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)进一步简化后的结构化程序的流程图如下所示。

审计实务与案例_中央财经大学_5 第6章生产与仓储循环审计_(5.1.2) 案例6.1:生产循环内部控制缺

生产循环内部控制缺陷 A公司是一家医疗设备生产企业,日常核算已经高度电算化。审计项目组在审计工作底稿中记录了所了解的有关生产循环的内部控制部分内容摘录如下: 1.计划和开始生产时,计算机信息系统根据客户订购单或者对销售预测和产品需求的分析,在适当授权下显示订购数量。生产开始前,生产部门获得客户对产品设计和规格的认可后,由生产经理批准发出连续编号的生产通知单组织生产,并把监管计划和生产进度的控制内置在计算机信息系统。 2.产成品入库时,仓库保管员检查并签发预先按顺序编号的产成品验收单,并清点产成品数量,填写预先顺序编号的产成品入库单经质检经理、生产经理和仓储经理签字确认后,由仓库管理员将产成品入库单信息输入计算机系统,计算机系统自动更新产成品明细台账并与采购订购单编号核对。 3.产成品出库时,由仓库管理员取得发运凭证副联,作为产成品出库单,并将产成品出库单信息输入计算机系统,经销售经理复核并以电子签名方式确认后,计算机系统自动更新产成品明细台账。 4.产成品装运发出前,由运输经理独立检查出库单和发运通知单。 5.每月末,系统根据汇总的产成品销售数量及各产成品的加权平均单位成本自动计算主营业务成本,自动生成结转主营业务成本的会计分录并过入相应的账簿。 6.每月、每季和年度终产对产成品存货进行盘点,仓库管理员根据盘点中发现的毁损、陈旧、过时及残次存货编制不良存货明细表,交采购经理马静和销售经理赵阳分析该存货的可变现净值,如需要计提存货跌价准备的,由会计主管编制存货价值调整表,并安排相关人员将结存成本低于可变现净值的部分确认为存货

跌价准备进行账务处理。 审计项目组对生产循环的控制实施测试后,在审计工作底稿中记录了测试情况,部分内容摘录如下: 1.在抽样追踪了若干笔原材料领用申请单到材料明细台账的过程中,没有发现差异,但是存在仓库经理请假期间,仍然有仓库经理电子签名确认的业务。 2.在抽样追踪2018年11月10个主要产品的主营业务成本在系统中的结转过程时,注意到有2笔主营业务成本的金额存在手工录入修改痕迹。财务人员解释,由于新系统的相关数据模块运行不够稳定,部分产成品的加权平均单位成本的运算结果有时存在误差,因此采用手工录入方式予以修正,并且只有财务经理有权在系统中录入修正数据。审计检查了相关样本的手工修正后产成品加权平均单位成本,没有发现差异。 3.2018年度,公司主要原材料价格有所上涨。为稳定采购价格,公司适当增加部分新供应商,供应商数量由2017年末的40家增加到2018年末的50家。注册会计师检查输入采购系统的供应商信息主文档,查阅所有新增供应商是否经过审核批准;询问新增供应商信用状况等,未发现异常。 4. 考虑到公司2018年原材料采购批准相关的控制每日运行数次,审计项目组确定样本规模为25个。考虑到该控制自2018年7月1日起发生重大变化,审计项目组从上半年和下半年的交易中分别选取12个和13个样本实施控制测试。 分析并思考: 1.针对了解的有关生产循环的内部控制情况,分别指出是否存在内部控制缺陷,为什么?

第六章循环控制概要

第六章循环控制 通过本章实验作业应达目标 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);

for循环语句的翻译

课程设计任务书 学生姓名:辛波专业班级:计算机0707班 指导教师:彭德巍工作单位:计算机科学与技术学院 题目: FOR循环语句的翻译程序设计(递归下降法、输出四元式) 初始条件: 理论:学完编译课程,掌握一种计算机高级语言的使用。 实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)写出符合给定的语法分析方法的文法及属性文法。 (2)完成题目要求的中间代码四元式的描述。 (3)写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。 (4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 (5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 1 系统描述(问题域描述); 2 文法及属性文法的描述; 3 语法分析方法描述及语法分析表设计; 4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计; 5 编译系统的概要设计; 6 详细的算法描述(流程图或伪代码); 7 软件的测试方法和测试结果; 8 研制报告(研制过程,本设计的评价、特点、不足、收获与体会等); 9 参考文献(按公开发表的规范书写)。 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试及测试。 周5:撰写课程设计报告。 设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。 设计报告书收取时间:设计周的次周星期一上午10点。 指导教师签名: 2010年 01月 08日 系主任(或责任教师)签名: 2010年 01月 08日

for循环的使用和用法

简单的来说,++i 和i++,在单独使用时,就是i=i+1。 而a = ++i,相当于i=i+1; a = i; 而a = i++,相当于 a = i; i=i+1; 如果实在搞不明白++ --怎么回事,那也不是什么天塌下来的事。 因为a=++i完全可以写成i++; a=i。 a=i++完全可以写成a=i; i++。 而且,这也是一种好的程序风格:++ -- 语句如非特殊需要,请单独一行使用。假设i=1 如果执行a=i++ 完之后, a=1, i=2 如果执行a=++i 结果是, a=2, i=2 要分清楚++i,和i++的区别. i++是先执行当前命令,再执行递增. ++i是先递增,再执行命令 缺点: 对于数组,不能方便的访问下标值; 对于集合,与使用Interator相比,不能方便的删除集合中的内容(在内部也是调用Interator). 除了简单遍历并读取其中的内容外,不建议使用增强的for循环。 一、遍历数组 语法为: for (Type value : array) { expression value; } //以前我们这样写: void someFunction () {

int[] array = {1,2,5,8,9}; int total = 0; for (int i = 0; i < array.length; i++) { total += array[i]; } System.out.println(total); } //现在我们只需这样写(和以上写法是等价的): void someFunction () { int[] array = {1,2,5,8,9}; int total = 0; for (int n : array) { total += n; } System.out.println(total); } 这种写法的缺点: 显而易见,for/in(for each)循环自动控制一次遍历数组中的每一个元素,然后将它赋值给一个临时变量(如上述代码中的int n),然后在循环体中可直接对此临时变量进行操作。这种循环的缺点是: 1. 只能顺次遍历所有元素,无法实现较为复杂的循环,如在某些条件下需要后退到之前遍历过的某个元素;

第三节循环结构控制语句

第三节循环结构控制语句 程序设计中,经常会碰到这样的情况:重复执行同一段程序代码,直到满足条件为至。这种程序结构称为“循环结构”。 如何有效地完成重复工作呢? C++提供了三种循环控制语句:while语句,do…while语句,for语句。三种语句都由相似的三部分组成:进入循环的条件,循环体,退出循环的条件;完成的功能也类似。所不同的只是三者进入与退出循环的方式不同。 while语句:当条件满足时进入,重复执行循环体,直到条件不满足时退出。 do…while语句:无条件进入,执行一次循环体后判断是否满足条件,当条件满足时重复执行循环体,直到条件不满足时退出。 for语句:当循环变量在指定范围内变化时,重复执行循环体,直到循环变量超出了指定的范围时退出。 一、while语句 while语句的语法格式为: while (条件表达式) 循环体; 它的含义为:首先对条件表达式进行判断,若判断结果为假(false,0),则跳过循环体,执行while结构后面的语句。若判断结果为真(true,非0),则进入循环体,执行其中的语句序列。执行完一次循环体语句后,修改循环变量,再对条件表达式进行判断,若判断结果为真,则再执行一次循环体语句,……依次类推,直到判断结果为假时,退出while循环语句,转而执行后面的语句。即“先判断后执行”。 while循环由4个部分组成:循环变量初始化,判断条件,循环体,改变循环变量的值。 【例3-13】计算sum=1+2+3+…+10 #include void main() { int sum=0; //sum清0 int i=1; //循环变量初始化 while (i<=10) //判断条件 { //循环体 sum=sum+i; //累加到sum i++; //改变循环变量的值 } cout<<"sum="< using namespace std; void main() {

C语言的32个关键字和9种控制语句

C语言的32个关键字和9种控制语句 C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。 1 数据类型关键字(12个): (1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型 (4) float:声明浮点型变量或函数 (5) int:声明整型变量或函数 (6) long :声明长整型变量或函数 (7) short :声明短整型变量或函数 (8) signed:声明有符号类型变量或函数 (9) struct:声明结构体变量或函数 (10) union:声明共用体(联合)数据类型 (11) unsigned:声明无符号类型变量或函数 (12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) 2控制语句关键字(12个): A循环语句 (1) for:一种循环语句(可意会不可言传) (2) do :循环语句的循环体 (3) while :循环语句的循环条件 (4) break:跳出当前循环 (5) continue:结束当前循环,开始下一轮循环 B条件语句 (1)if: 条件语句 (2)else :条件语句否定分支(与if 连用) (3)goto:无条件跳转语句 C开关语句 (1)switch :用于开关语句 (2)case:开关语句分支 (3)default:开关语句中的“其他”分支 D返回语句 return :子程序返回语句(可以带参数,也看不带参数) 3 存储类型关键字(4个) (1)auto :声明自动变量一般不使用 (2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)

c语言循环控制语句

循环控制结构(又称重复结构)是程序中的另一个基本结构.在实际问题中,常常需要 进行大量的重复处理,循环结构可以使我们只写很少的语句,而让计算机反复执行,从而完成大量类同的计算. C语言提供了while语句、do...while语句和for语句实现循环结构. 3.4.1while语句 while语句是当型循环控制语句,一般形式为: while<表达式>语句; 语句部分称为循环体,当需要执行多条语句时,应使用复合语句. while语句的流程图见图3-8,其特点是先判断,后执行,若条件不成立,有可能一次也不执行. [例3-11]求n! 分析:n!=n*(n-1)*(n-2)*..2*1,0!=1.即S0=1,Sn=Sn-1*n.可以从S0开始,依次求出S1、S2、...Sn. 统一令S等于阶乘值,S的初值为0!=1;变量i为计数器,i从1变到n,每一步令S=S*i,则最终S中的值就是n!. 流程图见图3-9,程序如下:

考察图3-9中循环部分的流程图可以看出,在循环前各变量应有合适的值(s=1),另外,控制循环结束的变量(此处为i)必须在循环体中被改变,否则,循环将无限进行下去,成为死循环.

本题中,将多项式的每一项用t表示,s代表符号,在每一次循环中,只要改变s、n的值,

就可求出每一项t. 一般情况下,while型循环最适合于这种情况:知道控制循环的条件为某个逻辑表达式的值,而且该表达式的值会在循环中被改变,如同例3-12的情况一样. 3.4.2do...while语句 在C语句中,直到型循环的语句是do...while,它的一般形式为: do语句while<表达式> 其中语句通常为复合语句,称为循环体. do...while语句的流程图见图3-10,其基本特点是:先执行后判断,因此,循环体至少被执行一次. 但需要注意的是,do...while与标准的直到型循环有一个极为重要的区别,直到型循环是当条件为真时结束循环,而do...while语句恰恰相反,当条件为真时循环,一旦条件为假,立即结束循环,请注意do...while语句的这一特点. 例[3-13]计算sin(x)=x-x3/3!+x5/5!-x7/7!+... 直到最后一项的绝对值小于1e-7时为止. 分析:这道题使用递推方法来做. 让多项式的每一项与一个变量n对应,n的值依次为1,3,5,7,...,从多项式的前一项算后一项,只需将前一项乘一个因子: (-x2)/((n-1)*n) 用s表示多项式的值,用t表示每一项的值,程序如下: #include # include m a i n ( ) { double s,t,x ; int n ; printf("please input x :"); scanf("%lf",&x); t=x; n=1; s=x; do { n=n+2; t=t*(-x*x)/((float)(n)-1)/(float)(n); s=s+t;

第六章循环结构练习题

第六章循环控制 【题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

第六章循环控制(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

for循环实例.

for循环实例 读取的是数组expr的行数,然后程序执行循环体(loopbody),所以expr有多少列,循环体就循环多少次。expr经常用捷径表达式的方式,即first:incr:last。 在for和end之间的语句我们称之为循环体。在for循环运转的过程中,它将被重复的执行。For循环结构函数如下: 1.在for循环开始之时,matlab产生了控制表达式。 2.第一次进入循环,程序把表达式的第一列赋值于循环变量index,然后执行循环体内的语句。 3.在循环体的语句被执行后,程序把表达式的下一列赋值于循环变量index,程序将再一次执行循环体语句。 4.只要在控制表达式中还有剩余的列,步骤3将会一遍一遍地重复执行。 10次。循环系数ii在第一次执行的时侯是1,第二次执行的时侯为2,依次类推,当最后一次执行时,循环指数为10。在第十次执行循环体之后,再也没有新的列赋值给控制表达式,程序将会执行end语句后面的第一句。注意在循环体最后一次执行后,循环系数将会一直为10。 环指数ii在第一次执行时为1,第二次执行时为3,依此类推,最后一次执行时为9。在第五次执行循环体之后,再也没有新的列赋值给控制表达式,程序将会执行end语句后面的第一句。注意循环体在最后一次执行后,循环系数将会一直为9。 循环指数ii在第一次执行时为1,第二次执行时为3,第三次执行时为7。循环指数在循环结束之后一直为7。

循环指数ii 在第一次执行时为行向量??? ???41,第二次执行时为??? ???54,第三次执行时为 ??????76。这个例子说明循环指数可以为向量。 例1 阶乘(factorial )函数 这种循环将会执行5次,ii 值按先后顺序依次为1,2,3,4,5。n_factorial 最终的计算结果为1ⅹ2ⅹ3ⅹ4ⅹ5=120。 例2 统计分析 执行如下算法: 输入一系列的测量数,计算它们的平均数和标准差。这些数可以是正数,负数或0。 答案: 这个程序必须能够读取大量数据,并能够计算出这些测量值的平均数和标准差。这些测量值可以是正数,负数或0。 因为我们再也不能用一个数来表示数据中止的标识了,我们要求用户给出输入值的个数,然后用for 循环读取所有数值。 下面的就是这个修定版本的程序。它允许各种输入值,请你自己验证下面5个输入值的

软件工程第六章答案

作业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标号

《For循环语句》

《F o r循环语句》教学设计 池州市第八中学杜亦麟 课题 2.4.1 For循环语句 教学内容 粤教版信息技术(选修1)《算法与程序设计》第二章《程序设计基础》第四节《程序的循环结构》第一小节《For循环语句》 教学目标 知识与能力: 1.理解循环结构的基本思想及For语句的执行过程。 2.培养和提高学生逻辑思维能力,使其可以独立完成简单循环结构算法的设计。 3.能够利用For循环语句实现循环结构,解决实际问题。 过程与方法: 1.通过简单的数学问题的分析、讲解,让学生掌握For循环语句语法知识,及其执行原理。 2.以任务驱动,学生分组合作探究的方式,进一步让学生理解For循环语句的基本思想,同时培养学生自主探究和合作学习的能力。 3.通过自评和互评活动,培养学生语言表达能力和归纳总结能力。 情感态度与价值观: 1.提高学生学习兴趣,培养学习的主动性和探究性。 2.培养学生团结协作精神,体验成功的快乐。 教学重点 1.掌握For循环语句的格式和功能; 2.理解For循环语句的执行过程。 教学难点 控制循环的条件、确定循环体的内容 教材分析 第二章是程序设计基础,也是全书的基础。它沿着分析问题、设计算法、编写程序等运用计算机解决问题之路,开始学习如何使用VB程序设计编写程序解决问题。本节课的主要内容For语句的基本格式、执行过程及语句的实际应用。又是本章的重点和难点内容。而循环结构是程序设计的三种基本结构之一,其作用是使一段程序反复执行。For循环语句在程序设计中频繁出现,也是三种结构中较难的一种,因此,学好本节课非常重要,本节课的学习会使学生对算法有一个更深刻的理解,为以后的程序设计打下一个良好的基础,也可以培养学生的创新能力、分析问题和解决问题的能力以及探究精神。

高中信息技术FOR循环控制语句教案

FOR循环控制语句 一、基本说明 1模块:算法与程序设计 2年级:高中二年级 3所用教材版本:广东教育出版社 4所属的章节:第二章第四节 5学时数: 45分钟(机房授课) 二、教学设计 1、教学目标: 知识与技能:理解循环结构程序的作用;掌握FOR/NEXT语句的使用方法,能够将它应用于问题解决之中;知道FOR/NEXT语句的执行过程;了解循环变量的特殊性与重要性; 过程与方法:经历计算机解决问题的过程,体验成功的快乐,通过程序设计,提高学生创造性思维和综合运用知识的能力。 情感态度与价值观:培养学生的团结协作的精神。 2、内容分析:本节主要内容为VB语言的For循环语句来实现循环控制结构,解决实际问题,并且培养学生的创新能力。 本节重点:让学生学会使用VB语言的For循环语句来实现循环控制结构,解决实际问题,并且培养学生的创新能力。 本节难点:本节是VB教学中较难的一部分,多重循环结构则是本节程序设计的难点,本节教学要能够使学生将以前所学习过的知识有机地结合在一起,并且充分发挥自己的创造力,利用三种基本结构进行编程。 3、学情分析:教学对象为高二的学生,虽然在高一数学课中对流程图、算法等稍有接触,但并未深入。学生对于算法的理解上还存在一定的偏差。即便给

一个比较容易解的问题,让学生用计算机算法描述还存在一定的困难。经过本期前几周的学习,学生对VB语言的格式开始有了初步的认识也产生的一定的兴趣。 4、设计思路:教材上直接讲了循环结构的应用。若按教材上的来讲,学生不容易接受。很容易造成学生的简单模仿,而不是真正的掌握。所以先设计一些简单的速算比赛,让学生和计算机比赛,激发学生的学习兴趣。然后给出基本任务,让学生自主探究,完成任务。接着给出提高任务----打印99乘法表,及时点拨学生,让学生学会FOR循环的嵌套使用。 三、教学过程

第5章循环控制结构作业

第5章循环控制结构 一、单选题 1、下列循环的输出结果是( B ) #include int main( ) { int n=10 while (n>7) { n--; printf("%d\n",n); } } A. 10 9 8 B. 9 8 7 C. 10 9 8 7 D. 9 8 7 6 2、以下程序的输出结果是( A ) #include int main( ) { int n=4; while(n--)printf("%d ",--n); } A. 2 0 B. 3 1 C. 3 2 1 D. 2 1 0 3、设有以下程序段,则下面描述中正确的是(C) #include int main( ) { int k=10; while(k==0) k=k-1; } A. while循环执行10次 B.循环是无限循环 C.循环体语句一次也不执行 D.循环体语句执行一次 4、有以下程序段,while循环执行的次数是( C) #include int main( ) { int k=0; while(k=1) k++; }

A.无限次 B.有语法错,不能执行 C.一次也不执行 D.执行一次 5、设K为整形,则下面的while循环执行( B )次 #include int main( ) { int k=2; while(k==0) { printf("%d",k); k--; } printf("\n"); } A.无限次 B. 0次 C. 1次 D. 2次 6、读程序,输出结果是(C ) #include int main( ) { int num=0; while (num<=2) { num++; printf("%d",num); } } A. 1 B. 2 2 C. 1 2 3 D. 1 2 3 4 7、下面程序段的运行结果是(A ) #include int main( ) { int a,b,c; a=1;b=2;c=2; 2 1 1 12 while(a int main( ) { int a=1,b=10;

相关主题