文章目录

  • 前言
  • 三、运算符
    • 1. 算术运算符-加减乘除运算
    • 2. 算术运算符-取模运算
    • 3.算术运算符-递增递减
    • 4.赋值运算符
    • 5.比较运算符
    • 6.逻辑运算符
      • 示例1:逻辑非-运算符:!
      • 示例2:逻辑与-运算符:&&
      • 示例3:逻辑或-运算符:||
  • 四、程序流程结构
    • 1.选择结构
      • 1.1 if语句
        • 单行格式if语句: ==if(条件){ 条件满足执行的语句 }==
        • 多行格式if语句: ==if(条件){ 条件满足执行的语句 }else{ 条件不满足执行的语句 }==;
        • 多条件的if语句: ==if(条件){ 条件1满足执行的语句 }else if{ 条件2满足执行的语句 }… else{ 都不满足执行的语句 }==;
        • 嵌套if语句: ==在if语句中,可以嵌套使用if语句,达到更精确的要求==;
        • 练习案例:三只小猪称体重
      • 1.2 三目运算符
      • 1.3 switch语句
    • 2.循环结构
      • 2.1 while循环语句
      • while循环练习案例:猜数字
      • 2.2 do…while循环语句
      • 案例练习:水仙花数
      • 2.3 for循环语句
      • 练习案例:敲桌子
      • 2.4 嵌套循环
      • 练习案例 : 乘法口诀表
    • 3、跳转语句
      • 3.1、 break语句
      • 3.2、continue语句
      • 3.3、goto语句
  • 总结

前言

续前节C++学习记录1


三、运算符

  • 作用:用于执行代码的运算
  • 主要运算符有

1. 算术运算符-加减乘除运算

  • 作用:用于处理四则运算

  • 算术运算符包括以下符号:

           

  • 注:两个整数相除 ,结果依然是整数,将小数部分去除

#includeusing namespace std;int main() {// 加减乘除int a1 = 10;int b1 = 3;cout << a1 + b1 << endl;cout << a1 - b1 << endl;cout << a1 * b1 << endl;cout << a1 / b1 << endl;// 两个整数相除结果依然是整数,将小数部分去除int a2 = 10;int b2 = 20;cout << a2 / b2 << endl;int a3 = 10;int b3 = 0;//cout << a3 / b3 << endl; //错误!两个数相除,除数不可以为0//两个小数可以相除double d1 = 0.5;double d2 = 0.25;cout << d1 / d2 << endl;//运算的结果也可以是小数system("pause");return 0;}
  • 总结: 两个数相除,除数不可以为0

       

2. 算术运算符-取模运算

  • 取模运算符:%

#includeusing namespace std;int main() {int a1 = 10;int b1 = 3;cout << a1 % b1 << endl;int a2 = 10;int b2 = 20;cout << a2 % b2 << endl;int a3 = 10;int b3 = 0;// 两个数相除 除数不可以为0 所以也做不了取模运算//cout << a3 % b3 << endl; // 错误// 两个小数是不可以做取模运算的double d1 = 3.14;double d2 = 1.1;//cout << d1 % d2 << endl; 错误system("pause");return 0;}

3.算术运算符-递增递减

运算符术语示例结果
++前置递增a2 = 10;b2 = ++a2 * 10;a2 = 11;b2 = 110
++后置递增a2 = 10;b2 = a2++ * 10;a2 = 11;b2 = 100
  • 前置递增和后置递增的区别:
  • 前置递增 先让变量+1 然后进行表达式运算
  • 后置递增 先进行表达式运算,后让变量+1
  • 前置递减和后置递减的区别类似于前置递增和后置递增

#includeusing namespace std;int main() {//一、递增//1、前置递增int a = 10;++a; //让变量+1cout << "a = " << a << endl;//2、后置递增int b = 10;b++; //让变量+1cout << "b = " << b << endl;//3、前置和后置的区别// 前置递增先让变量+1然后进行表达式运算int a2 = 10;int b2 = ++a2 * 10;cout << "a2 = " << a2 << endl;cout << "b2 = " << b2 << endl;// 后置递增先进行表达式运算,后让变量+1int a3 = 10;int b3 = a3++ * 10;cout << "a3 = " << a3 << endl;cout << "b3 = " << b3 << endl;//二、递减//1、前置递减int c = 10;--c; //让变量-1cout << "a = " << a << endl;//2、后置递减int d = 10;d--; //让变量-1cout << "d = " << d << endl;//3、前置和后置的区别// 前置递减先让变量-1然后进行表达式运算int c2 = 10;int d2 = --c2 * 10;cout << "c2 = " << c2 << endl;cout << "d2 = " << d2 << endl;// 后置递减先进行表达式运算,后让变量-1int c3 = 10;int d3 = c3-- * 10;cout << "c3 = " << c3 << endl;cout << "d3 = " << d3 << endl;system("pause");return 0;}

