C++day14(while语句)
·
学习目标
1.while循环语句
- while循环语句,另一种C++循环控制语句。
- 可以用while循环替换for循环。
1.1while语句的格式
while(循环条件) //1.关键字while,后面一定要跟小括号。2.当循环条件为真时执行循环体语句,否则退出循环。3.小括号后不加分号
{
循环体内可以有一条到多条语句,只有一条语句时,大括号可以省略
}
- 循环条件可以是各种表达式,非0值表示条件为真,0值表示条件为假
- 通常在循环体中必须有改变循环条件的语句保证循环能够趋于结束,这很重要
1.2while语句的流程图
while(循环条件){
循环体;
}
先判断,后执行
- 先判断循环条件,如果条件成立,则执行一次循环体
- 执行一次循环体后,再次判断循环条件,如果成立则继续执行一次循环体,然后再看判断条件
- 如此往复直到判断条件不成立时,退出循环
1.3while循环的执行过程演示
int j=1;
while(j<=4)
{
cout<<"*";
j++;
}
| 运行代码 | j的值 | 输出内容显示为 |
|---|---|---|
| j=1;4 j<=4?是 cout<<“*”; |
1 | * |
| j++; j<=4?是 cout<<“*” |
2 | ** |
| j++; j<=4?是 cout<<“*” |
3 | *** |
| j++; j<=4?是 cout<<“*” |
4 | **** |
| j++; j<=4?否 |
5 | 结束循环 |
- 尽管while语句的格式中没有明确指定循环初值和使循环趋于结束的语句,但为了使循环正常结束,while循环依然必须包含循环结构的4个要素(循环初值、循环条件、使循环趋于结束的语句和循环体)。
- 在使用时,同学们需要从问题逻辑中提取相应的部分,写入代码中。
1.4把for循环改成while循环
for(intj=1;j<=31;j++){
cout<<j<<"";
if(j%7==0){
cout<<"\n";
}
}
int j=1;
while(j<=31)
{
cout<<j<<"";
if(j%7==0)
{
cout<<"\n";
}
j++;
}
- 在while循环之前初始化循环变量
- 在while循环中更新循环变量
练习题1、while循环求和
【编程挑战】编写一个程序,输入一个数n,利用while循环计算并输
出1+2+3+…+n的和。
【输入】一个整数n
【输出】1+2+3+…+n的和
【输入样例1】3【输入样例1】5
【输出样例1】6【输出样例1】15
#include<iostream>
using namespace std;
int main()
{
int n,i=1,sum=0;
cin>>n;
while(i<=n)
{
sum+=i;
i++;
}
cout<<sum;
return 0;
}
练习2、while循环找数
【编程挑战】编写一个小程序。输入一个数n,输出1~n之间(包含
1和n)所有既能被3整除又能被5整除的数。一行一个数。
【输入】一个数n
【输出】1~n之间所有既能被3整除又能被5整除的数,一行一个数
【输入样例】100
【输出样例】15
30
45
60
75
90
#include<iostream>
using namespace std;
int main()
{
int n,i=1;
cin>>n;
while(i<=n)
{
if(i%3==0&&i%5==0)
{
cout<<i<<endl;
}
i++;
}
return 0;
}
1.5for循环与while循环
for(初始化;循环条件;增量){
循环体;
}
while(循环条件){
循环体;
}
- 当循环次数确定时,for循环和while循环都可以用,可根据你的习惯选择一种
- 当循环次数不确定时,使用while循环
练习3、折纸问题
【问题】一张足够大的纸对折多少次有可以达到珠穆朗玛峰的高度?
已知珠穆朗玛峰高度为8848.86米。这张纸的厚度为0.2毫米。1米
=1000毫米。
【编程挑战】编写一个程序,计算并输出对折的次数。
【输入】无
【输出】26
#include<iostream>
using namespace std;
int main()
{
float h=0.2,sum=0;
int z=8848.86*1000;
while(h<z)
{
h*=2;
sum++;
}
cout<<sum;
return 0;
}
【注意】
珠穆朗玛峰高度8848.86可以定义为常量,也可以直接用
注意单位换算,一张纸的厚度是0.2毫米=0.0002米
练习4、验证角谷猜想
【角谷猜想(3n+1猜想)】对于任一正整数,如果它是奇数,则对它乘3再加1,
如果它是偶数,则对它除以2,如此循环,最终都能够得到1。
【编程挑战】编写一个程序,验证角谷猜想。
【输入】23
【输出】 23->70->35->106->53->160->80->40->20->10->5->16->8->4->2->1
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while(n!=1)
{
cout<<n<<"->";
if(n%2==0)
n/=2;
else
n=n*3+1;
}
cout<<n;
return 0;
}
本次课程的知识点
- while循环语句的格式和功能
- for循环与while循环的对比
更多推荐


所有评论(0)