6-2018第六章-循环结构程序设计

合集下载

上机实验4:循环结构程序设计

上机实验4:循环结构程序设计
cp41c实程实算下列实和的近似实入求和精度实106106者实用逗分隔
上机实验4:循环结构程序设计 循环结构程序设计
1.《级数求和》 《级数求和》 ( filename: cp41.c ) 编程,计算下列级数和的近似值,x的值从键盘输 入,求和精度为10-6 ,输出达到精度要求的最小n与 级数和,两者间用逗号分隔。例如, 调试数据: 输入:0.523599 输出:4,0.500000 ⑴ 左例 输入:-1 输出:5,-0.841471 ⑵ 4 输入:6.283185 输出:13,0.000000
提示: 提示: 可模拟人工除法求小数的每一位(设 可模拟人工除法求小数的每一位 设 a=1, b=素数): : 商的整数部分: ⑴ 商的整数部分:a/b 输出( .)。 可用 printf("%d.", a/b); 输出(即0.)。 .) 余数: 余数: a=a%b ; ⑵ 商的小数部分: 商的小数部分: 每位商: 每位余数: 每位商:a*10/b 每位余数:a=a*10%b ; ⑶ 从余数判断循环节是一种简便的方法


4. 《求符合要求的自然数对》 ( filen数对:它们的和为 667,它们的最小公倍数除以最大公约数的商为120。 输出格式为每对一行,小数在前,大数在后,两数间 用逗号分隔,多对则按每对中小数的大小升序排列先 后。
5.《大于正整数a的n个素数》 《大于正整数 的 个素数》 个素数 编程, 输出大于并最接近正整数a的n个素数,每行 打印8个,a 和 n 从键盘输入。例如: 输入: 100 17 输出: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 ( filename: cp45.c )

C语言循环结构程序设计1

C语言循环结构程序设计1
语句
3 while语句
例1:输出1~200中所有能被4整除的整数。
i=1 i<=200
i % 4==0 T 输出 i i++ F
#include <stdio.h> void main() { int i=1; while(i<=200) { if( i%4==0) printf(“%d,”,i); i++;
2 循环结构算法设计
例1:输出1~200中所有能被4整除的整数。
i=1 i<=200
i % 4==0 T 输出 i i++ F
2 循环结构算法设计
直到型循环结构设计 (1)赋初值 (2)执行循环操作的语句序列 (3)判断循环条件是否为真,是则转(2) 否则转(4) (4)结束循环
2 循环结构算法设计
执行语句 语句 执行表达式3
循环体
for语句等价于下列语句: 语句等价于下列语句: 语句等价于下列语句 表达式1; 表达式 ; while (表达式 ) 表达式2) { 语句; 语句; 表达式3; 表达式 ; }
执行for循环之后的语句
5 for语句
for语句使用最多的情况:
for(循环变量赋初值;循环条件;循环变量增量) 语句; 例如:for( i=1;i<100;i++ ) for( sum+=i; 注意:for语句后边括号中的三个表达式可以省略, 可是括号中的两个分号不能省略
5 for语句
3.省略表达式3 for(i=0;i<10; ) i的值不变,也是 sum+=i; 死循环
5 for语句
例2:求4的10次方 …… int a=1,b=4,i; for(i=0;i<10;i++ ) a=a*b; ……

第六章 汇编语言程序设计

第六章 汇编语言程序设计

AA:
SUB MOV MOV HLT
BX,AX DI, 2800H [DI],BX
16
改: CLC CMP JC SUB MOV MOV HLT AA: SUB MOV MOV HLT BX,AX DI, 2800H [DI],BX
17
AX,BX AA AX,BX DI, 2800H [DI],AX
CMP JZ CMP JZ MOV JMP NEXT: DONE: MOV HLT AL, 'y ' ;比较AL与小写字母y NEXT ;相等,转移到NEXT AL, 'Y ' ;不是小写字母y,是大写字母Y ? NEXT AH,-1 ;相等,转移NEXT ;不是大Y ,令AH=-1 Y AH 1
DONE ;无条件转移DONE AH,0 ;是Y或Y,令AH=0
AL,BL , AL,0 , STOR AL,80H , MINUS AL, 1 , STOR AL,0FFH , BH,AL ,
;取X ;X=0,Y=X , ;X<0 < ;X>0,Y=+1 > , X<0,Y= -1 < , ;保存Y 保存
MINUS: : STOR: :
MOV MOV HLT
例4,判断是否为字母 .若AL中是字母Y(含大小写),则令AH ,判断是否为字母Y. =0,否则令AH=-1
为奇数, ;否则AX为奇数,加1 否则 为奇数 ;AX←AX÷2 ÷
12
法2:将最低位用移位指令移至进位标志,判断进位标志 :将最低位用移位指令移至进位标志, 就是偶数; 是0,AX就是偶数;否则,为奇数 , 就是偶数 否则,
MOV SHR JNC ADD E1: SHR

VB课件第6章Visual Basic 循环结构

VB课件第6章Visual Basic 循环结构
End Sub
Do Until i = 100
例6-3:求 1+22+32+……n2大于1000的最小值。
选Do … Loop语句: 不知道要加到第几项,但知道累加和大于 1000,并且,第一次超过1000时就不再累 加了,所以选Do … Loop语句。
求项数(计数i): i=0(初值) ,i=i+1(重复执行)
例: 利用随机函数10个产生[20,90]的整数, 求其平均值.
界面设计: 单击窗体, 显
示结果如图.
例: 利用随机函数10个产生[20,90]的整数, 求其平均值.
分析: 产生数X 求和s
求平均a
产生一个X: X=Int(Rnd*71+20)
显示产生的值: Print x
计算和: s=s+x
重复10次 求得这10 个数的和s
Private Sub Form_Click( ) Dim i As Integer i=0 Do While i < 100 i=i+1 Print i; If i Mod 10 = 0 Then Print Loop
End Sub
用Do Until … Loop循环来编制 例6-2的程序
Private Sub Form_Click() Dim i As Integer i=0 Do While i < 100 i=i+1 Print i; If i Mod 10 = 0 Then Print Loop
If Max <= x Then Max = x Next i Print Print “最大值为:”; Max End Sub
6.4 循环嵌套
循环嵌套:在一个循环语句的循环体中又包含有另一 循环语句。 VB的三种循环可以自身嵌套与相互嵌套 要求:内层结构一定包含在外层结构中,不能交叉

6 循环结构程序设计

6 循环结构程序设计

执行 循环 后面的语句
例如:1~100的累加 for(i=1;i<=100;i++)
sum=sum+i;
它相当于以下语句: i=1; 表达式1; while(表达式2) 表达式3;
第六章 6.3 for 语句
while (i<=100)
{ sum=sum+i; i++; }
3、 说明
三个表达式都可以是逗号表达式。
【例1】输入一系列整数,判断其正负号,当 输入0时,结束循环。
#include "stdio.h" void main() { int x; scanf(" %d ",&x);
输入数据,为第 一次判断做准备
判断是否结束 判断正负号
while(x!=0) { if(x>0) printf(" + "); else printf(" - "); scanf(" %d ",&x); }
第六章 循环结构程序设计
6.1 goto语句构成的循环
1、语句形式:
例如: goto label; …… 2. 在程序执行过程中,如果 label: …... goto 语句标号;
遇到goto语句,则程序执行 流程无条件地转向语句标号 后的语句继续执行。
语句标号用标识符 表示,它的定名规 则与变量名相同。
思考
求n!=1 × 2 × 3 × …n
累乘器赋初值
整数连乘结果一定 是整数,而本例中 结果数值相当大, 用long型都无法存 放,因此将存放累 乘结果的变量s定义 为double型。
第六章 6.3 for 语句

第6章 循环控制

第6章 循环控制

例6.2 求1到3的和
#include <stdio.h> void main() { int i,sum=0; i=1; while (i<=3) { sum=sum+i; i++; } }
printf(″%d\n″,sum);
注意:
循环体如果包含一个以上的语句,应该用花括弧括起来,以 复合语句形式出现。
例6.9 求100~200间的全部素数。
判断m是否为素数的方法:让m被 m 除,如果m能被2 — 的任何一个整数整除,则不是素数,否则为素数。
m

#include <stdio.h> # include <math.h> void main() { int m,k,i,n=0; for(m=101; m<=200; m=m+2) { k=sqrt(m); for (i=2;i<=k;i++) { if (m%i==0) break; } if ( i==(k+1)) { printf(“%d “,m); n=n+1; }
} printf(″%c\n″,c);
} }
1.从输入的若干个整型值中选出最大的一个,以-32768结束
#include<stdio.h> void main() { int input,max; while(input!=-32768) { scanf(“%d”,&input); if(input>max) max=input: } } #include<stdio.h> void main() { int input,max; scanf(“%d”,&input); max=input; while(input!=-32768) { scanf(“%d”,&input); if(input>max) max=input: }}

