第四讲 c语言 循环结构(1.5次)

合集下载

C语言复习之循环结构

C语言复习之循环结构

循环控制结构知识梳理:5.1 while结构1、一般格式:while (表达式)循环体语句;说明: ①while是c语言的关键字②while后的圆括号不能缺少,表达式是任意合法的表达式③循环体可以是多个语句,必须用大括号括起来2、执行过程:先计算表达式的值,当表达式的值为非0时,执行循环体;再计算表达式的值,重复上述步骤,直到表达式的值为0时,结束循环,执行循环语句的后续语句。

注意:①循环体可以用复合语句;用{ }括起来。

②在while语句前应为循环控制变量赋初值;③循环体内应有改变循环控制变量的语句;④while 循环的特点是先判断后执行,故循环有可能一次都不被执行;5.2、do-while结构1.一般格式:do循环体语句;while (表达式);2、执行过程:先执行循环体,再判表达式的值,当表达式的值为非0时,执行循环体;为0时,结束循环,执行循环语句的后续语句;注意:①循环体可以用复合语句;②循环控制变量在执行do前必须赋初值;循环体内应有改变循环控制变量的语句;③do-while 循环的特点是先执行后判断,故循环至少被执行一次;④“;”不得丢失。

5.3 、for 语句1、一般格式:for(表达式1;表达式2;表达式3)循环体语句;2、执行过程:1)先求表达式1;2)求解表达式2,若其值为真,则执行第三步;若为假,则结束循环;3)执行循环体中的语句;4)求解表达式3;5)转回第二步继续执行可看成:for(循环变量赋初值;循环条件;循环变量增值)语句;3、说明:①循环体可以是复合语句;②for语句中的三个表达式均可以是逗号表达式,故可同时对多个变量赋初值及修改。

如:for(i=0, j=1; j<n && i<n; i++, j++) …③for语句中三个表达式可省略。

但“;”号不能省略4、几种循环的比较①三种循环结构可以相互代替使用②while, do-while循环,在while后面指定循环条件,在循环体中应包含使循环趋向于结束的语句③凡是在for中能完成的,在while语句中也能完成。

C语言循环结构

C语言循环结构

