2020-2021学年信息学奥赛资料 第九课 循环结构-while(适用于高中)课件(17张PPT)

文档属性

名称 2020-2021学年信息学奥赛资料 第九课 循环结构-while(适用于高中)课件(17张PPT)
格式 pptx
文件大小 372.8KB
资源类型 教案
版本资源 通用版
科目 信息技术(信息科技)
更新时间 2021-05-19 20:54:38

图片预览

文档简介

第九课 循环结构-while

目 标
01、理解循环结构的含义。
02、熟练掌握 while 语句的格式和功能
循环结构
在程序设计中,经常需要反复执行某一条语句或一个语句块,这种结构称为“循环结构”或者“重复结构”。其实,计算机最擅长的就是重复做一件事情,所以循环结构在程序设计中应用非常广泛。
在 C++ 中,循环结构有三种实现语句:while 语句、do-while 语句和 for 语句。
1. while 语句的含义
其含义为:先计算表达式(一般称为循环条件)的值,当表达式的值为真(循环条件成立)时,去执行一次循环体。和 if 语句不同的是,执行完一次循环体后,while 语句又回到开始处,继续计算和判断表达式的真假,决定是否再次执行循环体。也就是“当表达式成立时,不断重复执行循环体”,所以又称为“当型循环”。
while 语句的格式如下:
while(表达式){
循环体

2.while 语句的应用举例
【问题分析】
设 sum 存放答案,初始化为 0。再设 i 为循环控制变量,初始化为 1。当循环条件(i<=100)成立时,反复执行以下循环体:
(1) 将 i 累加到和 sum 中;
(2) 将 i 取值为下一个数,即 i++。
最后,输出 sum的值。
例1、求 1+2+3+…+100 的值。
参考程序:
#include
using namespace std;
int main(){
int i = 1,sum = 0;
while(i <= 100) sum += i++;
cout << sum << endl;
return 0;
}
国内外研究状况
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
例2、阅读程序,写出程序的运行结果。
#include
using namespace std;
int main(){
int i = 100,x = 0,y = 0;
while(i > 0){
i--;
x = i % 8;
if(x == 1) y++;
}
cout << y << endl;
return 0;
}
国内外研究状况
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
【问题分析】
一般采用列表观察、找规律的方法,阅读和理解程序。对于本题而言,循环条件为“i > 0”,用到 i、x 和 y 这 3 个变量,列表如表 4.1-1。
通过找规律发现,每次 i 是 8*x+1 时,y 的值会加1,也就是97、89、81、…、9、1,一 共99/8+1=13。所以,程序最后输出 y 的值为 13。
国内外研究状况
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus nibh sit amet sem vulputate venenatis bibendum orci pulvinar.
例3、统计正数
【问题描述】
输入若干整数,以 0 结尾,统计其中有多少个正整数。
【输入格式】
一行若干整数,最后一个为 0。
【输出格式】
一行一个整数,表示输入的数据中正整数的个数。
【样例输入】
3 6 -3 2 0
【样例输出】
3
【问题分析】
对于本题来说,首先要输入一个整数,当它不为 0 时,需要反复执行:
(1) 判断该数是否为正数,如果是,则答案累加 1;
(2) 输入下一个数,再返回去判断是否为 0。
//p4-1-3
#include
using namespace std;
int main(){
int x,s = 0;
cin >> x;
while(x != 0){// 也可以简写成 while(x)
if(x > 0) s++;
cin >> x;
}
cout << s << endl;
return 0;
}
例4、求平均年龄
【问题描述】
给出一个班级里每名学生的年龄(正整数),求所有学生的平均年龄,保留到小数点后两位。
【输入格式】
一行一个正整数 n,表示学生的人数,1≤n≤100。
后面 n 行,每行一个正整数,表示学生的年龄,15≤年龄≤25。
【输出格式】
一行一个浮点数,保留到小数点后两位。
【样例输入】
2
18
17
【样例输出】
17.50
例4、投资收益
【问题描述】
小华在去年赚了一大笔钱。他想把这些钱用于投资,并对自己能得到多少收益感到好奇。
已知投资的年利率为 r(0~20 之间的整数),小华现有 m 元钱。他想知道投资多少年后,他的钱将会超过 y 元。
【输入格式】
一行三个整数 r、m 和 y,相邻两个整数之间用一个空格隔开。m 为 100~1000000 之间的整数。
【输出格式】
一行一个整数,即要投资的年数。保证答案的范围在 1~400 之间。
【样例输入】
5 5000 6077
【样例输出】
4
【问题分析】
小华手里有 m 元钱,目标是超过 y 元钱,k 表示答案(初始化为 0)。所以,当条件“m <= y”成立时,要反复执行:
(1) 修改 m 的值,即 m = m *(1 + r%);
(2) 修改 k 的值,即 k++。
循环结束后,k 的值即为所求的答案。
#include
using namespace std;
int main(){
double r,m,y;
int k = 0;
cin >> r >> m >> y;
while(m <= y){
m = m * (1 + r / 100);
k = k + 1;
}
cout << k << endl;
return 0;
}
do-while 语句
do-while 语句是 C++ 中用于解决至少执行一次重复操作(循环体)的循环语句。
1. do-while 语句的含义
do-while 语句的格式如下:
do{
循环体
}while(表达式);
其含义为:先执行一次循环体,然后判断表达式是否成立,如果成立,则返回继续执行循环体,直到表达式不成立,才退出循环。一般称之为“直到型循环”。
例2、统计正数
【问题描述】
用 do-while 语句实现:输入若干整数,以 0 结尾,统计其中有多少个正整数。
【输入格式】
一行若干整数,最后一个为 0。
【输出格式】
一行一个整数,表示输入的数据中正整数的个数。
【样例输入】
3 6 -3 2 0
【样例输出】
3
参考程序:
#include
using namespace std;
int main(){
int x,s = 0;
do{
cin >> x;
if(x > 0) s++;
}while(x != 0);
cout << s << endl;
return 0;
}
同课章节目录