循环结构程序设计答案

循环结构程序设计答案

循环结构程序设计一、选择题:1.设有程序段int k=10;while(k=0) k=k-1;则下面描述中正确的是(C)A.w hile 循环执行10次B.循环是无限循环C.循环体语句一次也不执行D. 循环体语句执行一次2.设有以下程序段int x=0,s=0;while(!x!=0) s+=++x;printf(“%d”,s);则()A运行程序段后输出0 B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次3.语句while(!E);中的表达式!E等价于()A. E= =0B.E!=1C.E!=0D.E= =14.下面程序的运行结果是()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,0B.2,1,0C.1,2,1D.2,1,15.下面程序的运行结果是()x=y=0;while (x<15) y++,x+=++y;printf(“%d,%d”,y,x);A.20,7B.6,12C.20,8D.8,206.下面程序的运行结果是()int n=0;while(n++<=2) ;printf(“%d”,n);A.2B.3C.4D.有语法错7.设有程序段t=0;while(printf(“*”)){t++;if(t<3) break;}A.其中循环控制表达式与0等价B. 其中循环控制表达式与‘0’等价B.其中循环控制表达式是不合法的D.以上说法都不对8.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空:#include “stdio.h”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);}}A.!a=bB.a!=bC.a= =bD.a=b9.下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m,n中较大者,请选择填空:#include “stdio.h”main(){int m=0,n=0;char c;while(( 1 )!= ‘\n’){if(c>= ‘A’&&c<= ‘Z’) m++;if(c>= ‘a’&&c<= ‘z’) n++;}printf(“%d\n”,m<n? 2 );}[1]A.c=getchar() B.getchar() C.c=getchar() D.scanf(“%c”,c)[2]A.n:m B.m:n C.m:m D.n:n10.下面程序的功能是将小写字母变成对应大写字母后的第二个字母,其中y变成A,z变成B。

