zoukankan      html  css  js  c++  java
  • C++---条件结构和循环结构

    条件结构

    if结构

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        //判断用户输入的字符是否是合法的硬盘盘符A-Z
        char pan = '';    //默认值设置为空字符
        cout << "请输入硬盘盘符:" << endl;
        cin >> pan;
    
        //char类型属于int
        //if(pan >= 'A' && pand <= 'Z')
        if(pan >= 65 && pan <= 65 + 26)
        {
            cout << "合法的盘符" << endl;
        }
        else
        {
            cout << "不合法的盘符" << endl;
        }
        
        
        //计算应付金额, 商品总价大于50000时打7折, 否则打9折
        double price_louis = 35000;
        double price_hermes = 11044.5;
        double price_chanel = 1535;
        double price_total = 0;
        double discount = 0;
        price_total = price_chanel + price_hermes + price_louis;
        if(price_total > 50000)
        {
            discount = 0.7;
        }
        else
        {
            discount = 0.9;
        }
        price_total *= discount;
        cout << "应付金额:" << price_total << endl;
    }
    

    多重if结构

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int x;
        cout << "请输入一个整数: " << endl;
        cin >> x;
        if(x > 0)
        {
            cout << "这是一个正整数" << endl;
        }
        else if(x < 0)
        {
            cout << "这是个负整数" << endl;
        }
        else
        {
            cout << "输入为0" << endl;
        }
    }
    

    switch结构

    • switch后的表达式只能是整型或字符型
    • case后的常量表达式的值不能相同
    • case后允许多条语句, 不需要大括号
    • 如果不添加break语句, 需要注意执行顺序
    • case和default子句的先后顺序可以自行改变
    • default子句可以省略
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        char grade;
        cout << "请输入你的成绩等级:" << endl;
        cin >> grade;
        switch(grade)
        {
        default:
            cout  << "Invalid grade" << endl;        
        case 'A':
            cout << "Excellent!" <<endl;
            break;
        case 'B':
            cout << "Well done!" <<endl;
            break;
        case 'C':
            cout << "You passed!" <<endl;
            break;
        case 'D':
            cout << "Better try again!" <<endl;
            break;
        }
    }
    

    switch和多重if对比

    • 都是用来处理分支条件结构
    • switch是等值条件判断, 条件是有限个的
    • 多重if是判断某个连续区间时使用

    循环

    while循环

    //1-100的累加和
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        //循环三要素: 循环初值 循环判断  循环更新
        //通过控制循环变量, 来控制循环次数
    
        int i = 0;      //循环初值
        int sum = 0;    
        while(i<=100){  //循环判断
            sum += i;
            i++;        //循环更新
        }
        cout << "1~100的累加和为:" << sum << endl;
    }
    

    程序调试

    1. 分析错误
    2. 设置断点
    3. 启动调试
    4. 单步运行
    5. 观察变量
    6. 发现问题
    7. 修改代码重新运行

    do-while循环

    //先执行, 后判断
    
    do{
        循环操作
    }while(循环条件);
    

    与while循环对比

    • 执行顺序不同
    • 初识情况不满足条件时
      • while循环一次都不会执行
      • do-while循环不管什么情况都会至少执行一次

    for循环

    for(表达式1; 表达式2; 表达式3)
    {
        语句;
    }
    
    //表达式1为循环变量赋初始值, 可省略
    //表达式2为循环条件, 可省略
    //表达式3位更新循环变量的值, 可省略
    //分号用来分隔三个表达式, 不可省略
    
    for(;;)为一个死循环
    

    break和continue

    • break的作用是跳出循环, 执行循环之后的语句, 可用于switch结构和循环结构中.

    • continue的作用是跳出本次循环, 继续下一次的循环, 只能用于循环结构中.

      image-20200502102127893

    //1-100的偶数和
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int sum = 0;
        for(int i = 1; i <= 100; i++)
        {
            if(i % 2 == 1){
                continue;
            }
            sum = sum + i;
        }
        cout << "1-100偶数和为 " << sum << endl;
    }
    
    
    //打印菱形图案
       *
      ***
     *****
    *******
     *****
      ***
       *
    
    
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        //上半部分
        //外层控制行数
        for(int i = 1; i <= 4; i++){
            //内层控制列的图案
            for(int j = 4 - i; j > 0; j--){
                cout << ' ';
            }
            for(int j = 0; j < (2 * i - 1); j++){
                cout << '*';
            }
            //换行
            cout << endl;
        }
    
        //下半部分
        for(int i = 1; i < 4; i++){
            for(int j = 0; j < i; j++){
                cout << ' ';
            }
            for(int j = (4 - i) * 2 - 1; j >0; j--){
                cout << '*';
            }
            //换行
            cout << endl;
        }
    }
    

    循环总结

    • 多次重复执行一个或多个任务时考虑使用循环
    • 循环次数确定的情况下, 通常使用for循环
    • 循环次数不确定的情况下, 通常选用while和do-while循环
  • 相关阅读:
    第19章 辅助器方法
    第18 章 视图
    第16章 过滤器
    第15章 控制器和动作
    第14章 高级路由特性
    第13章 URL 路由
    第12章 MVC项目综述
    第8章 SportsStorePeta 导航
    第9章 SportsStorePeta 完成购物车
    第10章 SportsStorePeta 管理
  • 原文地址:https://www.cnblogs.com/KX-Lau/p/12817403.html
Copyright © 2011-2022 走看看