
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;
}