学习目标

1.while循环语句

  1. while循环语句,另一种C++循环控制语句。
  2. 可以用while循环替换for循环。

1.1while语句的格式

while(循环条件)		//1.关键字while,后面一定要跟小括号。2.当循环条件为真时执行循环体语句,否则退出循环。3.小括号后不加分号
{
	循环体内可以有一条到多条语句,只有一条语句时,大括号可以省略
}
  1. 循环条件可以是各种表达式,非0值表示条件为真,0值表示条件为假
  2. 通常在循环体中必须有改变循环条件的语句保证循环能够趋于结束,这很重要

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 结束循环
  1. 尽管while语句的格式中没有明确指定循环初值和使循环趋于结束的语句,但为了使循环正常结束,while循环依然必须包含循环结构的4个要素(循环初值、循环条件、使循环趋于结束的语句和循环体)。
  2. 在使用时,同学们需要从问题逻辑中提取相应的部分,写入代码中。

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++;
}
  1. 在while循环之前初始化循环变量
  2. 在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(循环条件){
	循环体;
}
  1. 当循环次数确定时,for循环和while循环都可以用,可根据你的习惯选择一种
  2. 当循环次数不确定时,使用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;
}

本次课程的知识点

  1. while循环语句的格式和功能
  2. for循环与while循环的对比
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