while循环

/*
 while 循环
 while循环是一种基本的循环结构模式,只要给定的条件为真,while循环会重复执行一组语句。
 格式:
 while(条件表达式){
    语句块; //可以是1条语句或者是多条语句,1条语句可以不用大括号
 }
 
 条件表达式可以是任意表达式,任意非零值都为真,0为假
 当条件为假时,程序执行循环结构后面的语句
 
 与if对比,if条件为真只会执行一次,while会执行多次,直到条件为假
  
 总结:
 循环的三要素,初始化,条件,使循环停步的方式
 计数,求和要初始化为0,求积需要初始化为1
 倍数关系,n%x==0,说明n是x的倍数
 */

#include <iostream>
using namespace std;

int main() {
    // 输出1~10,一行一个
    /*
     循环的三要素:1循环的初始值、2循环条件、3让循环停止的方式
     如果缺少第3步,那么i<=10永远为真,循环会一直执行
     如果i不赋初始值,i是一个随机数
     执行过程:程序从上向下执行,int i=1执行1次,判断循环条件,如果为真则执行循环体(执行完循环体后,再判断条件,如此反复),如果为假则执行循环结构后面的语句
     */
    int i=1; //1循环的初始值
    while(i<=10){  //2循环条件
        cout<<i<<endl;
        i++; //3让循环停止的方法
        // 如果没有i++或对i作改变,那么i<=10永远为真,循环会一直进行
        // i=i+1; i++与i=i+1是等价的,都是i自增1
    }
    cout<<"最后i的值为:"<<i<<endl; //当i=11时,循环条件为假,那么就结构当前循环结构,执行下面的语句
    cout<<endl;
    /*
     输出:
     1
     2
     3
     4
     5
     6
     7
     8
     9
     10
     最后i的值为:11
     */
    
    /*
     如果上面把i++放在cout<<i<<endl;前面呢
     对i的改变可以放在任意的位置,但执行的结构会有不同,如果放在前面,则先变化i再输出i,如果放在后面则先输出i再变化i
     所以i++的位置不能随意放置,位置不能,执行结果不同
     */
    
    i=1;
    while(i<=10){
        i++;
        cout<<i<<endl;
    }
    cout<<"最后i的值为:"<<i<<endl;
    /*
     输出:
     2
     3
     4
     5
     6
     7
     8
     9
     10
     11
     最后i的值为:11
     */
    
    // 循环1~10所有奇数
    /*
     对于i++,当然也可以是别的,比如:i=i+2,i=i*3等,根据需要就变化就可以,直到条件为假,循环结构
     */
    
    // 写法1:
    i=1;
    while(i<=10){
        // 如果是奇数就输出
        if(i%2==1){
            cout<<i<<endl;
        }
        i++; //每次自增加1,在输出的过程中判断一个是否输出,注意i++不能放入if结构中,只有当是奇数才会自增加,那偶数就不会自增
    }
    cout<<"最后i的值为:"<<i<<endl;
    cout<<endl;
    /*
     输出:
     1
     3
     5
     7
     9
     最后i的值为:11
     */
    
    // 写法2:循环次数减少,效率更高
    i=1;
    while(i<=10){
        cout<<i<<endl;
        i=i+2; //每次自增2,刚好是奇数,直接输出奇数,循环次数更小,效率更高
    }
    cout<<"最后i的值为:"<<i<<endl;
    cout<<endl;
    /*
     输出:
     1
     3
     5
     7
     9
     最后i的值为:11
     */
    
    return 0;
}