第四讲 c语言 循环结构(1.5次)
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语言循环结构

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语言课件-循环结构

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语言循环结构

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课件

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 循环结构

怎样获得[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语言循环结构

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