C++之运算符&循环


C++之运算符&循环

  • [1 算术运算符](#1 算术运算符)
    • [1.1 案例](#1.1 案例)
  • [2 赋值运算符](#2 赋值运算符)
    • [2.1 案例](#2.1 案例)
  • [3 比较运算符](#3 比较运算符)
    • [3.1 案例](#3.1 案例)
  • [4 逻辑运算符](#4 逻辑运算符)
  • [5 三元表达式](#5 三元表达式)
    • [5.1 案例](#5.1 案例)
  • [6 if-else逻辑判断语句](#6 if-else逻辑判断语句)
  • [7 switch控制语句](#7 switch控制语句)
  • [8 枚举类型](#8 枚举类型)
  • [9 while循环](#9 while循环)
    • [9.1 案例1](#9.1 案例1)
    • [9.2 案例2](#9.2 案例2)
  • [10 for循环](#10 for循环)
    • [10.1 案例1](#10.1 案例1)
    • [10.2 案例2:九九乘法表](#10.2 案例2:九九乘法表)
  • [11 循环中断语句](#11 循环中断语句)

1 算术运算符

运算符是一种符号,用于告诉编译器执行特定的数学或逻辑操作。
C++内置的运算符有:
算术运算符
赋值运算符
比较运算符
逻辑运算符
位运算符

1.1 案例

cpp 复制代码
#include "iostream"
using namespace std;

int main() {
    system("chcp 65001");
    //单目(只有1个操作数)操作符:+ -
    int num1 = +10;
    int num2 = -10;
    cout << num1 << "," << num2 << endl;

    //双目操作符
    int num3=5+5;
    int num4=5-3;
    int num5=5*5;
    int num6=10/3;
    int num7=10%3;
    cout << num3 << endl;
    cout << num4 << endl;
    cout << num5 << endl;
    cout << num6 << endl;
    cout << num7 << endl;

    // 单目操作符 ++(+1)、--(-1)
    int a=2;
    int b=++a;    // 前置递增(+1),在赋值语句(=)之前,先前置递增
    cout << a << endl;
    cout << b << endl;
    int c=2;
    int d=c++;
    cout << c << endl;
    cout << d << endl;


    return 0;
}

输出结果:

cpp 复制代码
10,-10
10
2
25
3
1
3
3
3
2

2 赋值运算符

2.1 案例

cpp 复制代码
#include "iostream"

using namespace std;

// 方式2:system("chcp 65001");

int main() {
    system("chcp 65001");
    int num = 2;
    num = num +3;
    cout << num << endl;
    num+=3;    //num=num+3
    cout << num << endl;

    return 0;
}

3 比较运算符

在C++中,支持2种风格的字符串,它们各自的比较方式是不同的。
C语言风格字符串:

char s[] = "hello"以及 char *s= "hello" 以及"hello"都属于C语言风格字符串

如果使用运算符比较,是对比内存地址,而非比较内容

所以需要使用C语言函数strcmp进行比较

#include "cstring"

int result=strcmp(s1,s2);

结果分为-1(s1<s2)、0(s1=s2)、1(s1>s2)三种
C++风格字符串(string类型)

进行对比的两个字符串至少有1个是string类型,即可使用运算等等比较。

C++对string类型参与的运算符进行了重载(后面学习),确保可以进行内容对比码敲到头发茂

3.1 案例

cpp 复制代码
#include "iostream"
#include "cstring"  // C语言字符串库

using namespace std;

// 方式2:system("chcp 65001");

int main() {
    system("chcp 65001");
    int num1 = 5;
    int num2 = 2;
    bool r1 = num1 == num2;
    cout << "num1=num2:" << r1 << endl;

    //字符串的比较
    // C语言风格字符串,直接应用比较运算符,比较的是内存地址,而不是内容
    char s1[] = "hello";
    char *s2 = "hello";
    cout << "s1==s2:" << (s1 == s2) << endl;  // 0

    //strcmp进行比较  0:表示相等,-1:s1<s2 1:s1>s2
    cout << "s1==s2 ?" << strcmp(s1, s2) << endl;  // 0

    char s3[] = "a";
    char *s4 = "b";
    cout << "s3==s4?" << strcmp(s3, s4) << endl;

    //字面量
    cout << "字符串字面量 c 是否大于 a;" << strcmp("c", "a") << endl;
    // C++风格字符串,string类型的都是C++风格字符串
    // 在比较中只要有1个C++风格字符串就可以用比较运算符了
    string s5 = "a";
    char s6[] = "a";
    cout << "S5 是否等于 s6" << (s5 == s6) << endl;


    return 0;
}
cpp 复制代码
num1=num2:0
s1==s2:0
s1==s2 ?0
s3==s4?-1
字符串字面量 c 是否大于 a;1
S5 是否等于 s61

4 逻辑运算符

5 三元表达式

5.1 案例

cpp 复制代码
#include "iostream"

using namespace std;

// 方式2:system("chcp 65001");

int main() {
    system("chcp 65001");
    // 表达式? v1 : v2
//    int num1,num2;
//    cout << "请输入num1的值" << endl;
//    cin >> num1;
//    cout << "请输入num2的值" << endl;
//    cin >> num2;
//    string value = num1 > num2 ? "num1是大于num2" : "num1是小于num2的";
//    cout << value << endl;

    double score1,score2;
    cout << "输入第一次成绩:"<<endl;
    cin >> score1;
    cout << "输入第二次成绩:"<<endl;
    cin >> score2;
    string res = score2>score1 ? "success":"fail";
    cout << res << endl;
    return 0;
}
cpp 复制代码
输入第一次成绩:
100
100
输入第二次成绩:
90
90
fail

6 if-else逻辑判断语句

cpp 复制代码
#include "iostream"
using namespace std;

int main() {
    system("chcp 65001");
    int num = 90;
    if (num >= 90) {
        cout << "优秀" << endl;
        if (num >= 95) {
            cout << "太优秀";
        } else {
            cout << "普通优秀";
        }
    } else if (num >= 60) {
        cout << "及格" << endl;
    } else {
        cout << "不及格" << endl;
    }
    return 0;
}

7 switch控制语句

cpp 复制代码
#include "iostream"

using namespace std;

int main() {
    system("chcp 65001");
    int num;
    cin >> num;
    switch(num){
        case 10:
        case 9:
            cout << "优秀" << endl;
            break;
        case 8:
        case 7:
            cout << "普通" << endl;
            break;
    }
    return 0;
}
cpp 复制代码
8
8
普通

8 枚举类型

cpp 复制代码
#include "iostream"

using namespace std;

int main() {
    system("chcp 65001");
    // enum 枚举类型
    // 询问小朋友喜欢的颜色
    enum Color {
        RED,
        YELLOW,
        BLUE
    };
    int num;
    cout << "喜欢的颜色: 红黄蓝(0,1,2)" << endl;
    cin >> num;
    switch (num) {
        case RED:
            cout << "小朋友喜欢红色" << endl;
            break;

        case YELLOW:
            cout << "小朋友喜欢黄色" << endl;
            break;

        case BLUE:
            cout << "小朋友喜欢蓝色" << endl;
            break;

        default:
            cout << "重新输入" << endl;
    }

    return 0;
}
cpp 复制代码
喜欢的颜色: 红黄蓝(0,1,2)
2
2
小朋友喜欢蓝色

9 while循环

9.1 案例1

cpp 复制代码
#include "iostream"

using namespace std;

int main() {
    system("chcp 65001");
    int day = 1;
    while (day <= 10) {
        cout << "今天是第" << day << "天,~~~" << endl;
        day++;
    }

    return 0;
}
cpp 复制代码
今天是第1天,~~~
今天是第2天,~~~
今天是第3天,~~~
今天是第4天,~~~
今天是第5天,~~~
今天是第6天,~~~
今天是第7天,~~~
今天是第8天,~~~
今天是第9天,~~~
今天是第10天,~~~

9.2 案例2

cpp 复制代码
#include "iostream"

using namespace std;

int main() {
    system("chcp 65001");
    int num=1;
    int sum=0;
    while (num<=100){
        sum+=num;
        num++;
    }
    cout << "sum的值为:" << sum << endl;

    return 0;
}
cpp 复制代码
sum的值为:5050

10 for循环

10.1 案例1

cpp 复制代码
#include "iostream"

using namespace std;

int main() {
    system("chcp 65001");
    for (int num = 1; num <= 10; num++) {
        cout << num << endl;
    }
    // 循环因子初始化  条件判断 循环因子变化
    for (int num = 1; num <= 20; num++) {
        if (num % 2 == 1) {
            cout << num << endl;
        }
    }

    for (int num = 1; num <= 20; num += 2) {
        cout << num << endl;
    }


    return 0;
}

10.2 案例2:九九乘法表

cpp 复制代码
#include "iostream"

using namespace std;

int main() {
    system("chcp 65001");
    for (int line = 1; line <= 9; line++)
    {
        //对列进行控制
        for (int col = 1; col <= line; col++)
        {
            cout << col << "x" << line << "=" << col * line << "\t";
        }
        cout << endl;
    }


    return 0;
}
cpp 复制代码
1x1=1
1x2=2   2x2=4
1x3=3   2x3=6   3x3=9
1x4=4   2x4=8   3x4=12  4x4=16
1x5=5   2x5=10  3x5=15  4x5=20  5x5=25
1x6=6   2x6=12  3x6=18  4x6=24  5x6=30  6x6=36
1x7=7   2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49
1x8=8   2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64
1x9=9   2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81

11 循环中断语句

在循环中可以使用:

  • continue关键字,跳过本次循环,进入下一次
  • break关键字,直接结束所在循环
cpp 复制代码
#include "iostream"
#include "random"
using namespace std;

int main() {
    system("chcp 65001");
    for (int i = 0; i <= 20; i++) {
        if (i % 2 == 0) {
            continue;
        }
        cout << i << endl;
    }
    for (int i = 1; true; i++) {
        cout << i << endl;
        if (i == 20) {
            break;
        }
    }
    return 0;
}
相关推荐
看见繁华9 分钟前
GO 教程
开发语言·后端·golang
Yy_Yyyyy_zz12 分钟前
深入理解 Go 的多返回值:语法、编译原理与工程实践
开发语言·后端·golang
AAA.建材批发刘哥14 分钟前
02--C++ 类和对象上篇
开发语言·c++
廋到被风吹走17 分钟前
【Java】【JVM】垃圾回收深度解析:G1/ZGC/Shenandoah原理、日志分析与STW优化
java·开发语言·jvm
xrkhy18 分钟前
Java全栈面试题及答案汇总(3)
java·开发语言·面试
橘颂TA21 分钟前
【Linux】从 “抢资源” 到 “优雅控场”:Linux 互斥锁的原理与 C++ RAII 封装实战(Ⅰ)
linux·运维·服务器·c++·算法
菩提祖师_22 分钟前
量子机器学习在时间序列预测中的应用
开发语言·javascript·爬虫·flutter
刘975322 分钟前
【第22天】22c#今日小结
开发语言·c#
明天好,会的29 分钟前
分形生成实验(三):Rust强类型驱动的后端分步实现与编译时契约
开发语言·人工智能·后端·rust
YanDDDeat33 分钟前
【JVM】类初始化和加载
java·开发语言·jvm·后端