4.赋值运算符

  • 作用: 用于将表达式的值赋给变量
  • 赋值运算符包括以下几个符号:
#includeusing namespace std;int main() {//赋值运算// =int a = 10;a = 100;cout << "a = " << a << endl;// +=a = 10;a += 2; // a = a + 2;cout << "a = " << a << endl;// -=a = 10;a -= 2; // a = a - 2;cout << "a = " << a << endl;// *=a = 10;a *= 2; // a = a * 2;cout << "a = " << a << endl;//*=a = 10;a /= 2; // a = a / 2;cout << "a = " << a << endl;// %=a = 10;a %= 2; // a = a % 2;cout << "a = " << a << endl;system("pause");return 0;}
  • 运行结果:

5.比较运算符

  • 作用:用于表达式的比较,并返回一个真值或假值
  • 比较运算符有以下符号

#includeusing namespace std;int main() {//比较运算符// ==int a = 10;int b = 20;cout << (a == b) << endl;// !=cout << (a != b) << endl;// >cout << (a > b) << endl;// <cout << (a < b) << endl;// >=cout << (a >= b) << endl;// <=cout << (a <= b) << endl;system("pause");return 0;}
  • 运行结果:

6.逻辑运算符

  • 作用: 用于根据表达式的值返回真值或假值
  • 逻辑运算符有以下符号:

示例1:逻辑非-运算符:!

#includeusing namespace std;int main() {//逻辑运算符非!int a = 10;// 在C++中除了0 都为真cout << !a << endl;cout << !!a << endl;system("pause");return 0;}
  • 总结: 真变假,假变真
           

示例2:逻辑与-运算符:&&

#includeusing namespace std;int main() {//一、逻辑运算符非!int a = 10;// 在C++中除了0 都为真cout << !a << endl;cout << !!a << endl;//二、逻辑运算符与&&int b = 10;cout << "逻辑运算符“与”输出:" << endl;cout << (a && b) << endl;a = 0;b = 10;cout << (a && b) << endl;a = 0;b = 0;cout << (a && b) << endl;// 同真为真,其余为假system("pause");return 0;}
  • 逻辑与总结:同真为真,其余为假

示例3:逻辑或-运算符:||

#includeusing namespace std;int main() {int a = 10;int b = 10;cout << (a || b) << endl;a = 0;b = 10;cout << (a || b) << endl;a = 0;b = 0;cout << (a || b) << endl;//逻辑或: 同假为假,其余为真system("pause");return 0;}
  • 逻辑或总结:同假为假,其余为真

       
       

四、程序流程结构


C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构

  • 顺序结构:程序安顺序执行,不发生跳转
  • 选择结构:依据条件是否满足,有选择的执行跳转
  • 循环结构:依据条件是否满足,循环多次执行某段代码

1.选择结构

1.1 if语句

作用:执行满足条件的语句
if语句的三种形式

  • 单行格式if语句
  • 多行格式if语句
  • 多条件的if语句

单行格式if语句: if(条件){ 条件满足执行的语句 }

#includeusing namespace std;int main() {// 选择结构单行if语句// 用户输入分数,如果分数大于600,视为考上一本大学,在屏幕上输出//1、用户输入分数int score = 0;cout << "请输入一个分数: " << endl;cin >> score;//2、打印用户输入的分数cout << "您输入的分数为:" << score << endl;//3、判断分数是否大于600,如果大于,那么输出//注意事项:if条件后面不要加分号if (score > 600){cout << "恭喜您考上了一本大学" << endl;}system("pause");return 0;}
  • 注意:if条件表达式后不要加分号

多行格式if语句: if(条件){ 条件满足执行的语句 }else{ 条件不满足执行的语句 }