循环结构

循环结构

[作业] 1、下列程序段是计算_______ 公式的。 S:=0; t:=1; for i:=1 to 10 do Begin t:=t*I; s:=s+t end; (A) s=1+2+3+4+…+10 (B) s=1*2*3*4*…*10 (C)s=1!+2!+3!+…+10! (D) s=1+2*3+3*4+4*5+…+9*10 注:N!表示1*2*3*…*N ,如3!=1*2*3 本题的循环体不止一句,是一个复合语句,用begin 和 end 圈起来了。 2、var x1,x2,I,x:integer; 该题采用列表法,将变量的值分步写出来。 begin x1:=3; i x x2 x1 x2:=8; 0 8 3 for i:=1 to 5 do 1 begin x:=(x1+x2)*2; 2 x1:=x2; x2:=x; 3 end; 4 writeln(‘x=’,x); 5 end. 运行结果:

[例2]求1+2+3+4+……+N的 和小于等于10000的最小的N。
程序如下: var n,s:integer; begin n:=0; s:=0; while s<10000 do begin n:=n+1; s:=s+n; end; writeln(‘N=’,n) end.
[注意]其中的 n和s必须在循环 语句之前赋初值。
[例1]体育彩票。体育彩票的号码由7位数字组成,现 用电脑帮你编一程序产生随机数。
重复7次,可以使用循环语句来实现。 Var a, I :integer; Begin randomize; {启动程序的随机数开关} For i:=1 to 7 do Begin a:=random(10); {a取一个小于10的整数,但不取负数,可以取0} write (a); end; end.

