C++学习笔记(五)

一、三目运算符

?:

表达式1 ? 值1 : 值2

如果表达式1为真,整个表达式的值为值1(引用)

如果表达式1为假,整个表达式的值为值2(引用)

// 从键盘输入两个数字,输出较大的数
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int data1 = 0;
    int data2 = 0;
    cout << "请输入第一个数:";
    cin >> data1;
    cout << "请输入第二个数:";
    cin >> data2;
    cout << (data1>data2?"data1大":"data2大") << endl;
    return 0;
}

二、运算符的优先级

优先级越小优先级越高

 

 

 三、自增自减运算符

1. 自增自减独立作为一条语句

不管是 i++ ,i-- ,++i ,--i ,如果是独立的一条语句,那么 i++和++i ,i--和--i没有区别

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int i = 3;
    i++;
    cout << "i的值为:" << i << endl; // 4
    ++i;
    cout << "i的值为:" << i << endl; // 5
    i--;
    cout << "i的值为:" << i << endl; // 4
    --i;
    cout << "i的值为:" << i << endl; // 3
    return 0;
}

2. ++,--在右边 先使用 后加减

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int i = 3;
    int j = 0;
    j = i++;
    cout << "j的值为:" << j << endl; // 3
    cout << "i的值为:" << i << endl; // 4
    // 顺序: 1.j=i  2.i=i+1

    j = i--;
    cout << "j的值为:" << j << endl; // 4
    cout << "i的值为:" << i << endl; // 3
    // 顺序: 1.j=i  2.i=i-1
    return 0;
}

3. ++,--在左边 先加减 后使用

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int i = 3;
    int j = 0;
    j = ++i;
    cout << "j的值为:" << j << endl; // 4
    cout << "i的值为:" << i << endl; // 4
    // 顺序: 1.i=i+1  2.j=i

    j = --i;
    cout << "j的值为:" << j << endl; // 3
    cout << "i的值为:" << i << endl; // 3
    // 顺序: 1.i=i-1  2.j=i
    return 0;
}

四、选择控制语句 if

1. if 语句

格式

if(表达式)
{
    语句1;
    语句2;
    语句3;
}

应用场景:只关心条件成立的结果

案例:判断一个数字能被3整除(不关系不能被3整除的情况)

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int num = 0;
    cout << "请输入一个数字:";
    cin >> num;
    if(num%3==0)
    {
        cout << num << "可以被3整除" << endl;
    }
    return 0;
}

2. if ... else ... 语句

格式

if(表达式)
{
    语句1;
}
else
{
    语句2;
}

如果表达式为真,执行语句1,否则执行语句2

应用场景:如果项目有两种结果,不会同时出现,就选择该格式

案例:求一个int类型数据除以2的余数

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int num = 0;
    cout << "请输入一个数字:";
    cin >> num;
    if(num%2==0)
    {
        cout << num << "除以2的余数为0" << endl;
    }
    else
    {
        cout << num << "除以2的余数为1" << endl;
    }
    return 0;
}

3. if ... else if ... else 语句

格式

if(表达式1)
{
    语句1;
}
else if(表达式2)
{
    语句2;
}
else if(表达式3)
{
    语句3;
}
. . . . . .
else
{
    语句n;
}

如果表达式1为真,执行语句1,其他条件不会再判断。只有当表达式1为假时,才会去判断表达式2的真假。

如果表达式2为真,执行语句2,其他条件不会再判断。只有当表达式2为假时,才会去判断表达式3的真假。(以此类推)

只有当所有表达式为假时,才会执行else中的语句n

应用场景:如果项目有多个结果,但是指挥出现其中之一,选择该格式

案例:求一个int类型数据除以3的余数

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int num = 0;
    cout << "请输入一个数字:";
    cin >> num;
    if(num%3==0)
    {
        cout << num << "除以3的余数为0" << endl;
    }
    else if(num%3==1)
    {
        cout << num << "除以3的余数为1" << endl;
    }
    else
    {
        cout << num << "除以3的余数为2" << endl;
    }
    return 0;
}

五、选择控制语句 switch

格式

switch(表达式) // 表达式只能是字符型(char)或整型(short int   int   long int)
{
    case 常量表达式1:
        语句1;
        break;
    case 常量表达式2:
        语句2;
        break;
    default:
        语句3;
        break;
}

将表达式结果与case后的常量表达式的值一一对比,相等就从当前case语句处进入执行,直到遇到break跳出switch语句,如果没有break语句,会接着执行后面的代码(不会再与后面case的常量表达式的值进行对比,直接执行)

表达式结果与所有case后的常量表达式的值都不想等,如果有default,会执行default下的语句

