C++跑步入门笔记2- 运算符、流程控制语法

附录:cin获取键盘输入

  • 1.cin与cout对应的用于输入的对象(标准输入对象),通常对应的设备是键盘。
  • 2.cin可以将键盘的一系列字符(即输入)转换为接收信息的变量能够接收的形式。
  • 3.输入可以是字符串、整数、浮点数值,也可以是其他类型。cin对象根据接收值的变量类型,使用方法将键盘输入的字符序列转为所需类型。

使用方法: cin >> value_holder。value_holder为储存输入的内存单元,可以是变量、引用等等。

int main(){
    cout << "请输入一个整数:" << endl;
    int num = 0;
    cin >> num;
    cout << "你输入的数字是:" << num << endl;
    return 0;
}

一、运算符

作用:用于执行代码的运算

运算符类型 作用
算术运算符 用于处理四则运算
赋值运算符 用于将表达式的值赋给变量
比较运算符 用于表达式的比较,并返回一个真值或假值
逻辑运算符 用于根据表达式的值返回真值或假值

1.1 算术运算符

作用:用于处理四则运算
算术运算符包括以下符号:

运算符 术语 示例 结果
+ 正号 +3 3
- 负号 -3 -3
+ 10 + 5 15
- 10 - 5 5
* 10 * 5 50
/ 10 / 5 2
% 取模(取余) 10 % 3 1
++ 前置递增 a=2; b=++a; a=3; b=3;
++ 后置递增 a=2; b=a++; a=3; b=2;
-- 前置递减 a=2; b=--a; a=1; b=1;
-- 后置递减 a=2; b=a--; a=1; b=2;

示例1:

//加减乘除
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:

//取模
int main() {

    int a1 = 10;
    int b1 = 3;
    cout << 10 % 3 << endl;

    int a2 = 10;
    int b2 = 20;
    cout << a2 % b2 << endl;

    int a3 = 10;
    int b3 = 0;
    //cout << a3 % b3 << endl; //取模运算时,除数也不能为0

    //两个小数不可以取模
    double d1 = 3.14;
    double d2 = 1.1;
    //cout << d1 % d2 << endl;

    system("pause");
    return 0;
}

总结:只有整型变量可以进行取模运算

示例3:

//递增
int main() {
    //后置递增
    int a = 10;
    a++; //等价于a = a + 1
    cout << a << endl; // 11

    //前置递增
    int b = 10;
    ++b;
    cout << b << endl; // 11

    //区别
    //前置递增先对变量进行++,再计算表达式
    int a2 = 10;
    int b2 = ++a2 * 10;
    cout << b2 << endl;

    //后置递增先计算表达式,后对变量进行++
    int a3 = 10;
    int b3 = a3++ * 10;
    cout << b3 << endl;

    system("pause");
    return 0;
}

总结:前置递增先对变量进行++,再计算表达式,后置递增相反

1.2 赋值运算符

作用:用于将表达式的值赋给变量
赋值运算符包括以下几个符号:

运算符 术语 示例 结果
= 赋值 a=2; b=3; a=2; b=3;
+= 加等于 a=0; a+=2; a=2;
-= 减等于 a=5; a-=3; a=2;
*= 乘等于 a=2; a*=2; a=4;
/= 除等于 a=4; a/=2; a=2;
%= 模等于 a=3; a%2; a=1;

示例:

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

1.3 比较运算符

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

运算符 术语 示例 结果
== 相等于 4 == 3 0
!= 不等于 4 != 3 1
< 小于 4 < 3 0
> 大于 4 > 3 1
<= 小于等于 4 <= 3 0
>= 大于等于 4 >= 1 1

示例:

int main() {

    int a = 10;
    int b = 20;
    cout << (a == b) << endl; // 0 
    cout << (a != b) << endl; // 1
    cout << (a > b) << endl; // 0
    cout << (a < b) << endl; // 1
    cout << (a >= b) << endl; // 0
    cout << (a <= b) << endl; // 1

    system("pause");
    return 0;
}

注意:C和C++ 语言的比较运算中,“真”用数字“1”来表示, “假”用数字“0”来表示。

1.4 逻辑运算符

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