循环结构程序设计

循环结构程序设计
(1) 内循环变量与外循环变量不能同名; (2) 外循环必须完全包含内循环,不能交叉; (3) 不能从循环体外转向循环体内,也不能从外循环转向内循环.




For ii =1 To 10 For jj=1 To 20 … Next jj Next ii For ii =1 To 10 … Next ii For ii =1 To 10 … Next ii
5.1 For循环结构
1. For循环语句 (一般用于循环次数已知) 形式 For 循环变量=初值 to 终值 [Step 步长] 语句块 循环变量得初 [Exit For] 循环体 值 语句块 循环变量在终值 内 Next 循环变量 T
语句块
F
步长
>0 初值<终值 =1 时,可省略 <0 初值>终值 =0 死循环
( 2 ) 当 使 用 Until < 条 件 > 构 成 循 环 时 , 当 条 件 为 “假”,则反复执行循环体,直到条件成立,即为“真” 时, 则退出循环。
(3)在循环体内一般应有一个专门用来改变条件表达式中 变量的语句,以使随着循环的执行,条件趋于不成立 (或成立),最后达到退出循环。 (4)语句Exit Do的作用是退出它所在的循环结构,它只能 用在DO/Loop结构中,并且常常是同选择结构一起出现在循 环结构中,用来实现当满足某一条件时提前退出循环。
5.3 While…Wend语句
使用格式如下: While <条件 >
<循环块>
Wend 说明:该语句的功能与Do While <条件>….Loop实现 的循环完全相同。
例:用do…Loop语句改写前面的例题2

第6章程序设计语言习题与答案

第6章程序设计语言习题与答案

第六章习题(1)复习题1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。

自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。

用机器指令形式编写的程序称为机器语言,用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。

这些使用助记符语言的语言后来就被称之为汇编语言。

(P135P136)2、什么是高级程序设计语言?它有什么特点?高级语言是汇编语言的一种抽象。

高级语言的设计目标就是使程序员摆脱汇编语言细节的繁琐。

高级语言同汇编语言都有一个共性,那就是:它们必须被转化为机器语言,这个转化的过程称为解释或编译。

(1)高级语言接近算法语言,易学、易掌握;(2)高级语言设计出来的程序可读性好,可维护性强,可靠性高;(3)高级语言与具体的计算机硬件关系不大,其程序可移植性好,重用率高;(4)高级语言自动化程度高,开发周期短,利于提高程序的质量。

(P138)3、列举程序设计语言的几种范型。

程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。

(P138-140)4、简述语言虚拟机。

提示:语言虚拟机是某种语言的解释器。

语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。

这样使得硬件系统能够支持这种语言编写的程序的有效执行。

目前最流行的语言虚拟机是Java虚拟机。

(P147)5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。

编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。

编译方式是一次编译,然后执行程序可以反复多次执行。

解释是另一种将高级语言转换为可执行程序的方式。

第6讲-循环结构-while

第6讲-循环结构-while

示例6-2 程序
思考: • 循环结束后,变量 a 中的值是什么? • 如果循环体中没有下面这条语句会怎么样?
a =raw_ input('请输入字符,如果输入 # 号则结束输入操作: ')
while语句解决确定循环次数的问题
• 确定循环次数的问题是指循环之前可以预知 循环即将执行的次数
• 为了控制循环次数,通常在程序中设置一个 计数变量,每次循环,该变量进行自增或自 减操作,当变量值自增到大于设定的上限值 或者自减到小于设定的下限值时,循环自动 结束。
示例 6-3
开始
编程计算1+2+3+…+100 的值。
i 、s 赋初值 1、0
【分析】 • 本题使用循环结构解决,每循 环一次累加一个整数值,整数 的取值范围为1~100。 • 由于整数的范围是确定的,因 此循环次数也是确定的。
i <= 100 ? True 将 i 累加到 s 中 i 自增 1
False
思考: • 去掉s=0语句会 有什么后果? 请尝试
示例 6-2
编程从键盘输入若干个字符或 字符串,每次输入完后直接输 出当前的输入,当输入的字符 串为“#” 时终止该操作。
【分析】