案例:键盘输入1-7的数值,判断是星期几

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int date = 0;
    cout << "请输入一个1~7的数字:";
    cin >> date;
    if (date<1 || date>7)
    {
        cout << "输入的数字无效,请输入1~7的数字" << endl;
        return 0;
    }
    switch(date)
    {
    case 1:
        cout << "星期一" << endl;
        break;
    case 2:
        cout << "星期二" << endl;
        break;
    case 3:
        cout << "星期三" << endl;
        break;
    case 4:
        cout << "星期四" << endl;
        break;
    case 5:
        cout << "星期五" << endl;
        break;
    case 6:
        cout << "星期六" << endl;
        break;
    case 7:
        cout << "星期日" << endl;
        break;
    }
    return 0;
}

六、循环控制语句 for

格式

for(初始化语句;循环条件;步进语句)
{
    循环体;
}

初始化语句:只会在进入for循环前执行一次初始化动作

循环条件:每次循环都会执行,只有当循环条件为真时,才会进入循环体

步进语句:每次循环体执行完成后,会自动执行步进语句

案例:求1-100的和

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int num = 0;
    for(int i=1;i<=100;i++)
    {
        num += i;
    }
    cout << "1-100的和为:" << num << endl; // 5050
    return 0;
}

for 循环中的break,continue

break跳出当前循环

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int num = 0;
    for(int i=1;i<=100;i++)
    {
        if(i==51)
        {
            break;
        }
        num += i;
    }
    cout << "和为:" << num << endl; // 1275
    // 循环为求1-100的和,但是当i=51时,break中断循环,所以实际是求的1-50的和
    return 0;
}

continue跳过当前循环

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int num = 0;
    for(int i=1;i<=100;i++)
    {
        if(i==51)
        {
            continue;
        }
        num += i;
    }
    cout << "和为:" << num << endl; // 4999
    // 循环为求1-100的和,但是当i=51时,continue跳过本次循环,导致后面的num += i没有执行,所以所求的1-100的和中少计算了一个51的值
    return 0;
}

for 循环的嵌套

案例:打印输出九九乘法表

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    for(int i=1;i<10;i++)
    {
        for(int j=1;j<=i;j++)
        {
            cout << j << '*' << i << '=' << i*j;
            cout << '\t'; // 在两个算式之间添加一个制表符,使输出更加美观
        }
        cout << endl;
    }
}

七、循环控制语句 while

格式

// 外部实现初始化
while(循环条件)
{
    循环语句;
    // 内部实现步进语句
}

案例:求1-100的和

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int i = 1;
    int num = 0;
    while(i<=100)
    {
        num += i;
        i++;
    }
    cout << "1-100的和为:" << num << endl;
}

while 循环中的break,continue

break跳出当前循环

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int i =1;
    int num = 0;
    while(i<=100)
    {
        if(i==51)
        {
            break;
        }
        num += i;
        i++;
    }
    cout << "和为:" << num << endl; // 1275
    // 循环为求1-100的和,但是当i=51时,break中断循环,所以实际是求的1-50的和
    return 0;
}

continue跳过当前循环

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int i = 1;
    int num = 0;
    while(i<=100)
    {
        if(i==51)
        {
            i++; // continue会跳过当前循环,后面的i++不会执行,当i=51时,如果不加此语句会造成死循环
            continue;
        }
        num += i;
        i++;
    }
    cout << "和为:" << num << endl; // 4999
    // 循环为求1-100的和,但是当i=51时,continue跳过本次循环,导致后面的num += i没有执行,所以所求的1-100的和中少计算了一个51的值
    return 0;
}

while 循环的嵌套

案例:打印输出九九乘法表

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int i = 1;
    while(i<10)
    {
        int j = 1;
        while(j<=i)
        {
            cout << j << '*' << i << '=' << i*j;
            cout << '\t'; // 在两个算式之间添加一个制表符,使输出更加美观
            j++;
        }
        i++;
        cout << endl;
    }
}

do ... while 格式

格式

do
{
    语句1;
    语句2;
    语句3;
}while(条件);

do-while 循环和 while 循环之间的区别:do-while 是一个后测试循环,这意味着在循环结束时,也就是在每次迭代完成后,才测试其表达式。因此,即使测试表达式在开始时为 false,do-while 也至少要执行一次迭代。

while:

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int i = 1;
    while(i<0)
    {
        cout << "循环体已执行" << endl;
    }
    // 循环体一次都没有执行
    return 0;
}

do ... while 

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int i = 1;
    do
    {
        cout << "循环体已执行" << endl;
    }while(i<0);
    // 循环体执行一次
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不懂编程的大学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值