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循环
原文地址:https://www.cnblogs.com/KX-Lau/p/12817403.html