(1)本题使用循环结构解决,每 次循环从键盘输入一个字符或字 符串,直到输入为“#”字符时停 止循环。
(2)由于输入的次数无法确定, 因此循环次数不确定。
思考题:不用break,如何实现该功能?
课堂练习与课后作业
• 课堂练习
– 教材上的相关实例 – 示例1-4
• 课后作业
– 输入一个整数n,计算1+2+3+…+n – 输入一个整数n,计算n! – P75:3,5,6,7,8

C语言考试

C语言考试
A. (***a=25,b=14,c=19) B. (***a=26,b=13,c=19)
C. (###a=25,b=14,c=19) D. (###a=26,b=13,c=19)
答案:D
4、以下程序的输出结果是( )。
main()
{
int i=010,j=10,k=0x10;
printf("%d,%d,%d\n",i,j,k);}
{
char c1='6',c2='0';
printf("%c,%c,%d,%d\n",c1,c2,c1-c2,c1+c2);
}
A.因输出格式不合法,输出出错信息B.6,0,6,102
C.6,0,7,6 D.6,0,5,7
答案:B
7、设有如下定义:int x=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));输出结果是( )。
}
答案:D
6、在C语言中,多分支选择结构语句为
switch(c)
{case常量表达式1:语句1;
……
case常量表达式n-1:语句n-1;
default语句n;}
其中括号内表达式c的类型( )。
A.可以是任意类型B.只能为整型
C.可以是整型或字符型D.可以为整型或实型
答案:C
7、当a = 1, b = 3 , c = 5, d = 4时,执行完下面程序段后x的值为( )。
答案:正确
3、健壮的算法不会因为非法输入而出现莫名其妙的状态。()
答案:正确
第三章数据类型运算符与表达式
一、单项选择题
1、下列字符串是标识符的是( )。

第六章 循环结构程序设计

第六章 循环结构程序设计

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<stdio.h>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"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<stdio.h>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语言第6章循环结构程序设计

C语言第6章循环结构程序设计

第6章循环控制本章要求:1、初步熟悉用计算机解决问题的思路。

2、掌握while、do-while、for语句的特点和使用方法。

3、掌握break、continue语句的用法。

4、熟悉一些常见问题的算法及其C语言实现。

§6.1 概述循环:反复执行称为“循环体”的程序段。

循环控制常用于数学迭代、对象遍历等问题的求解,几乎所有实用程序都包含循环。

特别是在现代多媒体处理程序(图像、声音、通讯)中,循环更是必不可少。

Intel公司为了加快循环程序的执行,在CPU硬件中加入多媒体扩展指令MMX(Multi-Media-eXtension );AMD在CPU中加入3D Now!指令。

循环结构是结构化程序三种基本结构之一。

(顺序结构、分支结构)。

根据开始循环的初始条件和结束循环的条件不同,C语言中用如下语句实现循环1、用goto语句和if语句构成循环。

2、用while语句。

3、用do-while语句。

4、用for语句。

§6.2 goto语句一般形式:goto 语句标号作用:无条件转向“语句标号”处执行。

“语句标号”是一个标识符,它表示程序指令的地址。

goto语句不符合结构化程序设计准则,因为无条件转向使程序结构无规律、可读性差。

一般应避免使用goto语句,但如果能大大提高程序的执行效率,也可以使用。

[例6.1] 用if语句和goto语句构成循环,求。

main(){int i,sum=0;i = 1;loop:if (i <= 100){ sum = sum + i;i++;goto loop;}printf("%d",sum);}§6.3 while语句一般形式:while(表达式) 语句作用:实现“当型”循环。