6.4 用do-while语句实现循环
while语句和用do-while语句的比较: • 二者是完全等价的。 • do-while语句有可能一次也不执行循环体。
循环的变化:sum=1+2+3+……+100
#include <stdio.h>
#include <stdio.h>
void main( )
6.3 用while语句实现循环
注意: (1) 循环体如果包含一个以上的语句,应该用花括弧括起来,
以复合语句形式出现。 (2) 在循环体中应有使循环趋向于结束的语句。
1. 计算sum=1+2+3+……+100
第5章 循环程序设计
1. 计算sum=1+2+3+……+100
#include <stdio.h> void main( ) { int i=1, sum=0 ;
#include <stdio.h>
****
void main( )
{ int i, j ;
for(i=1; i <= 4; i++ )
{ for( j = 0; j<i ; j++ )
putchar(' ');
for( j = 1; j<=4 ; j++ )
putchar('*');
putchar('\n'); } }
i = 1; f=1;
while( i<5)
{ i +=2;
f = f * i;

C语言课件-循环结构

C语言课件-循环结构

break 和 continue
#include "stdio.h" ↙ 输入 abc↙ int main(void) efgh ↙ { char c; 123 ↙ int i; break输出 abc for (i = 0; i < 10; i++) { c = getchar(); if (c == '\n') break; continue输出 continue; putchar(c); abcefgh1 } }
#include <stdio.h> int main(void) { int num; double grade, total; num = 0; total = 0; printf(“Enter grades: \n"); scanf("%lf", &grade); /* 输入第1个数*/ while (grade >= 0) { /* 输入负数,循环结束 */ total = total + grade; num++; scanf (“%lf”, &grade); }
START 位数count=0 输入一个数->number number<0? Y number=-number number=number/10 count++ Y number!=0? N 输出count END N
源程序
#include<stdio.h> int main(void) { int count, number; count = 0; printf(“Enter a number: "); scanf ("%d", &number) ; if (number < 0) number = -number;

C语言循环结构

C语言循环结构

5 do
6{
7
sum += i;//累加
8
i++;
9 }while(i<=100); //循环继续条件
4.5 循环的嵌套
如果循环体内, 又包含另一个完整的循环结 构, 称为循环的嵌套。 循环可以允许多层嵌套。 for语句、while语句、do-while语句都允许进 行嵌套, 并且可以进行相互嵌套。
4.4 do-while语句
do-while语句又叫“直到”循环语句。 一般格式
注意:尾行的分号不能省! !
返 回
4.4 do-while语句
执行过程
①执行循环体语句。
②计算“条件表达式”,为 真(非0),转①继续执行; 否则,转③。
③执行do-while的下一条语 句。
do-while循环语句的特点是: 先执行循环体语句组,然后
第四章 循环结构
第四章 循环结构
4.1 概 述 4.2 for语句 4.3 while语句 4.4 do-while语句 4.5 循环的嵌套 4.6 break语句与continue语句 4.7 循环结构程序举例 4.8 良好的源程序书写习惯
4.1 概 述
C语言提供了3条循环语句,以简化、并规范 循环结构程序设计:
2 void main(int argc,char* argv[])
3{
4 int i,sum=0;//累加器sum初始化为
5 for(i=1;i<=100;i++)
6
sum+=i; //实现累加
7 printf("sum=%d/n",sum);
8}
程序运行结果: sum=5050

C语言循环结构ppt课件

C语言循环结构ppt课件

pr查in循tf(环"s条um件,= %所以d\n循"环,su体m至);少执行一次pr。intf("sum = %d\n",sum);
} (2)退出do—while循环的条件与退} 出while循环的条件相同
10
一般格式:
for
for( 表达式1; 表达式2; 表达式3) {
循环体语句
}
表达式1
假(0) 表达式2
循环体 for语句等价于下列语句:
循表环达变式量1;增值/减值 while (表达式2) { 语句;
表达式3; }
12
例ffoorr用(语循句f环o最r变循简量环单赋求的初形值1式0;0:n循环条件;循环变量增值) 循环体 n1
#include <stdio.h> main() { int i,sum=0;
for(i=1; i<=100; i++) sum+=i;
printf("%d",sum); }
相当于: i=1,sum=0; while(i <= 100) {
sum = sum + i; i++; }
13
100
用上述三种循环语句求 s n
while语句:
n1
do-while语句:
n = 1;s = 0; while (n<=100)
说明:
(3)省略表达式3: 此时程序设计者应另外设法保证循环能 正常结束。如: for(i=1;i<=100;) { sum = sum + i; i++; }
17
for语句的使用格式灵活:
表达式类型任意,可省略,但分号“;”不可省

c语言-4 循环结构

c语言-4 循环结构
分析
怎样获得[1,100]区间的随机数? 调用rand()函数:rand()%n返回一个[0,n)之间的随机 的非负整数。 x=min+rand()%(max-min+1)
怎样限定最多猜7次?
设已猜次数变量cs=0,当cs<7时执行循环,每循环一次猜一个数, cs++,若猜中,则跳出循环,否则显示与被猜数的大小关系。
flag=- flag;
i=i+2; } printf("π=%.4lf!\n", 4*s ); return 0; }
经典循环结构的三要素
循环变量初始化

循环条件P
真 …… 循环变量值修正 [……]
循环变量初始化 循环条件P
…… 循环变量值修正
……
循环体
循环变量初始化 循环条件判断 循环变量值修正
}
printf("s=%lf\n", s);
}
定义s=0,n,i,flag 输入n
i=1,flag=1; i <= 2*n-1
s=s+flag / i
flag = - flag
i =i+2 输出s
课堂练习:2-15(P38)
程序
#include <stdio.h> int main() { int n, i;
问题:统计一个整数的位数值
要求:输入一个整数,求该数的位数 。
分析:
定义zs,ws=0;
输入zs

zs<0

zs=-zs ws++
zs=zs/10
zs>0 输出ws
程序:
#include <stdio.h> void main( ) { int zs, ws=0;

C语言循环结构

C语言循环结构

