第6讲 循环结构(1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for循环可以在表达式3中包含使循环趋于结束的 操作,甚至可以将循环体中的操作全部放到表达式3 中,因此for语句的功能更强,凡用while循环能完成 的,用for循环都能实现。
19/
几种循环的比较(续):
2.用while和do-while循环时,循环变量初始化的操作 应在while和do-while语句之前完成。而for语句可以
6.2.2 do - while 语句
do { 循环体语句 } while (表达式) );
//循环体至少执行一次
循环体语句 假
先循环 /*本行的分号不能缺省*/
后判断
表达 真式
do-while的下一条语句
15/
while 和 do-while 的比较
• while 是先判别条件,再决定是否循环; • do-while 是先至少循环一次,然后再根据循 环的结果决定是否继续循环。
第六讲 循环结构(一)
赵欢欢 计算机与信息工程学院
1/
学习目标
• 了解循环的概念 • 掌握使用循环的方法 • 掌握使用while 和do-while语句实现次数 不确定的循环 • 了解while 和do-while语句有什么不同
2/
循环结构
• 在许多问题中需要用到循环控制。例如: – 要输入全校学生成绩; – 求若干个数之和及阶乘; • 几乎所有实用的程序都包含循环。循环结构是 结构化程序三种基本结构之一,它和顺序结构、 选择结构共同作为各种复杂程序的基本构造单 元。
4
1
3 5 7
1
1
1
6.1.1 程序解析
6.1.2 while语句
6.1.3 输入一批学生的成绩,统计平均分
6/
6.1.1 程序解析-求π的近似值
#include <math.h> pi = 3.141613 int main(void) { int denominator, flag; item=0.0 ? double item, pi; flag = 1; denominator = 1 ; item = 1.0; pi = 0; while(fabs (item) >= 0.0001) { fabs(item) < 0.0001 item = flag * 1.0 / denominator; pi = pi + item; flag = -flag; denominator = denominator +2; } pi = pi * 4; printf ( “pi = %f\n”, pi); return 0; }
表达式1; while (表达式2) { for的循环体语句; 表达式3; }//循环语句不止一条时,要加{ }, 否则while执行的循环只到第一个 语句位置。
9/
while 和 for 的比较
//求前10个数的和 #include “stdio.h” int main(){ int sum=0;int i=1; for (i = 1; i <= 10; i++){ sum = sum + i;} printf(“sum=%d”,sum); } //求前10个数的和 #include “stdio.h” int main(){ int sum=0;int i=1; i = 1; // 循环变量赋初值 while (i <= 10){ // 循环条件 sum = sum + i; i++; // 循环变量的改变 } printf(“sum=%d”,sum); }
//求前n项的平方和如何实现?
10/
统计输入的一批学生的平均成绩
例6-2 从键盘输入一批学生的成绩,计算平均 分。 分析:
– 求累加和 – 确定循环条件
• 不知道输入数据的个数,无法事先确定循环次数 • 用一个特殊的数据作为正常输入数据的结束标志,比 如选用一个负数作为结束标志。
11/
#include <stdio.h> Int main(void) Enter grades: -1 67 88 73 54 82 { int num; Grade average mark is double grade, total; num = 0; total = 0; printf(“Enter grades: \n"); scanf("%lf", &grade); /* 输入第1个数*/ while (mark >= 0) { /* 输入负数,循环结束 */ total = total + grade; num++; Enter grades: 67 88 73 54 82 -1 scanf (“%lf”, &grade); Grade average is 72.80 } if(num != 0) printf(“Grade average is %.2f\n", total/num); else printf(" Grade average is 0\n"); return 0; }
7/
6.1.2 while 语句
形式:while (表达式) 循环体语句;
表达式 真 循环体语句 假
一条语句
循环条件 循环体
while下一条语句
8/
while 语句说明
while 语句和for语句
都是在循环前先判断条件
把for语句改写成while语句
for(表达式1; 表达式2; 表达式3) 循环体语句
循环体语句 假
表达式 真 循环体语句
假
表达式
真
do-while的下一条语句
while的下一条语句
16/
while 和 do-while 的比较
#include <stdio.h> main() {int i;int sum=0;scanf(“%d”,&i); while(i<=10) { sum+=i;i++; } printf(“sum=%d\nLeabharlann Baidu,sum); } //while循环 #include <stdio.h> main() {int i;int sum=0;scanf(“%d”,&i); do{ sum+=i;i++; } while(i<=10); printf(“sum=%d”,sum); } //do~while循环
3/
循环结构
• 实现循环的几个语句 – for语句 – while语句 – do~while语句 – goto语句和if语句构造循环
4/
循环结构
6.1 用格里高利公式求π的近似值 (while语句)
6.2 统计一个整数的位数 (do-while语句)
5/
用格里高利公式求π的近似值
例6-1使用格里高利公式求π的近似值,要 求精确到最后一项的绝对值小于10–4。
17/
6.2.3 循环语句的选择
if(循环次数已知) 使用for语句 else /* 循环次数未知 */ if (循环条件在进入循环时明确) 使用while语句 else /* 循环条件需要在循环体中明确 */ 使用do-while语句
18/
几种循环的比较:
1.while和do-whi1e循环,只在while后面指定循环 条件,在循环体中包含应反复执行的操作语句,包 括使循环趋于结束的语句(如i++,或i+=1等)。
在表达式1中实现循环变量的初始化。
3.while和for循环是先判断表达式,后执行语句; 而do-while循环是先执行语句,后判断表达式。
20/
作业与实验
• 作业
– 练习4-3、4-4
• 实验
– 实验指导书:实验4.1
21/
6.2 统计一个整数的位数
从键盘读入一个整数,统计该数的位数。 例如;输入:12345,输出5;输入-123,输出3。 6.2.1 程序解析
6.2.2 do - while语句
6.2.3 循环语句的选择
13/
程序解析-统计一个整数的位数
Enter a number: 12534 int main(void) It contains 5 digits. { int count, number; Enter a number: -99 count = 0; It contains 2 digits. printf(“Enter a number: "); Enter a number: 0 scanf ("%d", &number) ; It contains 1 digits. if (number < 0) number = -number; do { while (number != 0) { number = number / 10; number = number / 10; count ++; count ++; } } while (number != 0); printf("It contains %d digits.\n", count); return 0; } 14/
19/
几种循环的比较(续):
2.用while和do-while循环时,循环变量初始化的操作 应在while和do-while语句之前完成。而for语句可以
6.2.2 do - while 语句
do { 循环体语句 } while (表达式) );
//循环体至少执行一次
循环体语句 假
先循环 /*本行的分号不能缺省*/
后判断
表达 真式
do-while的下一条语句
15/
while 和 do-while 的比较
• while 是先判别条件,再决定是否循环; • do-while 是先至少循环一次,然后再根据循 环的结果决定是否继续循环。
第六讲 循环结构(一)
赵欢欢 计算机与信息工程学院
1/
学习目标
• 了解循环的概念 • 掌握使用循环的方法 • 掌握使用while 和do-while语句实现次数 不确定的循环 • 了解while 和do-while语句有什么不同
2/
循环结构
• 在许多问题中需要用到循环控制。例如: – 要输入全校学生成绩; – 求若干个数之和及阶乘; • 几乎所有实用的程序都包含循环。循环结构是 结构化程序三种基本结构之一,它和顺序结构、 选择结构共同作为各种复杂程序的基本构造单 元。
4
1
3 5 7
1
1
1
6.1.1 程序解析
6.1.2 while语句
6.1.3 输入一批学生的成绩,统计平均分
6/
6.1.1 程序解析-求π的近似值
#include <math.h> pi = 3.141613 int main(void) { int denominator, flag; item=0.0 ? double item, pi; flag = 1; denominator = 1 ; item = 1.0; pi = 0; while(fabs (item) >= 0.0001) { fabs(item) < 0.0001 item = flag * 1.0 / denominator; pi = pi + item; flag = -flag; denominator = denominator +2; } pi = pi * 4; printf ( “pi = %f\n”, pi); return 0; }
表达式1; while (表达式2) { for的循环体语句; 表达式3; }//循环语句不止一条时,要加{ }, 否则while执行的循环只到第一个 语句位置。
9/
while 和 for 的比较
//求前10个数的和 #include “stdio.h” int main(){ int sum=0;int i=1; for (i = 1; i <= 10; i++){ sum = sum + i;} printf(“sum=%d”,sum); } //求前10个数的和 #include “stdio.h” int main(){ int sum=0;int i=1; i = 1; // 循环变量赋初值 while (i <= 10){ // 循环条件 sum = sum + i; i++; // 循环变量的改变 } printf(“sum=%d”,sum); }
//求前n项的平方和如何实现?
10/
统计输入的一批学生的平均成绩
例6-2 从键盘输入一批学生的成绩,计算平均 分。 分析:
– 求累加和 – 确定循环条件
• 不知道输入数据的个数,无法事先确定循环次数 • 用一个特殊的数据作为正常输入数据的结束标志,比 如选用一个负数作为结束标志。
11/
#include <stdio.h> Int main(void) Enter grades: -1 67 88 73 54 82 { int num; Grade average mark is double grade, total; num = 0; total = 0; printf(“Enter grades: \n"); scanf("%lf", &grade); /* 输入第1个数*/ while (mark >= 0) { /* 输入负数,循环结束 */ total = total + grade; num++; Enter grades: 67 88 73 54 82 -1 scanf (“%lf”, &grade); Grade average is 72.80 } if(num != 0) printf(“Grade average is %.2f\n", total/num); else printf(" Grade average is 0\n"); return 0; }
7/
6.1.2 while 语句
形式:while (表达式) 循环体语句;
表达式 真 循环体语句 假
一条语句
循环条件 循环体
while下一条语句
8/
while 语句说明
while 语句和for语句
都是在循环前先判断条件
把for语句改写成while语句
for(表达式1; 表达式2; 表达式3) 循环体语句
循环体语句 假
表达式 真 循环体语句
假
表达式
真
do-while的下一条语句
while的下一条语句
16/
while 和 do-while 的比较
#include <stdio.h> main() {int i;int sum=0;scanf(“%d”,&i); while(i<=10) { sum+=i;i++; } printf(“sum=%d\nLeabharlann Baidu,sum); } //while循环 #include <stdio.h> main() {int i;int sum=0;scanf(“%d”,&i); do{ sum+=i;i++; } while(i<=10); printf(“sum=%d”,sum); } //do~while循环
3/
循环结构
• 实现循环的几个语句 – for语句 – while语句 – do~while语句 – goto语句和if语句构造循环
4/
循环结构
6.1 用格里高利公式求π的近似值 (while语句)
6.2 统计一个整数的位数 (do-while语句)
5/
用格里高利公式求π的近似值
例6-1使用格里高利公式求π的近似值,要 求精确到最后一项的绝对值小于10–4。
17/
6.2.3 循环语句的选择
if(循环次数已知) 使用for语句 else /* 循环次数未知 */ if (循环条件在进入循环时明确) 使用while语句 else /* 循环条件需要在循环体中明确 */ 使用do-while语句
18/
几种循环的比较:
1.while和do-whi1e循环,只在while后面指定循环 条件,在循环体中包含应反复执行的操作语句,包 括使循环趋于结束的语句(如i++,或i+=1等)。
在表达式1中实现循环变量的初始化。
3.while和for循环是先判断表达式,后执行语句; 而do-while循环是先执行语句,后判断表达式。
20/
作业与实验
• 作业
– 练习4-3、4-4
• 实验
– 实验指导书:实验4.1
21/
6.2 统计一个整数的位数
从键盘读入一个整数,统计该数的位数。 例如;输入:12345,输出5;输入-123,输出3。 6.2.1 程序解析
6.2.2 do - while语句
6.2.3 循环语句的选择
13/
程序解析-统计一个整数的位数
Enter a number: 12534 int main(void) It contains 5 digits. { int count, number; Enter a number: -99 count = 0; It contains 2 digits. printf(“Enter a number: "); Enter a number: 0 scanf ("%d", &number) ; It contains 1 digits. if (number < 0) number = -number; do { while (number != 0) { number = number / 10; number = number / 10; count ++; count ++; } } while (number != 0); printf("It contains %d digits.\n", count); return 0; } 14/