史蒂芬·斯特兰奇是漫威世界中最强大的魔法师之一,原本是一位优秀的神经外科医生,凭借高超的医术被外界誉为上帝对手术界的恩赐,但好景不长,在一场意外的车祸断送了他的从医生涯,赖以生存的双手粉碎性骨折,再也无法拿起手术刀。他走遍世界,只为了治好双手,最终,他在喜马拉雅山遇见了古一,被古一收为弟子,他开始学习神秘的咒术与魔法,成为一代至尊魔法师—奇异博士。
那么在奇异博士的诸多魔法中,你最想学习哪种呢?
路人:那还用问吗?当然是传送门啊,这样早上就可以多睡几分钟再起床了o( ̄▽ ̄)ブ
吃瓜群众:Σ(っ °Д °;)っ
路人:而且传送门还可以困住敌人😁
吃瓜群众:(⊙o⊙)?
路人:一个传送门放在他的脚下,另外一个传送门放在他的头上。大致是这样的:
吃瓜群众:他落下来不还是可以捅你吗?🙄
路人:那如果我会循环魔法呢?🤪
吃瓜群众:循环?什么是循环?😲
路人:循环就是可以让任何东西重复地做同一件事情。比如你早上要很早的起床然后去上学,然后疲惫的回到家里还要做该死的作业,好不容易做完又得洗漱睡觉。第二天很早的起床去上学 …
吃瓜群众:求求你,别说了。
路人:怎么样循环魔法厉害吧😋
吃瓜群众:听你这么一说,好像是挺厉害(~ ̄▽ ̄)~,我要学循环魔法!!!!
路人:
while循环是一种常用的循环结构,它会重复执行一段代码,直到指定的条件不再满足为止。它的语法格式如下:
while (condition) {
// 循环体语句
}
其中,condition是循环条件,当condition为真时,执行循环体语句,执行完循环体语句后再次判断condition是否为真,如果为真则继续执行循环体语句,否则跳出循环。
路人:上面就是循环魔法的咒语。
吃瓜群众:
路人:我就以上面的坏人举例,看我施展魔法。
while (它是坏人!) {
// 循环体语句
加载传送门。
}
吃瓜群众:他不能停下来吗?
路人:可以,等我蓝条用完(计算机死机)。
吃瓜群众:
路人:咳咳~~,这样肯定是不行。while循环会重复执行一段代码,直到指定的条件不再满足为止。所以我们在每一次循环体运行以后要对条件进行更新。
while (它是坏人!) {
// 循环体语句
加载传送门。
//条件更新
你是好人吗?
}
路人:如果他是好人,那么就不满足循环的条件,魔法(程序)就会终止。
路人:怎么样?你学会了吗?
吃瓜群众:
路人:ok,你出师了。
编程求 1×2×3×⋯×n 。
根据分析的已知,未知按需要定义变量。
i 作为条件循环的变量。
//二、数据定义
int n,i=1,p=1;
从键盘读入整数 n。
//三、数据输入
cin>>n;
第一次学习循环结构可以看看循坏体是如何运行的。
while(i<=n){ //i=1 n=5
//循环体
cout<<i<<endl;
//条件更新
++i;
}
初始值i=1,假如n=5。那么i<=n条件成立,程序进入循环体内部。执行输出i语句后,程序向下执行++i;对条件变量进行更新。
while(i<=n){ //i=1 n=5
//循环体
cout<<i<<endl;//输出1
//条件更新
++i; //i=2
}
此时i = 2,n=5;依旧满足i<=n。条件成立,程序再次进入循环体内部。
while(i<=n){ //i=2 n=5
//循环体
cout<<i<<endl;//输出2
//条件更新
++i; //i=3
}
此时i = 3,n=5;依旧满足i<=n。条件成立,程序再次进入循环体内部。
while(i<=n){ //i=3 n=5
//循环体
cout<<i<<endl;//输出3
//条件更新
++i; //i=4
}
直到…i = 6,n=5;不满足i<=n的条件,循环终止,程序跳过循环部分向下执行。
本题根据阶乘的数学模型设计代码:p=p*i;
//四、数据计算
while(i<=n){
p*=i;
//条件更新
++i;
}
#include<iostream>
using namespace std;
int main(){
//一、分析问题
//已知:整数 n
//未知:整数 n 的阶乘p
//关系:p=n!=1×2×3×...×(n-1)×n
//二、数据定义
int n,i=1,p=1;
//三、数据输入
cin>>n;
//四、数据计算
while(i<=n){
p*=i;
//条件更新
++i;
}
//五、输出结果
cout<<p;
return 0;
}
编程求出所有不超过1000 的数中,含有数字 3 的自然数,并统计总数。
根据分析的已知,未知按需要定义变量。
//二、数据定义
int i=1,count=0;
本题不需要输入。
拆位求解属于基本操作,在 C++程序结构入门之顺序结构二 中介绍过,忘记的可以自行回去复习一下。
这里要使用 “或” ,因为满足其中任意一个条件就可以了,即个位、十位、百位有数字3。
//四、数据计算
while(i<1000){
if(i%10==3||i/10%10==3||i/100==3){
++count;
}
//条件更新
++i;
}
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
//一、分析问题
//已知:不超过 1000 的数
//未知:含有数字3的自然数的总数count
//关系:个位 ==3?十位 ==3?百位 ==3?
//二、数据定义
int i=1,count=0;
//三、数据输入
//四、数据计算
while(i<1000){
if(i%10==3||i/10%10==3||i/100==3){
++count;
}
//条件更新
++i;
}
//五、输出结果
cout<<count;
return 0;
}
输出 1∼999 中有因数 3 ,且至少有一位数字是 5 的数。
根据分析的已知,未知按需要定义变量。
为什么将i赋值为3呢?其实是为了好找有因数3的数。如果i每次都加上3,那么必定满足有因数3的条件,还可以少进行一次if判断。
//二、数据定义
int i=3;
本题不需要输入。
如上所述,i的累加从1变成3。拆位和上问题二一样的操作。
//四、数据计算
while(i<1000){
if(i%10==5||i/10%10==5||i/100==5){
}
//条件更新
i+=3;
}
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
//一、分析问题
//已知:1-999的数
//未知:有因数3,且至少有一位数字是5的数
//关系:数%3==0;个位 ==5?十位 ==5?百位 ==5?
//二、数据定义
int i=3;
//三、数据输入
//四、数据计算
while(i<1000){
if(i%10==5||i/10%10==5||i/100==5){
//五、输出结果
cout<<i<<endl;
}
//条件更新
i+=3;
}
return 0;
}
在1∼n 中,找出能同时满足用 3 除余 2 ,用 5 除余 3 ,用 7 除余 2 的所有整数的个数,如果没有请输出 0 。
根据分析的已知,未知按需要定义变量。
//二、数据定义
int i=1,n,sum=0;
//三、数据输入
cin>>n;
注意是同时满足,所以要使用逻辑与(&&)。
//四、数据计算
while(i<=n){
if(i%3==2&&i%5==3&&i%7==2){
++sum;
}
//条件更新
++i;
}
#include<iostream>
using namespace std;
int main(){
//一、分析问题
//已知:1-n的整数
//未知:能同时满足用3除余2,用5除余3,用7除余2的所有整数的个数sum
//关系:%3==2,%5==3,%7==2
//二、数据定义
int i=1,n,sum=0;
//三、数据输入
cin>>n;
//四、数据计算
while(i<=n){
if(i%3==2&&i%5==3&&i%7==2){
++sum;
}
//条件更新
++i;
}
//五、输出结果
cout<<sum;
return 0;
}
以上就是关于循环结构中while语句的学习内容,难度不高,多多练习即可掌握。
喜欢的朋友可以关注本专栏C++从零基础入门到NOI竞赛,一起学习一起进步。
阅读量:513
点赞量:0
收藏量:0