当“表达式”非0(真)时,执行“语句”。

“语句”是被循环执行的程序,称为“循环体”。

特点:先判“表达式(条件)”。

[例6.2]main(){int i,sum=0;i = 1;whie (i <= 100){sum = sum + i;i++;}printf("%d",sum);}注意:1、注意给出循环的初始条件,如本例中“sum=0、i=1”。

第六讲控制流-循环结构程序设计

第六讲控制流-循环结构程序设计

16
6.4 循环语句嵌套
while(表达式 表达式1) 表达式 { …
while(表达式 表达式2) 表达式 { … … } } }
while(表达式 表达式1) 表达式 { … do{ …
while(表达式 表达式2) 表达式 …
}
while(表达式 表达式1) 表达式 { … for( …; …; …)
F
P
T
当P为真 为真 A A
4
6.1 while语句 语句
100
例3.9: 求 ∑ n
n=1
Байду номын сангаас
i=1 当i<=100 sum=sum+i i+ +
#include <stdio.h> void main(void) { int i,sum=0; i=1; 要点: 语句要么是单条语句,要么是复合语句。 要点 语句要么是单条语句,要么是复合语句。 while (i<=100) 循环体若不止一条语句时, 循环体若不止一条语句时, { sum=sum+i; 应用{…}括起来。 括起来。 应用 括起来 i++; 在循环体中应有使循环趋于结束的语句, 在循环体中应有使循环趋于结束的语句, } 以避免“死循环” 以避免“死循环”。 printf(“%d”,sum); }
9
求解表达式1 求解表达式 F
表达式2 表达式 T 语句
求解表达式3 求解表达式
for循环下面的语句 循环下面的语句
10
6.3 for语句 语句
例:求 ∑ n 求
n=1 100
#include <stdio.h> void main(void) { int i,sum=0; , ; for(i=1;i<=100;i++) sum=sum+i; ; printf(“%d”,sum); }

第六章循环程序设计案例

第六章循环程序设计案例

二、什么是循环

生活中的循环
打印50份试卷
10000米赛跑
锲而不舍地学习
旋转的车轮
循环结构的特点
循环结构 循环条件 循环操作
二、什么是循环
循环结构也称重复结构:程序中反复执行的一 组指令或程序段。 循环体:被反复执行的程序段。 循环变量:用来控制循环是否继续进行的变量。
三、循环语句
while 循环 do...while 循环 for 循环
for语句最简单的形式: for(循环变量赋初值;循环条件;循环变量增值) 例如: for(i=1;i<=100;i++) sum=sum+i; 用for语句 简单、方便。
main() {int i,sum=0; for(i=1;i<=100;i++)
sum=sum+i;
printf(“%d”,sum); }
初值(从什么情 况开始)
int i=1;
条件(结束值,什么 情况结束)
while (i<=5) {
循环体(重 复什么)
printf(“hello\n"); i++; } }
循环体中改变 循环条件的语 句)
例 求1+2+· · · · · ·+ 100
分析: 求和的过程为:
1) S=1 2) S=1+2 3) S=1+2+3 · · · · · · 100) S=1+2+ · · · +100 S=0 S =S+1 S =S+2 S = S+ 3 · · · · · · S= S+100
do-while、while的区别

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

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

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

第六讲 循环结构程序设计

第六讲 循环结构程序设计

