C语言程序设计第六章循环结构程序设计
循环结构(课件)-《C语言程序设计》同步教学

if (循环条件在进入循环时明确)
使用 while 语句
else /* 循环条件需要在循环体中明确 */
使用 do-while 语句
5、break和continue语句
(1)break关键字 语句格式:break;
例如:编写程序实现,输入一个整数判断此数是否witch结构或者一个 循环体
案例1运行结果:
Input a string:I am a Chinese.↙ Number is: 15
简单循环案例分析
案例2 统计大写字符(do-while) 要求:从键盘输入一串字符(输入回车符时结束),统 计其中大写英文字母的个数。
算法设计:
(1)设置变量ch存放输入的字符;计数器变量 num存放大写英文字母的个数 (2)输入字符ch 若ch是大写英文字母,计数器num+1 重复上述操作,直到输入换行符为止 (3)输出大写英文字母个数
C 语言程序设计
翻转课堂实用教程
循环结构
简单循环结构 嵌套循环结构
简单循环结构
1、while循环
语句格式:
while(表达式) {
循环体(语句块); }
执行描述: (1)计算while后面的表达式值,如
果值为真,则执行步骤(2), 否则跳出循环体,继续执行该结 构后面的语句。 (2)执行循环体语句; (3)重复执行步骤(1)。
案例3程序代码:
int main() {
double mark, max,length; printf("Enter length:"); scanf ("%lf", &length); /* 读入第一个身高值 */ max = length; /* 假设第一个身高值最大 */ while (length >= 0){
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; ……
循环结构程序设计(C语言实验报告)

循环结构程序设计(C语言实验报告)实验目的:1. 掌握循环结构程序设计流程2. 熟悉while、do-while和for循环语句的使用3. 掌握循环语句的嵌套应用实验原理:循环结构是一种非常重要的程序设计结构,其目的是为了让程序可以重复执行一段代码块,从而达到省去大量代码重复编写的目的,也可以是让程序能够按照用户的需求反复执行一段代码块。
在C语言中,常用的循环结构有while、do-while和for三种,这三种循环语句的基本语法结构是:while(循环条件){循环体语句;}其中,while循环和do-while循环的区别在于:while循环条件成立时,不一定会执行一次循环体,但do-while循环条件成立时,会先执行一次循环体,然后判断循环条件是否成立;至于for循环,则是将循环条件、循环初值和循环增量三个要素集成在一起,使用比较方便。
另外,循环结构也可以进行嵌套应用,即在循环体内部再嵌套一个循环,这样可以实现多个变量的循环控制。
应用实例包括如下:1. 打印九九乘法表2. 对一个数组进行排序3. 多重循环实现字谜游戏实验内容:1. while循环:目的是求出1~100的整数和,并在程序运行过程中输出1~100的所有整数。
目的是输入若干个数字,计算它们的平均值。
3. for循环:目的是输入一个数n,求1~n中可以被3或5整除的所有整数和。
4. 循环嵌套:目的是打印九九乘法表。
实验总结:本次实验通过三种常用的循环结构,并结合实例进行学习掌握,同时还熟悉了循环嵌套的应用。
相信这对于日后的程序设计和代码优化应用会非常有帮助。
C语言程序设计循环结构程序设计

C语言程序设计循环结构程序设计循环结构是一种重复执行特定任务的程序设计方法,它可以节省代码量,提高代码的复用性和可读性。
C语言提供了多种循环结构,如for循环、while循环和do-while循环。
在本文中,将介绍C语言程序设计中循环结构的应用。
首先,我们来介绍for循环。
for循环是一种在已知循环次数的情况下使用的循环结构。
它的基本语法如下:```for (初始化表达式; 循环条件表达式; 循环后操作表达式)代码块```其中,初始化表达式用于初始化计数器变量,循环条件表达式用于判断是否继续执行循环,循环后操作表达式用于更新计数器变量的值。
具体代码示例如下:```c#include <stdio.h>int maiint i;for (i=0; i<5; i++)printf("Hello, World!\n");}return 0;```上述代码会打印"Hello, World!"五次。
在for循环中,初始化表达式会在循环开始前执行一次,循环条件表达式会在每次循环开始时判断,如果为真则执行循环体中的代码块,然后执行循环后操作表达式,然后再次判断循环条件表达式,依此类推,直到循环条件表达式为假时循环结束。
接下来,我们介绍while循环。
while循环是一种在不知道循环次数的情况下使用的循环结构。
它的基本语法如下:```while (循环条件表达式)代码块```具体代码示例如下:```c#include <stdio.h>int maiint i = 0;while (i < 5)printf("Hello, World!\n");i++;}return 0;```上述代码与前面的示例效果相同,都会打印"Hello, World!"五次。
在while循环中,循环条件表达式会在每次循环开始时判断,如果为真则执行循环体中的代码块,然后再次判断循环条件表达式,依此类推,直到循环条件表达式为假时循环结束。
循环结构程序设计C语言程序

n--=2 a++ a=1 a++*2 输出:2 n=1 a=2
n=1 a=2 a++ a=2 a++*2 输出:4 n--=0 a=3
2. do_while语句
一般形式:
do 循环体语句; while(表达式);
执行流程:
其中: while后面的括号( )不能省。 while最后面的分号;不能省。 while后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑表达式。 表达式的值是是循环的控制条件。 语句部分称为循环体,当需要执行多条语句时,应使用复合语句。
表达式1、表达式2、和表达式3可以是任何类型的表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。
逗号表达式
逗号表达式
for语句注意事项:
#include <stdio.h> void main ( ) { int i, sum = 0; i = 1; for ( ; i <= 100; i++) sum += i; printf("sum = %d\n", sum); }
例5.3 while和do~while比较
#include <stdio.h> main() { int i,sum=0; scanf("%d",&i); do { sum+=i; i++; }while(i<=10); printf("%d",sum); }
F
T
expr
循环体
do
while
特点:先执行循环体,再判断表达式
C语言循环结构程序设计

执行过程
1. 先求解表达式1
2. 求解表达 式2,若其值 为“真”则执行 for语句中指定的内嵌语句,然后执行 第(3)步。若为"假",则结束循环转 到第(5)步 3. 求解表达式3
4. 转回上面第(2)步骤继续执行 5. 循环结束,执行for语句的执行过程
15/32
用for语句实现循环
for应用形式
8/32
用while语句和do…while语句实现循环
while语句的一般形式:
while(表达式)语句;
特点:
先判断表达式,后执行循环体, 即内嵌语句
思考:
上例中如果while语句中的条件改 为"(i<100)",情况会怎样,
输出结果是什么?
9/32
用while语句和do…while语句实现循环
20/32
用for语句实现循环
for循环程序举例
例5.5 人口增长预测。据2005年末统计,我国人口为130 756万人,如 果人口的年增长率为1%,请计算到哪一年中国总人口超过15亿。 编写程序 # include < stdio.h > void main () { double p=1.30756e9, r=0.01; int y; for (y=2006; p<1.5e9; y++) { p=p*(1+r); /* 赋值号两侧的变量p代表不同含义 */ } printf (“year=%d, p=%e\n”, y-1, p); /*退出循环时y+1了*/ }
用do…while语句实现循环形式:
do 循环体语句; while(表达式);
特点:
C语言程序设计(while 循环结构)

sum+=grade; num++; scanf("%lf",&grade); } if (num) printf(“\n%d 人的平均成绩:%.1f”,num,sum/num);/*输出结果*/ else printf(“\n 平均成绩为 0!”);
int num=0; /*用 num 统计输入成绩的学生人数,以便统计学生的平均分数*/ double sum=0, grade; /*用 sum 记录成绩的累加和,初值为 0,grade 接受键盘输入的成绩*/
printf(“请依次输入学生的考试成绩,空格间隔,并以负数结束输入\n”); scanf(“%lf”,&grade);
return 0; }
注意: (1)while 语句中的表达式一般是关系表达或逻辑表达式,但原则上可以是任何合法的 表达式; (2)循环条件的选择应该避免死循环,即无法结束循环体的执行;表达式的值每次循 环后都应该有所改变,否则也会引起死循环。
假 表式?
真 语句
循环体外语句 图 3-7 while 循环结构的执行过程
【例 3-11】 从键盘输入若干名学生的成绩,计算平均分。 分析:这是一个累加求和的问题,将输入的成绩依次累加(用循环结构实现,循环条件 是成绩 grade>=0),完成累加后再将累加和除以学生的人数,算出平均分。
/*程序名:3_11.c*/ /*功能:键盘输入若干学生的成绩,计算平均成绩并输出*/ #include <stdio.h> int main() {
1.while 循环结构
while 循环结构的一般形式为: while(表达式) 语句;
C语言循环结构程序设计