#includeusing namespace std;int main() {// 选择结构-多行if语句// 用户输入分数,如果分数大于600,视为考上一本大学,在屏幕上输出,// 如果未考上一本大学,打印未考上一本大学//1、输入考试分数int score = 0;cout << "请输入一个考试分数: " << endl;cin >> score;//2、提示用户输入的分数cout << "您输入的分数为:" << score << endl;//3、判断如果分数大于600,打印考试一本,否则打印未考上一本//注意事项:if条件后面不要加分号if (score > 600)// 大于600分执行下面大括号中的内容{cout << "恭喜您考上了一本大学!" << endl;}else//不大于600分,执行else后大括号里面的内容{cout << "未考上一本大学" << endl;}system("pause");return 0;}

多条件的if语句: if(条件){ 条件1满足执行的语句 }else if{ 条件2满足执行的语句 }… else{ 都不满足执行的语句 }

#includeusing namespace std;int main() {// 选择结构-多条件if语句// 用户输入分数,如果分数大于600,视为考上一本大学,在屏幕上输出// 大于500分,视为考上二本大学,屏幕输出// 大于400分,视为考上三本大学,屏幕输出// 小于等于400分,视为未考上本科,屏幕上输出//1、输入考试分数int score = 0;cout << "请输入一个考试分数: " << endl;cin >> score;//2、提示用户输入的分数cout << "您输入的分数为:" << score << endl;//3、判断// 如果大于600,考上一本// 如果大于500,考上二本// 如果大于400,考上三本// 前三个都没有满足,未考上本科if (score > 600){cout << "恭喜您考上了一本大学!" << endl;}else if(score >500) //第二个判断{cout << "恭喜您考上了二本大学!" << endl;}else if (score > 400) //第二个判断{cout << "恭喜您考上了三本大学!" << endl;}else{cout << "未考上本科大学,请再接再厉" << endl;}system("pause");return 0;}

嵌套if语句: 在if语句中,可以嵌套使用if语句,达到更精确的要求

案例需求:

  • 提示用户输入-个高考考试分数,根据分数做如下判断;
  • 分数如果大于600分视为考上一本,大于500分考上二本,大于400考上三本,其余视为未考上本科;
  • 在一本分数中,如果大于700分,考入北大,大于650分,考入清华,大于600考入人大。
#includeusing namespace std;int main() {/* - 提示用户输入-个高考考试分数,根据分数做如下判断; - 分数如果大于600分视为考上一本,大于500分考上二本,大于400考上三本,其余视为未考上本科; - 在一本分数中,如果大于700分,考入北大,大于650分,考入清华,大于600考入人大。*/// 1、提示输入高考分数int score = 0;cout << "请输入一个高考分数" << endl;cin >> score;// 2、显示高考分数cout << "您输入的高考分数为; " << score << endl;// 3、判断// 如果大于600, 一本// 大于700北大// 大于650清华// 其余 人大 // 如果大于500, 二本// 如果大于400, 三本// 其余情况, 未考上本科if (score > 600){cout << "恭喜您考上了一本!" << endl;if (score > 700){cout << "您能考入北京大学" << endl;}if (score > 650){cout << "您能考入清华大学" << endl;}else{cout << "您能考入人民大学" << endl;}}else if (score > 500){cout << "恭喜您考上了二本!" << endl;}else if (score > 400){cout << "恭喜您考上了三本!" << endl;}else{cout << "很遗憾,您没有考上本科,请再接再厉。" << endl;}system("pause");return 0;}

练习案例:三只小猪称体重

有三只小猪ABC,请分别输入三只小猪的体重,并且判断哪只小猪最重?

#includeusing namespace std;int main() {// 三只小猪称体重,判断哪只最重//1、创建三只小猪的体重变量int num1 = 0;int num2 = 0;int num3 = 0;//2、让用户输入三只小猪的重量cout << "请输入小猪A的体重:" << endl;cin >> num1;cout << "请输入小猪B的体重:" << endl;cin >> num2;cout << "请输入小猪C的体重:" << endl;cin >> num3;cout << "小猪A的体重为:" << num1 << endl;cout << "小猪B的体重为:" << num2 << endl;cout << "小猪C的体重为:" << num3 << endl;//3、判断哪只最重// 先判断A和B重量if (num1 > num2) //A比B重{if (num1 > num3) //A比C重{cout << "小猪A最重" << endl;}else //C比A重{cout << "小猪C最重" << endl;}}else //B比A重{if (num2 > num3) //B比C重{cout << "小猪B最重" << endl;}else //C比B重{cout << "小猪C最重" << endl;}}system("pause");return 0;}