06 循环控制语句
break语句
功能
在循环语句和switch语句中,break用于跳 出当前循环或switch结构,执行循环或 switch后面的代码。
使用场景
当满足某个条件时,需要立即终止循环的执行,可 以使用break语句。
注意事项
break只能跳出一层循环,如果有多层循环 嵌套,需要使用多个break才能跳出所有循 环。
斐波那契数列算法
斐波那契数列定义
斐波那契数列实现
斐波那契数列案例
斐波那契数列是一个经典的数列,它 的前两个数字是0和1,后面的每个数 字都是前两个数字的和。
使用循环结构,依次计算每个数字的 值,直到达到指定的数列长度。可以 使用两个变量来保存前两个数字的值 ,每次循环计算下一个数字的值,并 更新这两个变量的值。
循环结构作用
提高代码效率
通过重复执行代码,避免重复编写相同的代码段 ,提高程序的可读性和可维护性。
实现复杂功能
循环结构可用于实现各种复杂的功能,如排序、 查找、遍历等。
控制程序流程
循环结构可用于控制程序的执行流程,实现条件 判断、分支执行等。
常见循环类型
for循环
适用于已知循环次数的情况,可方便 地控制循环变量的初始值、增量和终 止条件。
}
```
05 循环嵌套
嵌套概念及作用
嵌套概念
在C语言中,一个循环体内可以包含 另一个完整的循环结构,称为循环的 嵌套。内嵌的循环可以完全包含在另 一个循环中,也可以部分包含。
嵌套作用
通过循环嵌套,可以实现更复杂的控 制流程,解决一些单层循环无法处理 的问题。例如,打印二维数组、进行 复杂的数学计算等。
使用for循环可以控制打印输出的行和列,从而打印出各种图案。

第4章循环结构--C语言程序设计(PPT制作)

第4章循环结构--C语言程序设计(PPT制作)

4.1 while语句
【例4.1.3】求s=1+3+5+7+9+…,其和大于等于500的最大项。 算法: 步骤一:先赋变量s初始值为0,i初始值为1。 步骤二:当s小于等于500时,重复执行步骤三和四,否则执行步骤五。 步骤三:s+i后赋给s。 步骤四:i+2后赋给i,转回步骤二继续执行。 步骤五:输出i-2的值。 流程图如图4-1-4所示。
步骤五:输出sum的值。
流程图如图4-1-2所示。
4.1 while语句
4.1 while语句
程序运行结果: sum=5050
4.1 while语句
【分析】变量sum的初始值为0,i的初始值为1,计算while后表达式的值 1<=100为真,执行循环体中的语句sum+=i相当于sum=sum+i,i++相当于i=i+1后 ,此时sum的值为1,i的值为2,并重新计算while(i<=100)表达式的值,若为 真继续执行循环体,为假则退出循环体,从而继续执行输出sum的值。在循环体 中若没有改变循环变量的值,导致循环条件永远为真,程序会出现死循环。
4.2 do…while语句
④do…while之间的循环体可以是一条可执行语句,也可以是由“{}”构成 的复合语句。
(2)执行过程: 先执行循环体,然后判断表达式的值,若表达式的值为非0,再返回重新执 行循环语句,如此重复;若表达式的值为0,则退出循环语句,执行下一条语句 。(如图4-2-1所示)
4.1 while语句
4.1 while语句
程序运行结果: i=45
4.1 while语句
【分析】变量s的初始值为0,i的初始值为1,计算while后表达式的值0<= 500为真,执行循环体中的语句s=s+i,i=i+2,此时s的值为1,i的值为3,并重 新计算while(s<=500)表达式的值,若为真继续执行循环体,为假则退出循环 体,从而继续执行输出i-2的值。本题是利用求和变量s作为循环条件,由于求和 项i在退出循环体时多加了一次,故应输出i-2,而不是i的值。

C语言循环结构程序设计 ppt课件

C语言循环结构程序设计 ppt课件

void main() {
int i,sum=0;
设置循环 条件
for(i=1;i<=100;i++)
{
sum+=i;
}
printf("Sum = %d\n",sum);
}
程序的运行结果:
Sum = 5050
2021/3/26
C语言循环结构程序设计 ppt课件
9
C语言循环结构程序设计
说明:
(1) for语句的一般形式中的“表达式1”可以省略,此 时应在for语句之前给循环变量赋初值。注意省略表 达式1时,其后的分号不能省略。如 for(;i<=100;i++) sum=sum+i; 执行时,跳过“求解表达式1”这一步,其他不变。
while (表达式) 语句 当表达式为非0值时,执行while语 句中的内嵌语句。其特点是:先判断 表达式,后执行语句。
2021/3/26
C语言循环结构程序设计 ppt课件
23
例:用while循环求1~100的和。
#include <stdio.h> void main() {
设置循环条 件
int i=1,sum=0;
}
程序的执行结果:
Sum = 5050
2021/3/26
C语言循环结构程序设计 ppt课件
28
C语言循环结构程序设计
4.5.1 for语句和while语句
for循环语句比较灵活,可以将循环控制变量初始、循环变量修改和循环 控制表达式集中在一个for语句中,比较适合循环次数可预测的情况。 while循环适合不通过递增或递减循环控制变量的循环。
说明:

高中信息技术 信息学奥赛C语言第四章 循环结构课件

高中信息技术 信息学奥赛C语言第四章 循环结构课件
int i,sum=0; for(i=1;i<=100;i++)
sum+=i; printf("%d\n",sum); } 程序运行结果为:5050
※重点提示:for语句中的表达式可以部分 或全部省略,但两个分号不能省略,且三
个表达式均省略时,循环将会无限制执行, 而形成死循环。因此,编写程序时,在for 后面的一对圆括号内,应只含有能对循环
※重点提示:while型循环语句中循环体的 执行次数可以从0到无穷。若第一次计算表 达式的值为0,则循环体执行0次;若表达 式恒为真,则陷入死循环。
4.1.2 while循环的执行过程
while循环的执行过程是: 计算while后表达式的值, 当值为非零时,执行循环体中的语句; 当值为零时,退出while循环。
此时,也将产生一个无穷循环。因此,程序设计者 应另外设法保证循环能正常结束,可以将循环变量 的修改部分(即表达式3)放在循环语句中控制。
例如:for(i=1;i<=100;)
{ sum+=i;
i++;
}
上述for语句中没有表达式3,而是将表达式3(i++) 放在循环语句中,作用相同,都能使用循环正常结 束。注意表达式2后面的分号不能省略。
(6)也可以同时省略表达式1和表达式3,即: for(;表达式2;) 循环语句;
也即省略了循环的初值和循环变量的修改部分,此 时完全等价于while语句。
(7)同时省略表达式1、表达式2和表达式3,即: for(;;) 循环语句;
相当于赋循环变量的初值,循环控制条件始终为真, 不修改循环变量,故循环将无终止地进行下去。
++i;

C语言循环结构

C语言循环结构

运行情况如下:运行情况如下: 运行情况如下:运行情况如下: 1 1 sum=55 sum=55 再运行一次: 再运行一次: 再运行一次: 再运行一次: 11 11 sum=0 sum=11;
1.求5! 求 ! void main(void) {int t=1,n=1; do { t=t*n; n++;} while (n<=5); printf(“t=%d\n”,t);}
5.3 用for语句实现循环 for语句实现循环 5.3.1 for语句的一般形式和执行过程 语句的一般形式和执行过程 • for语句的执行过程: for语句的执行过程: 语句的执行过程
(1) 先求解表达式1。 (2) 求解表达式2,若其值为真(值为非0),则执 行for语句中指定的内嵌语句,然后执行下 面第(3)步。若为假(值为0),则结束循环, 转到第(5)步。 (3) 求解表达式3。 (4) 转回上面第(2)步骤继续执行。 (5) 循环结束,执行for语句下面的一个语句。
While和 do while循环比较 (1)void main() {int sum=0,i; scanf(“%d”,&i); while(i<=10) {sum=sum+i; i++;} printf(“sum=%d\n”,sum); } (2)void main() {int sum=0,i; scanf(“%d”,&i); do {sum=sum+i; i++; }while(i<=10); printf(“sum=%d”,sum); }
解题思路
解此题的思路是设计一个循环结构,在其中输入捐 款数,求出累加值,然后检查此时的累加值是否达 到或超过预定值,如果达到了,就结束循环操作。

最新c语言循环结构ppt课件

最新c语言循环结构ppt课件

i++; }

printf(″%d\\n″,sum);
}
do语句
do语句的一般格式如下:
do 语句 while ( 表达式 ) ;
执行do语句时,先执行循环体,再计算控制表达式 的值。
如果表达式的值非零,那么再次执行循环体,然后 再次计算表达式的值。
17
do语句
使用do语句重写前面的“倒数计数”程序:
i现在为8。
i < n成立吗?
是,继续。
i = i * 2;
i现在为16。
i < n成立吗?
不成立,退出循环。
6
while语句
虽然循环体必须是单独的一条语句,但这只是个技术 问题。
如果需要多条语句,那么只要用一对大括号构造成单 独一条复合语句就可以了:
while (i > 0) { printf("T minus %d and counting\n", i); i--;
c语言循环结构
重复语句
C语言的重复语句用于设置循环。 循环是重复执行其他语句的一种语句,循
环中重复执行的语句就是循环体 C语句中,每个循环都有一个控制表达式。 每次执行循环体时都要对控制表达式进行
计算。
◦ 如果表达式为真,也就是不为零,那么继续执 行循环。
2
while语句
while语句示例:
i = 10; do {
整个过程持续到显示信息为“T minus 1 and counting”。
8
while语句
关于while语句的一些讨论:
◦ 在while循环终止时,控制表达式的值为假。因此,当通过 表达式i > 0控制循环终止时,i必须是小于或等于0的。

第四讲 循环结构(1.5次)

第四讲 循环结构(1.5次)
结束
分析: 行的控制 i:1~8 [例] 打印图形。 '*'的个数j与当前行的关系 j=2*i-1 * '*'前面的空格k与行的关系: *** –开始时,第一行有7个空格 ***** –每多一行,少一个空格k=8-i ******* ********* for(i=1;i<=8;i++) *********** { ************* for (k=1;k<=8-i;k++)输出空格 *************** for (j=1;j<=2*i-1;j++) 输出* }
分析: 分行与列考虑,共9行9列,i控制行数,j控制列数。 行变量i,外循环控制变量:取值范围:1~9 列变量j,内循环控制变量:取值范围:1~i 输出格式设置: 1×2=2: printf(“%d*%d=%-d”,j,i,i*j); 换行控制: printf(\”n”);
...
(1<=i<=9) (1<=j<=i)
表达式
0
非0
语句
3.3.1 三种循环结构的流程表示及执行过程
──while语句
[例] 求1+2+3+….+100 。
不能写成 if (i<=100)
sum=0,i=1
i<=100
非0 0
sum=sum+i i=i+1
main() { int i=1,sum=0; while (i<=100) { sum=sum+i; i++; } printf("%d",sum); }
──循环的嵌套结构

c语言-第4章循环结构PPT课件

c语言-第4章循环结构PPT课件
max=mark; scanf("%d",&mark); } printf("%f\n",max); }
scanf("%d", &m); for(i=2;i<=m/2;i++)
if(m%i==0) break; if(i>m/2)
printf("YES\n"); else
printf("NO\n"); }

9
第9页/共29页
若改动程序
#include "stdio.h" void main( ) {int i,m;
⑵设定一个特殊数据(伪数据)作为循环的结束标志,由于成绩都是正数,选用一 个负数作为输入的结束标志。用while或do~while
18
第18页/共29页
⑴1,2…n;n为已知值输入。用for循环
#include "stdio.h" void main() {int i,mark,max,n;
scanf("%d",&n); scanf("%d",&mark); max=mark; for(i=1;i<n;i++) {scanf("%d",&mark);
操作 先做语句,然后判别表达式的值,如 非0则继续循环;否终止循环。
等价于
loop: 语句; if(表达式) goto loop;
第6页/共29页
语句
非0 表达式 0
6
4.2.3 循环语句的选择 循环语句的选择: for: 知道循环次数、能表示增量型、只要能表示三个表达式。

C语言循环结构

C语言循环结构

4.5 循环的嵌套
说明:
①四种循环都可以处理同一问题,没有孰优孰劣 之分。但一般不用goto语句来实现循环。
②while和do-while循环,只在while后面指定循环 条件,因此在循环体中要有使循环趋于结束的 语句。
③一般情况下我们不能忘记“循环三要素”,即 “初值”、“循环条件、“修正值(可增可 减)”。
循环语句
②计算“条件表达式”,为 真(非0),转①继续执行; 否则,转③。
③执行do-while的下一条语句。

条件表达式 假
do-while循环语句的特点是: 先执行循环体语句组,然后 再判断循环条件。
do-while语句后面的语句
4.4 do-while语句
例4.5 用do-while语句求解1~100的累计和。
4.5 循环的嵌套
如果循环体内,又包含另一个完整的循环 结构,称为循环的嵌套。 循环可以允许多层嵌套。
for语句、while语句、do-while语句都允许进 行嵌套,并且可以进行相互嵌套。
返 回
4.5 循环的嵌套
for循环嵌套
4.5 循环的嵌套
while循环嵌套
4.5 循环的嵌套
do-while循环嵌套
4.6 break语句与continue语句
说明 :
①break能用于循环语句和switch语句中, continue只能用于循环语句中。
②循环嵌套时,break和continue只影响包含它们 的最内层循环,与外层循环无关。
例4.6 把100~200之间的不能被3整除的 数输出,并且每行输出10个。
4.6 break语句与continue语句
一般格式
功能
①break:强行结束循环,转向执行循环语句的下一 条语句。 ②continue:结束本次循环。对于for循环,跳过循环 体其余语句,转向循环变量改变表达式的计算; 返 对于while和do-while循环,跳过循环体其余语句, 回 但转向循环继续条件的判定。

C语言自学课件循环结构程序设计

C语言自学课件循环结构程序设计
break语句只能用于循环语句和switch语句中。 当break语句用于循环语句中时,可终止循环,执
行循环后面的语句。
注意: break语句虽然放在if语句中,但它对if语句
不起作用,而是对for语句起作用。
第35页,共54页。
例如:
4.5.1 break语句
int k,m; for(k=0;k<10;k++) {
例如: for(k=1; k<=10; )
{ sum=sum+k; k++;
}
第26页,共54页。
说明:
4.3 for语句
④表达式1和表达式3同时省略,只有表达式2。
例如: k=1;
for( ;k<=10; ) {
sum=sum+k;
k++;
}
第27页,共54页。
说明:
4.3 for语句
⑤三个表达式可以同时省略。
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
使用双重循环,外层控制行的变 化,内层控制列的变化
第33页,共54页。
4.4循环嵌套
#include <stdio.h> int main() {
int i,j; printf("\n");
运行结果:
5050
第14页,共54页。
说明:
4.2 do-while语句
(1) do-while语句的特点是先执行循环体,后 判断循环条件,循环体至少要执行一次。
(2)do-while语句的循环体是do和while之间的
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

循环的嵌套
循环的嵌套
[例] 打印图形。 for(i=1;i<=8;i++) { #include "stdio.h" i=1 i<=8 formain() (k=1;k<=8-i;k++)输出空格 k=1 int i,j,k; for{ (j=1;j<=2*i-1;j++) 输出* k<=8-i for (i=1;i<=8;i++) } { 打印空格 for (k=1;k<=(8-i);k++) k=k+1 printf(" "); j=1 for (j=1;j<=(2*i-1);j++) j<=2*(i-1)+1 printf("*"); 打印* printf("\n"); j=j+1 } } 换行,i=i+1
循环结构 程序设计
主要内容
1 2 3 4 5 6 概述 while语句 do-while语句 for语句 循环的嵌套 break语句和continue语句
提问:从键盘上输入10个整数并求和,怎么编程?
回答:在程序中写入10个scanf( )语句。 scanf(“%d”,&x); total+=x;

条件控制:


工作:指重复执行的语句(循环体)。

一条语句,可以是复合语句或空语句。如sum = sum + i。
如 i++,以改变循环条件的真假。一旦i > 100,循环结束。

改变循环变量:在每次循环中改变循环变量的值

3.3.2循环的嵌套
──循环的嵌套结构

嵌套的概念:一个循环体内又包含另一个完整的 循环结构,称为循环的嵌套。
表达式
0
非0
语句
3.3.1 三种循环结构的流程表示及执行过程
──while语句
[例] 求1+2+3+….+100 。
不能写成 if (i<=100)
sum=0,i=1
i<=100
非0 0
sum=sum+i i=i+1
main() { int i=1,sum=0; while (i<=100) { sum=sum+i; i++; } printf("%d",sum); }
分析: 分行与列考虑,共9行9列,i控制行数,j控制列数。 行变量i,外循环控制变量:取值范围:1~9 列变量j,内循环控制变量:取值范围:1~i 输出格式设置: 1×2=2: printf(“%d*%d=%-d”,j,i,i*j); 换行控制: printf(\”n”);
...
(1<=i<=9) (1<=j<=i)
} }
程序举例

数列1、1、2、3、5、8、13、21、…是著名的菲波那奇 数列,其递推通项公式为: F1 = F2 =1
Fn = Fn-1 + Fn-2 (n>=3)
程序举例
[例] 用/41-1/3+1/5-1/7+…的公式求的近似值,直 到最后一项的绝对值小于10-6为止。 t=1,pi=0,n=1,s=1 #include "stdio.h" #include "math.h" 当| t | 10-6 main() pi=pi+t { int s; float n, t, pi; n=n+2 t=1; pi=0; n=1.0; s=1; while (fabs(t)>=1e-6) s=-s; { pi=pi+t; n=n+2; t=s/n s=-s; t=s/n; } pi=pi*4 pi=pi*4; 输出pi printf("pi=%10.6f\n",pi); }
⑹ do { … for( ; ; ) {} } while( );
for (i = 1; i <= 100; i++) for (j = 1; j <= i; j++) printf ("%d %d\n", i, j );
i=1 i=2 j=1 j=1 j=2 j=1 j=2 … … j = 100 输出 100 100 (第 5050 次输出) 输出 1 1 输出 2 1 输出 2 2 ………… 输出 100 输出 100 (第 1 次输出) (第 2 次输出) (第 3 次输出) 1 (第 4951 次输出) 2 (第 4952 次输出)
for语句最常用的形式: ──for 语句 for for 语句构成的循环最为灵活。 在C语言中用(初值;控制条件;增量) 语句;

一般形式:for(表达式1;表达式2;表达式3)语句
执行过程: i=1
i<=100
非0 0
求解表达式1 假 表达式2 真 语句
3个表达式、循环体语句 sum=sum+i 书写顺序和执行顺序不同 i=i+1 表达式1只执行一次

程序设计中: 把这种重复过程,称为循环过程; 把由循环语句构成的程序结构称为循环程序结构; 循环结构是程序设计中最常用的一种程序结构。
在C语言中可以用下列语句实现循环: while do-while for

3.3.1 三种循环结构的流程表示及执行过程
──while语句

3.3.4循环辅助控制
──break语句和continue语句
[例]把100…200之间不能被3整除的数输出。 #include "stdio.h" main() { int n; for (n=100; n<=200; n++) { #include "stdio.h" if (n%3==0) main() { int n; continue; printf("%d",n); for (n=100; n<=200; n++) { } if (n%3!==0) } printf("%d",n);
循环的嵌套
开始
i=1 分析: 分行与列考虑,共9行9列, i≤9 for (i=1;i<10;i++) i控制行数,j控制列数。 { 行变量i,外循环控制变量: j=1 for(j=1;j≤i;j++) 取值范围:1~9 { j≤i 列变量j,内循环控制变量: result=i*j; 取值范围:1~i printf(“%d*%d=%-3d”,j,i,result); 输出j*i 输出格式设置: } 1×2=2: j++ printf(“\n”); printf(“%d*%d= } %-d”,j,i,i*j); 输出换行 换行控制: printf(\”n”);
i = 100
外循环变量每循环一次,内循环就要从头到尾 执行一遍
程序举例 递推公式:

n! = 1 10! 嵌套循环求1! + 2! + …. + 当 n=1 时
for ( i = 1; i <=n; t=1放到 考虑是否可以把inti++ ) t= 外循环以外 t * i; t = 1; for(n=1;n<=10;n++) for(n = 1; */ { t=1; /* t 存放阶乘,每次求阶乘都从1开始n<= 10; n++) { for (i = 1; i <= n; i++) for ( i = 1; i <=n; i++ ) t = t * i; /* 内层循环算出 t = i! */ t=t*i; sum = sum + t; sum=sum+t; } } 求1! + 1!*2! + …… + 1!*2!*……*100!
求解表达式3
输出 sum
• 例:for (i=1;i<=100;i++) sum=sum+i;
for语句的 下一语句
指定次数的循环程序设计
一般包含四个部分:

初始化:指定循环起点

给循环变量赋初值,如i = 1; 进入循环之前,设置相关变量的初值,如sum = 0。 只要i <= 100,循环就继续
结束
分析: 行的控制 i:1~8 [例] 打印图形。 '*'的个数j与当前行的关系 j=2*i-1 * '*'前面的空格k与行的关系: *** –开始时,第一行有7个空格 ***** –每多一行,少一个空格k=8-i ******* ********* for(i=1;i<=8;i++) *********** { ************* for (k=1;k<=8-i;k++)输出空格 *************** for (j=1;j<=2*i-1;j++) 输出* }
3.3.4循环辅助控制
──break语句和continue语句

break语句用来从循环体里退出,中止循环 格式 break; break语句的功能
1.在switch语句中结束case子句,使控制转到switch语句之外。 2.在循环语句的循环体中使用,结束循环过程,使控制转移到整 个循环语句之外的下一条语句处
输出 sum
如果有一个以上的语句循环,则必须用{ } 构成复合语句。要有修改循环变量的语句。
3.3.1 三种循环结构的流程表示及执行过程
相关文档
最新文档