图6 -1
循环语句, 的值, 【例6.1】利用 】利用while循环语句,计算 循环语句 计算1+1/2+…+1/50的值, 的值 并打印计算结果。 并打印计算结果。 本题可看作数列{a 的求和, 本题可看作数列 k = 1/k | k=1,2,…,50 }的求和,累加求和的 , , , 的求和 通项为: 通项为:sum+1/k—>sum,所以,可以用如下伪语言算法描述。 ,所以,可以用如下伪语言算法描述。
输出sum 输出
说明
1. while语句中循环体最少执行零次、最多执行无穷次,即 语句中循环体最少执行零次、 语句中循环体最少执行零次 最多执行无穷次, 死循环” “死循环”。 2. 如果循环体是一个空语句,表示不执行任何操作。 如果循环体是一个空语句,表示不执行任何操作。 3. 循环体中应有使循环趋于结束的语句。例如,在[例6.1] 循环体中应有使循环趋于结束的语句。例如, 例 循环结束条件是i<=50, 循环体中语句 ; 将最终导致 循环体中语句i++; 中 , 循环结束条件是 i<=50的发生。 如果无此语句 , i值始终不变, 则该循环将永 的发生。 值始终不变, 的发生 如果无此语句, 值始终不变 远执行下去,这种情况称为死循环。例如, 远执行下去,这种情况称为死循环。例如, while(1) sum + = i; ; 就是一个死循环。 就是一个死循环。
6.1 当型循环 当型循环while语句 语句
当型循环又叫while循环,其一般句型为: 循环,其一般句型为: 当型循环又叫 循环 while( 表达式 ) { 循环体语句; 循环体语句; } 其中: 循环体语句, 可以是一条语句, 其中 : 循环体语句 , 可以是一条语句 , 但通常 为复合语句。 为复合语句。 while循环执行时,先处理表达式,表达式的值 循环执行时,先处理表达式, 循环执行时 循环体语句被执行, 为“真”时,循环体语句被执行,然后再去判表达 式的值,如果表达式的值仍为“ 式的值,如果表达式的值仍为“真”时,则再次执 行循环体语句;如果表达式值为“ 行循环体语句;如果表达式值为“假”,则退出循 如图5-1所示 所示。 环,如图 所示。 假 表达 式 真 循环体语句

C语言程序设计第6章 数组2018版

C语言程序设计第6章 数组2018版