1.2 三目运算符

作用: 通过三目运算符实现简单的判断
语法: 表达式1? 表达式2:表达式3
解释:

  • 如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
  • 如果表达式1的值为假,执行表达式3,并返回表达式3的结果。

#includeusing namespace std;int main() {//三目运算符//创建三个变量a b c//将a和b做比较,将变量大的值赋值给变量cint a = 10;int b = 20;int c = 0;c = (a > b " />: b);cout << "c = " << c << endl;//在C++中三目运算符返回的是变量,可以继续赋值(a < b ? a : b) = 100;cout << "a = " << a << endl;cout << "b = " << b << endl;system("pause");return 0;}

1.3 switch语句

作用:执行多条件语句
语法:

#includeusing namespace std;int main() {//switch语句//给电影打分// 10-9分经典//8-7分非常好//6-5分一般// 5分以下 烂片//1、提示用户给电影评分cout << "请给电影进行打分" << endl;//2、用户开始进行打分int score = 0;cin >> score;cout << "您打的分数为:" << score << endl;// 3、根据用户输入的分数来提示用户最后的结果switch (score){case 10:cout << "您认为是经典电影" << endl;break; // 退出当前分支case 9:cout << "您认为是经典电影" << endl;break;case 8:cout << "您认为电影非常好" << endl;break; case 7:cout << "您认为电影非常好" << endl;break;case 6:cout << "您认为电影一般" << endl;break; case 5:cout << "您认为电影一般" << endl;break;default :cout << "您认为这是烂片" << endl;break;}//if 和 switch区别?//switch 缺点,判断时候只能是整型或者字符型,不可以是一个区间//switch 优点,结构清晰,执行效率高system("pause");return 0;}
  • 注意1:switch语句中的表达式类型只能是整型或者字符型
  • 注意2:case里如果没有break,那么程序会一直向下执行
  • 总结:与if语句比,对于多条件判断是,switch的结构清晰,执行效率高,缺点是switch不可以判断区间

2.循环结构

2.1 while循环语句

**作用:**满足循环条件,执行循环语句
**语法:**while (循环条件) { 循环语句 }
解释:== 只要循环条件为真,就执行循环语句 ==

#includeusing namespace std;int main() {//while循环//在屏幕中打印0-9 这10个数字int num = 0;//while()中填入循环条件//注意事项:在写循环一定要避免死循环的出现while (num < 10){cout << num << endl;num++;}system("pause");return 0;}
  • 注意:在执行循环语句时候,程序必须提供跳出循环的出口,否则出现死循环

while循环练习案例:猜数字

案例描述:系统随机生成一个1到100的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并退出游戏。

#includeusing namespace std;//time系统头文件包含#includeint main() {// 添加随机数种子//1、系统生成随机数种子作用:利用当前系统时间生成随机数,防止每次随机数都一样srand((unsigned int)time(NULL)); //需要写一个头文件int num = rand() % 100 + 1;//rand()%100 + 1 生成 0+1 ~99+1 的随机数//cout << num << endl;//2、玩家进行猜测int val = 0; //玩家输入数据while (1){cin >> val;//3、判断玩家的猜测//猜错提示猜的结果过大或者过小重新返回第2步if (val > num){cout << "猜测过大" << endl;}else if (val < num){cout << "猜测过小" << endl;}else{cout << "恭喜您猜对了" << endl;//猜对退出游戏break;//break,可以利用关键字来退出当前循环}}system("pause");return 0;}

2.2 do…while循环语句

  • 作用:满足循环语句,执行循环语句
  • 语法:do{循环语句} while(循环条件)
  • 注意:与while的区别在于do…while会先执行一次循环语句,再判断循环条件
#includeusing namespace std;int main() {//do...while语句//在屏幕中输入0到9这10个数int num = 0;do{cout << num << endl;num++;} while (num < 10);//do...while和while循环区别在于:do...while先执行一次循环结构,再判断循环条件system("pause");return 0;}

案例练习:水仙花数

  • 案例描述:水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身
  • 例如:1^3 + 5^3 + 3^3= 153
  • 请利用do…while语句,求出所有3位数中的水仙花数