运算符 术语 示例 结果
! !a 如果a为假,则!a为真; 如果a为真,则!a为假。
&& a && b 如果a和b都为真,则结果为真,否则为假。
|| a || b 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。

示例1:逻辑非

//逻辑运算符  --- 非
int main() {
    int a = 10;
    cout << !a << endl; // 0
    cout << !!a << endl; // 1
    system("pause");
    return 0;
}

总结: 真变假,假变真

示例2:逻辑与

//逻辑运算符  --- 与
int main() {
    int a = 10;
    int b = 10;
    cout << (a && b) << endl;// 1
    a = 10;
    b = 0;
    cout << (a && b) << endl;// 0 
    a = 0;
    b = 0;
    cout << (a && b) << endl;// 0

    system("pause");
    return 0;
}

总结:逻辑运算符总结: 同真为真,其余为假

示例3:逻辑或

//逻辑运算符  --- 或
int main() {

    int a = 10;
    int b = 10;
    cout << (a || b) << endl;// 1

    a = 10;
    b = 0;
    cout << (a || b) << endl;// 1 

    a = 0;
    b = 0;
    cout << (a || b) << endl;// 0

    system("pause");
    return 0;
}

逻辑运算符总结: 同假为假,其余为真

二、程序流程结构

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

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

2.1 选择结构

2.1.1 if语句

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

  • 单行格式if语句
  • 多行格式if语句
  • 多条件的if语句
  1. 单行格式if语句:if(条件){ 条件满足执行的语句 }
    条件判断.png

    示例:
    int main() {
     //选择结构-单行if语句
     //输入一个分数,如果分数大于600分,超过重点大学分数线
     int score = 0;
     cout << "请输入一个分数:" << endl;
     cin >> score;
     cout << "您输入的分数为: " << score << endl;
     //if语句
     //注意事项,在if判断语句后面,不要加分号
     if (score > 600){
         cout << "恭喜你,达到重点大学分数线!!!" << endl;
     }
     system("pause");
     return 0;
    }
    

注意:if条件表达式后不要加分号

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

    clip_image002-1541662519170.png

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

clip_image002-1541662566808.png

示例:

    int main() {
    int score = 0;
    cout << "请输入考试分数:" << endl;
    cin >> score;
    if (score > 90){
        cout << "很优秀" << endl;
    }else if (score > 80){
        cout << "良好" << endl;
    }else if (score > 60){
        cout << "及格" << endl;
    }else{
        cout << "未及格" << endl;
    }

    system("pause");
    return 0;
}

嵌套if语句:在if语句中,可以嵌套使用if语句,达到更精确的条件判断

练习案例: 三只小猪称体重
有三只小猪ABC,请分别输入三只小猪的体重,并且判断哪只小猪最重?

#include<iostream>
using namespace std;

int main() {
    //三只小猪称体重
    int pig1 = 0;
    int pig2 = 0;
    int pig3 = 0;

    cout << "请输入1号小猪的体重" << endl;
    cin >> pig1;
    cout << "请输入2号小猪的体重" << endl;
    cin >> pig2;
    cout << "请输入3号小猪的体重" << endl;
    cin >> pig3;

    cout << "1号小猪的体重" << pig1 << endl;
    cout << "2号小猪的体重" << pig2 << endl;
    cout << "3号小猪的体重" << pig3 << endl;

    if ((pig1 > pig2)&&(pig1 > pig3)) {
        cout << " 1号小猪最重!" << endl;
    }
    else if (pig2 > pig3) {
        cout << " 2号小猪最重!" << endl;
    }
    else {
        cout << " 3号小猪最重!" << endl;
    }

    system("pause");
    return 0;
}

2.1.2 三目运算符

作用: 通过三目运算符实现简单的判断
语法:表达式1 ? 表达式2 :表达式3
解释:
如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果。
示例:

int main() {

    int a = 10;
    int b = 20;
    int c = 0;
    c = a > b ? a : b;
    cout << "c = " << c << endl;
    //C++中三目运算符返回的是变量,可以继续赋值
    (a > b ? a : b) = 100;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "c = " << c << endl;

    system("pause");
    return 0;
}

总结:和if语句比较,三目运算符优点是短小整洁,缺点是如果用嵌套,结构不清晰

2.1.3 switch语句

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