i=-i;
//然后对i取负,得到它的绝对值
}
if(i==0)
printf("%d",i);
while(i!=0)
{
r=i%10;
printf("%d",r);
i=i/10;
}
printf("\n");
}
注意:循环体的有效范围 例: i=1; while(i<=100)
putchar(‘*’); i++;
i++;
i=10,iSum=55 1+2+3+...+10=55
} while(i<=10);
printf("1+2+3+...+10= %d\n",iSum);
}
例5.7 将一个给定的整数反序输出。
#include "stdio.h"
void main()
{
int i,r;
printf("\nInput an integer:");
{
****
for(j=1;j<=i;j++)
*****
putchar('*');
putchar('\n');
}
}
例5.12 求100以内的全部素数。
void main() {
int m,n,i,prime; i=0; for(m=2;m<=100;m++) {
void main()
{
int m,n,r;
printf("please input two positive integers:");
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不成立
ch!=EOF?
成立
字符计数nc=nc+1
不成立
ch==’\n’?
成立
行计数 nl=nl+1
§6.2 while语句-实例
循环嵌套
在循环体中,又包含有循环语句,构成循环嵌套。
例C3_5107.C:输出下三角形乘法九九表。
123456789
---------------------------------------
if ( n >= 3 )
break;
/* 退出for循环 */
else printf ("\nInput n is error !\n");
}
/* 控制输入正确的N值 */
un = un2 = 1;
/* 设置递推初始值 */
for ( i=3; i<=n; i++) /* 用递推法计算第N项的值 */
putchar ( ch ); ch = getchar( ); } }
开始
ch=读入一个字符
ch!=’a’?
成立
显示ch
不成立
ch=读入下一个字符
结束
§6.2 while语句-实例
例C3_5104.C:对输入的行和字符进行计数。
分析:\n 作为行结束标记的,DOS中有[CTRL+Z]作为文件结束
显示ch
while (ch!=’a’) { putchar( ch );
ch=读入下一个字符
ch = getchar( ); }
结束
§6.2 while语句-实例
#include <stdio.h> main( ) { char ch;
ch = getchar( ); while ( ch!='a') {
C语言中控制循环的语句:
while for do-while
§6.2 while语句
while语句格式 while ( 表达式 ) 语句;
说明:语句可是简单语句,也可是复合语句。 while语句的执行流程
表达式?
成立
执行语句
不成立
循环控制条件 循环体
执行while循环之后的语句
§6.2 while语句-实例
则:第 i 行中一共要输出 i 个乘积
§6.2 while语句-实例
#include <stdio.h>
例C3_5107
main ( )
{ int i=1, j;
/* i:行计数器 j:列计数器 */
while ( i <= 9 )
/* 控制打印表头 */
printf ( "%4d", i++ );
§6.2 while语句-实例
例C3_5103.C:从键盘中读入一系列字符,直到读入字母 a 时 才停止。
分析:由于不知道要读入的字符 数量,只知停止条件是读入字母 a,则只能将循环控制条件设为
开始 ch=读入一个字符
ch!='a'。 程序主体:
ch!=’a’?
成立
不成立
ch = getchar( );
}
}
for语句最常用的形式 for (初值;控制条件;增量) 语句;
§6.3 for语句-实例
例C3_5202.C:用for语句实现打印乘法九九表。
#include <stdio.h>
例C3_5202
main ( )
{ int i, j;
for ( i=1; i<10; i++ )
printf ("%4d",i);
for语句的执行流程
执行表达式1
表达式2?
成立
执行语句
不成立
执行表达式3
执行for循环之后的语句
循环初始条件
循环控制条件
循环体 for语句等价于下列语句:
表达式1; while (表达式2) { 语句;
表达式3; }
§6.3 for语句-实例
例C3_5203.C:求1到10的阶乘。
例C3_5203
标记 #define EOF -1
定义文件结束标记
#include <stdio.h>
main ( )
{ int c, nl=0, nc=0;
nl行计数器,nc字符计数器
while ( ( c = getchar( ) ) != EOF )
{ ++ nc;
进行字符计数
if ( c == '\n' )
}
输出函数printf中使用了“?”操作,含义相当于:
if ( j==i ) printf ("%4d\n", i*j );
else
printf ("%4d", i*j );
for语句的变化形式
§6.3 for语句
for语句中的三个表达式中的任意一个都是可以省略的, 但是分号不能省略。
1.省略表达式2,则: for(表达式1; ;表达式3)
老师:让我们换一个角度来看待这些问题, 以上问题的实质是:将scanf函数重复执行N遍。
学生:对!好象是这么回事...... 老师:我们可以引出一个概念“循环”,简单而言:循
环就是不断反复地执行同一段程序。 学生:这就是我们今天要学的新东西?
§6.1 循环概念 循环
反复执行同一段程序,直到满足一定的 条件后才停止执行该段程序。
1
24
i=6
369 4 8 12 16
j=5
5 10 15 20 25 6 12 18 24 30 36
i*j
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81
假设:行号为i
,列号为j
(1<=i<=9)
(1<=j<=i)
2.while (1) { .... } 由于循环的条件表达式恒等于 1, 所以不可能通过循环控制条件来结束循环体的执行,称为“死 循环”。
3.为了保证循环正常运行,应该特别注意: 循环控制条件 控制条件的初始状态(初始值) 循环体内部对控制条件的影响
§6.3 for语句
for语句格式 for (表达式1;表达式2;表达式3) 语句;
{ un1 = un2; un2 = un; un = un1 + un2;
}
printf ("No. %d is %d\n", n, un);
}
例C3_5204.C程序
un = un2 = 1; for (i=3; i<=n; i++) { un1 = un2;
un2 = un; un = un1 + un2; }
就会逐步长大,到了第2个月末就生出一对小兔子。 第3个月大兔子会继续生一对小兔子,而第2个月出生 的小兔子会逐步长大。第4个月时,第1月出生的兔子 继续生育,第2月出生的小兔子也可以生育一对小兔 子了,第3月出生的小兔子则逐步长大……
假设这些草原的兔子非常长寿,可以认为它们不 会死亡。请建立数学模型,计算 第N个月时,草原上 将会有多少对兔子?
递推公式: n! = 1
当 n=1 时
n! = (n-1)! * n
当 n>1 时
#include <stdio.h>
main ( )
{ long int n=1;
int i;
for ( i = 1; i <=10; i++ )
{ n = n * i;
/* 求N! */
printf ( "%2d!=%ld\n", i, n);
输出结果total
total += num
结束
§6.2 while语句-实例
#include <stdio.h>
例C3_5101
main ( )
{ int count,num,total;
/* count:计数器,num:输入的整数 */
count=0; total=0; /* total:存放累加和 */
就形成了一个死循环。
2.省略表达式1和表达式3,则:
for(;表达式2;)
等同于:
while( 表达式 )
据此结论:所有用while语句实现的循环都可以用for语 句实现。
3.表达式1、2、3全省略,则: for ( ; ; )
等同于:
while (1)
§6.3 for语句-实例
例C3_5204.C: 草原上有一对小兔子,它们刚出生后的第1个月
例C3_5101.C 从键盘输入10个整数,求这10个整数之
和。
开始
程序主体
累加器total=0 计数器count=0
while ( count<10 ) {
count++; scanf("%d", &num);
total += num; }
count<10?
成立
不成立
count=count+1 输入num
递推法是程序设计中最常用的方法之一,使用递推法必须有明 确的递推初始值和递推规则(递推公式)。
§6.3 for语句-实例
例C3_5204.C程序
例C3_5204
#include <stdio.h>
main( )
{ int n,i,un1,un2,un;
for ( ; ; )