事前日常敲黑板
(1)事情从今天开始变得复杂了 需要用心了哦
首先,思考下面情形
输入一个数字,输出这个数到0之间的所有数字
不要挣扎了,流程图逃不掉的
仔细观察一下,看一下和前面的if 的流程图有什么区别
.
.
.
答案:if的判断框的两个分支都是向下的,这里面的一个分支是向上的,也就是说如果判断的结果满足某些条件则还需要重复这个判断过程
c++中用while来实现这个过程
具体语法如下
while(判断条件){
满足条件的时候要做的事情
}
注意:如果不满足则判断部分结束,程序将会直接向下执行(while结束后可能还会有一些语句的)
然后 开始我们的翻译过程
#include <iostream>
using namespace std;
void main(){
int i;
cin>>i;
while(0 <= i){
cout<<i;
i = i - 1;
}
cout<<endl;
}
于是,事情变成了
#include <iostream>
using namespace std;
void main(){
int i;
cin>>i;
while(0 <= i){
cout<<i--;
}
cout<<endl;
}
结果如下
值得注意的是 通过程序的操作,while中的判断条件一定要有不成立的时候.否则,程序将不断的重复 "昨天的故事" 也就是 陷入死循环 比如下面的代码
#include <iostream>
using namespace std;
void main(){
int i;
cin>>i;
while(0 <= i){
cout<<i;
}
cout<<endl;
}
当输入的i大于等于0时,由于i不会减小,所以就永远不会出现小于0的情况,所以程序将永远不会结束.
现在,我们在上面的情况下再改一点点需求.如果输入的值小于0则输出0,否则输出从0到输入的数字之间所有的数字
然后我们发现一个问题,无论如何 0 都是要输出的,其它的数字需要根据具体情况确定
于是 流程图如下
与上面的相似,这里也是满足条件的话 就重复某一部分的事情.但是与上面的不同的是 上面是先进行判断再确定是否重复,这里是先执行,然后再判断是否重复.所以这里有一个和上面差不多的用于循环的结构 do while 具体用法如下
do{
要执行的语句
}
while(判断条件);
注意:判断条件的括号后面有个分号的
整个过程是 先执行一次要执行的语句,然后进行判断,如果满足条件则继续执行上面的语句,否则循环结束 例子如下
#include <iostream>
using namespace std;
void main()
{
int a;
cin>>a;
int b = 0;
do{
cout<<b++;
}
while(b <= a);
cout<<endl;
}
结果如下
然后,来试一下下面的需求
输入一个数字,判断这个数字是否等于0 如果等于0 输出 "程序结束" 然后程序结束 。否则,继续重复输入判断的过程