switch(表达式)
{
    case 结果1:执行语句;break;
    case 结果2:执行语句;break;
    ...
    default:执行语句;break;
}

示例:

int main() {
    //请给电影评分 :10 ~ 9 经典   , 8 ~ 7 非常好,6 ~ 5 一般,5分以下 烂片.
    int movieScore = 0;
    cout << "请给这部电影打分" << endl;
    cin >> movieScore;
    switch(movieScore) {
        case 10:
        case 9:
            cout << "经典" << endl;
            break;
        case 8:
        case 7:
            cout << "非常好" << endl;
            break;
        case 6:
        case 5:
            cout << "一般" << endl;
            break;
        default:
            cout << "烂片" << endl;
            break;
    }
    system("pause");
    return 0;
}

注意1:switch语句中表达式类型只能是整型或者字符型
注意2:case里如果没有break,那么程序会一直向下执行
总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间

2.2 循环结构

2.2.1 while循环语句

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

while循环.png

示例:

int main() {
    int num = 0;
    while (num < 10)
    {
        cout << "num = " << num << endl;
        num++;
    }   
    system("pause");
    return 0;
}

注意:在执行循环语句时候,程序必须提供跳出循环的出口,否则出现死循环

while循环练习案例: 猜数字

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

//猜数字
int main(){
    srand((unsigned int)time(NULL));
    int num = rand()%100+1;
    int playNum = 0;
    cout << "请玩家输入一个数" << endl;
    while (1) {
        cin >> playNum;
        if (playNum > num) {
            cout << "大了!" << endl;
        }
        else if (playNum < num) {
            cout << "小了!" << endl;
        }
        else {
            cout << "恭喜你,猜对了!" << endl;
            break;
        }
    }
    system("pause");
    return 0;
}

2.2.2 do...while循环语句

作用: 满足循环条件,执行循环语句
语法: do{ 循环语句 } while(循环条件);
注意:与while的区别在于do...while会先执行一次循环语句,再判断循环条件

do...while.png

示例:

int main() {
    int num = 0;
    do
    {
        cout << num << endl;
        num++;
    } while (num < 10);
    system("pause");
    return 0;
}

总结:与while循环区别在于,do...while先执行一次循环语句,再判断循环条件

练习案例:水仙花数
案例描述:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
例如:1^3 + 5^3+ 3^3 = 153

int main(){
    int num = 100;
    do {
        int ud = 0;   //个位
        int td = 0;   //十位
        int hd = 0;   //百位

        ud = num % 10;
        td = num / 10 % 10;
        hd = num / 100;
        if (ud*ud*ud + td*td*td + hd*hd*hd == num) {
            cout << num << endl;         
        }
        num ++;
    }while(num <1000);
    system("pause");
    return 0;
}

2.2.3 for循环语句

作用: 满足循环条件,执行循环语句
语法:for(起始表达式;条件表达式;末尾循环体) { 循环语句; }

示例:

int main() {
    for (int i = 0; i < 10; i++){
        cout << i << endl;
    }

    system("pause");
    return 0;
}

注意:for循环中的表达式,要用分号进行分隔
总结:while , do...while, for都是开发中常用的循环语句,for循环结构比较清晰,比较常用

2.2.4 嵌套循环

作用: 在循环体中再嵌套一层循环,解决一些实际问题

示例:

int main() {
    //外层循环执行1次,内层循环执行1轮
    for (int i = 0; i < 10; i++){
        for (int j = 0; j < 10; j++){
            cout << "*" << " ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}

练习案例:乘法口诀表

int main(){
    //乘法口诀表
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= i; j++) {
            cout << i << "X" << j << "=" << i * j<< " ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}

2.3 跳转语句

2.3.1 break语句

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

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

2.3.2 continue语句

作用:在【循环语句】中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

注意:continue并没有使整个循环终止,而break会跳出循环

2.3.3 goto语句

作用:可以无条件跳转语句
语法: goto 标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置

示例:

int main() {

    cout << "1" << endl;
    goto FLAG;
    cout << "2" << endl;
    cout << "3" << endl;
    cout << "4" << endl;
    FLAG:
    cout << "5" << endl;
    system("pause");
    return 0;
}

注意:在程序中不建议使用goto语句,以免造成程序流程混乱

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容