#includeusing namespace std;#includeint main() {//1、先打印所有三位数字int num = 100;do{//2、从所有三位数中知道水仙花数int a = 0; //个位int b = 0; //十位int c = 0; //百位a = num % 10; //获取数字的个位b = num / 10 % 10; //获取数字的十位c = num / 100; //获取数字的百位if (a*a*a + b*b*b + c*c*c == num )//如果是水仙花数,才打印{cout << num << endl;}num++;} while (num < 1000);system("pause");return 0;}

2.3 for循环语句

  • 作用:满足循环条件,执行循环语句
  • 语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}
#includeusing namespace std;#includeint main() {//for循环//从数字0 打印到 数字9for (int i = 0; i<10; i++){cout << i << endl;}//可以看成是下面代码的简化版//15行到25行可以看做是上面四行代码的具体解释/*int i = 0;for (; ; ){if (i >= 10){break;}cout << i << endl;i++;}*/system("pause");return 0;}

练习案例:敲桌子

案例描述:从1开始数到数字100,如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,
我们打印敲桌子,其余数字直接打印输出。

#includeusing namespace std;#includeint main() {//敲桌子案例//1、先输出1~100数字for (int i = 1; i <= 100; i++){//2、从100个数字中找到特殊数字,打印“敲桌子”//如果是7的倍数、个位有7、或者十位是7,打印敲桌子if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7)//如果是特殊数字,打印敲桌子{cout << "敲桌子" << endl;}else //如果不是特殊数字,才打印数字{cout << i << endl;}}system("pause");return 0;}

2.4 嵌套循环

#includeusing namespace std;#includeint main() {//利用嵌套循环实现星图for (int i = 0; i < 10; i++)//外层循环{// 内层循环//打印一行星图for (int j = 0; j < 10; j++){cout << "* ";}cout << endl;}system("pause");return 0;}

练习案例 : 乘法口诀表



编程的思路:


#includeusing namespace std;#includeint main() {//乘法口诀表//打印行数for (int i = 1; i <= 9; i++){//cout << i << endl;for (int j = 1; j <= i; j++){cout << j << "*" << i << "=" << j*i << "";}cout << endl;}system("pause");return 0;}

3、跳转语句

3.1、 break语句

作用:用于跳出选择结构或者循环结构
break使用的时机:

  • 出现在switch条件语句中,作用是终止case并跳出switch
  • 出现在循环语句中,作用是跳出当前的循环语句
  • 出现在嵌套循环中,跳出最近的内层循环语句


#includeusing namespace std;#includeint main() {//break的使用时机//1、出现在switch语句中//cout << "请选择副本难度" << endl;//cout << "1、普通" << endl;//cout << "2、中等" << endl;//cout << "3、困难" << endl;//int select = 0; //创建选择结果的变量//cin >> select;//switch (select)//{//case 1://cout << "您选择的是普通难度" << endl;//break;//退出switch语句//case 2://cout << "您选择的是中等难度" << endl;//break;//case 3://cout << "您选择的是困难难度" << endl;//break;//default://break;//}//2、出现在循环语句中//for (int i = 0; i < 10; i++)//{////如果i等于5,退出循环,不再打印//if (i == 5)//{//break;//退出循环//}//cout << i << endl;//}//3、出现在嵌套循环语句中for (int i = 0; i < 10; i++){for (int j = 0; j < 10; j++){if (j == 5){break; //退出内层循环}cout << "*";}cout << endl;}system("pause");return 0;}

3.2、continue语句

作用:在循环语句中,跳过本次循环中余下未执行的语句,继续执行下依稀循环


#includeusing namespace std;#includeint main() {//continue语句for (int i = 0; i <= 100; i++){//如果是奇数输出,偶数不输出if (i % 2 == 0) //0 2 4 6...{continue; //可以筛选条件,执行到此就不再向下执行,执行下次循环//break会退出循环,而continue不会}cout << i << endl;}system("pause");return 0;}

3.3、goto语句

作用:可以无条件跳转语句

语法:goto标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置

#includeusing namespace std;#includeint main() {//goto语句cout << "1、xxxx" << endl;cout << "2、xxxx" << endl;goto FLAG;cout << "3、xxxx" << endl;cout << "4、xxxx" << endl;FLAG:cout << "5、xxxx" << endl;system("pause");return 0;}

总结

时隔一个月终于把C++学习2写完了,中间帮老师写东西是真的难,尤其还有毕业一堆事,回到家里学习状态也不是很好。

  • 注:markdown中图片居中加 #pic_center