6.2.2 插入与删除问题
元素的插入和删除是数组的常见操作。由于数组在内存中连续顺 序存储,所以增删元素时需要移动部分元素。
【案例】在递增排列的成绩数组score中插入一个新成绩x,使得插 入后数组仍保持有序。
④③②① 45 61 72 78 80 82 89 92 95
x 81 k
插入元素的算法思想: ①查找待插入数据在数组中应插入的位置k; ②从最后一个元素开始向前直到下标为k的元素依次往后移动
• 定义数组的同时允许为数组的部分或全部元素赋初值;
• 初值一般被组织在花括号中,但字符数组表示的字符 串可例外;
• 初始化格式:
列表中数据以逗号分隔
<类型标识符> <数组名[元素个数]>={<初值列表>};
例如:int a[4]={12 , 4, 8 , 2}; a[2]=?
• 全部元素赋初值时,数组长度可省略。如: int a[5]={0,2,4,6,8}; 也可写为: int a[ ]={0,2,4,6,8}; 作用皆相当于: a[0]=0; a[1]=2; a[2]=4; a[3]=6; a[4]=8; • 部分元素赋初值时,未被赋值元素默认为0(数值 数组)或空字符(字符数组)。如:
一个位置; ③将欲插入的数据x插入第k个元素的位置
要点: 插入前的移动顺序是关键
• 方式1:
从第k个元素开始移动
for(i=k;i<n;i++) score[i+1]=score[i];
①② ③ ④
45 61 72 78 80 82 89 92 95
移后结果:
x 81
k
后面元素皆被覆盖
45 61 72 78 80 82 82 82 82 82
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

}
23
例4: 判断m是否为素数 <> () {
; (“”); (2<1)
{ (0) ; } () (“ a \n”);
(“ a \n”);
}
24
例5: 输入两个正整数,求出它们的最大公约数 和最小公倍数. (辗转相除法) () { 12, x, y ;
(“”12); 1; 2; (0)
{;} ; 1*2; (“ ”); (“ ”); }
n
n1
➢ ※“求和”算法※
➢ 定义一个变量来表示(或者称为存储)这 个和。例如: 0;
➢ 依次将所有数值加到变量之上。例如求和
:a1234…… ➢ 1; ➢ 2;
1; 12; 123;
➢ 3;
1234;
➢ 4;
➢ ……
13
() {;
1; 0; (i<=100) {; ;} (“”); }
100
n
n1
25
例6:求出100~1000的所有的水仙花数. () {;
(101<1000) {;
10; 10; 10; 10; 10; (*i**j**k*k)
(“\n”);} }
26
➢ 循环里也可以有循环
➢ (……)
➢{
➢ ……
➢ (……)

{……}
➢ ……
27
一个循环中又包含另一个循环成为循环的嵌套.上面讲到 的各种循环可以互相嵌套.
18
例1.11/2+1/5+1/10+1/17+1/26+…1/401求前20项的 和(通项求和I)
<> () { 0;
(1<=20) 1.0/(i*1);
(“前20项的和为”); }
19
例1.2:用 /4=1-1/3+1/5-1/7+….公式求 的近 似值,直到最后一项的绝对值小于10-6为止.(通 项求和I)
举例:编写程序输出九九乘法表
28
公鸡每只5元,母鸡每只3元,小鸡3 只1元。用100元买100只鸡,求解公 鸡、母鸡和小鸡各能买多少只?
29
格式为: { 循环体语句 } (表达式p); 执行过程:先执行{}内的内容,后判定表达 式,当表达式的值为假时,循环结束。
30
例:求
100
n
n1
()
{ 10;
<> <> () { 1;
1.010; ( (t)>=16) {;
2; ; ;} *4(“10.6f\n”);
20
例1.3: 求和 123…...10! <> () {
01; (1<=10) {
*i; ; } ("\n"); }
21
例2:判断一个整数w的各位数字平方之和能否被5整除 <> () {
() {
0; (1<=100) {;} (“”); }
14
15
总结重点内容
(1<=10) { …… }
(…) { …… }
当循环次数可以事先确定的情况下,用 当循环次数无法事先确定的情况下,用
16
语句的功能:用于从循环体内跳出循环体,即提前结束循环。 例:计算1到10的圆面积,当面积大于1 (" !\n"); (“I !\n");
}
4
➢和 ➢ 例题 ➢ 循环的嵌套

5
语句格式为:
(表达式)
{ 循环体语句 ;}
执行过程:
(1) 判断表达式真假,若为真,执行{ }内的 内容,若为假,跳出循环、结束。
(2) 重复(1)的过程
6
7
<> () {
1; (i<=10) {
{;
;}
(i<=100);
(“”);
}
从上面对一个问题的两种解决方法可以看出: 循环与循环在绝大多数情况下是可以相互转化的。
31
32
i;
(1; i<=10; )
{
(" !\n");
(“I !\n");
}
11
(表达式1;表达式2;表达式3) {循环体语句} (1) 先求解表达式1; (2) 求解表达式2,并判定其值是否为真,若为真, 则执行{}内的循环体语句,和表达式3;若为假,则 循环结束; (3) 重复执行步骤(2);
12
100
(" !\n"); (“I !\n"); ; } }
8
➢ 循环体若不止一条语句时,应用{…}括起来。 ➢ 在循环体中应有使循环趋于结束的语句,以避
免“死循环”。
9
语句格式为: (表达式1;表达式2;表达式3) {
循环体语句; }
10
<> () {
}
i 的可能的值为1,2,3…10 循环的内容执行10次,每次i的值分 别是1,2,3…10 循环结束后,i=11
3.14; (1<=10) { *r*r;
(>100) ; (“”); }
17
1、功能:结束本次循环,接着判定下一次是否执行循环。 2、与的区别: 只结束本次循环,而是终止本层循环. 3、例:把100~200之间的不能被3整除的数输出.
() { n;
(100<=200) { (3= =0) ; (“”);} }
0; (“”); (0) {10; 10; *a;} (50) (“\n”); (“\n”); }
22
例3:求数列:1,1,2,3,5,8,…的前40个数.
F1=1
(1)
F2=1
(2)
12 (n>=3)
()
{ f1=12=1;
i;
(
1
<
=
2
0
)
{ (“%1212”12);
(20) (“\n”);
f112; f221; }
相关文档
最新文档