C++笔记

B站课程:C++课程导学_哔哩哔哩_bilibili

一、代码、编译和程序

二、Windows环境搭建

下载地址:Download CLion: A Smart Cross-Platform IDE for C and C++ (jetbrains.com)

可以使用激活助手,激活至2099年

激活工具:

https://lty9211.lanzout.com/izs4e29jlada

三、第一个C++程序

#include "iostream"
using namespace std;


int main()
{
    cout <<"I love C++" << endl;
    return 0;
}

四、C++代码的基础结构

五、单工程多main函数设置

六、手动编译代码并运行

https://sourceforge.net/projects/mingw

看到下面这个就代表已经安装好了:

g++ -v

下面是把.cpp文件变为.exe文件:

手动编译代码并执行 (yuque.com)

七、【扩展】VScode环境配置

Visual Studio Code 配置 (yuque.com)

八、cout打印输出

#include "iostream"
using namespace std;


int main()
{
    cout <<"I love C++" << endl;
    cout << 10 << endl;
    cout <<"I am " << 10 << " years old and you?" << endl;
    return 0;
}

输出:

I love C++
10
I am 10 years old and you?
#include "iostream"
using namespace std;


int main()
{
    cout << "If you want to learn IT,come to itheima." << endl;
    cout << "If you want to " << "learn IT," << "come to itheima." << endl;
    return 0;
}

输出:

If you want to learn IT,come to itheima.
If you want to learn IT,come to itheima.

九、代码注释

#include "iostream"
using namespace std;


int main()
{
    cout << "If you want to learn IT,come to itheima." << endl; // 这行代码向屏幕中显示信息


    /*  下面是多行注释
     * 前面的*号是软件自动添加的
     * 可以任意换行
     * */
    cout << "If you want to " << "learn IT," << "come to itheima." << endl;
    return 0;
}

十、CLion软件的设置

1、汉化

2、更改字体字号

3、更改软件主题

4、快捷键

十一、字面常量——反义词变量

#include "iostream"
using namespace std;


int main() {
    cout << "Hello, World!" << endl;
    //整型、实型、字符、字符串
    20240912; // 整型:整数;只要不报错,写法就没有问题
    180.5; // 实型:小数
    'A'; // 字符:''进行包围,单个字符
    'cd'; //只能提供一个字符,不能是0个字符或更多
    "hello word!"; //标准字符串,""进行包围,任意个字符
    ""; //空字符串,里面是0个字符
    "c"; //标准字符串


    //通过cout将这些内容全部打印到控制台
    cout << 20240912 << endl;
    cout << 180.5 << endl;
    cout << 'A' << endl;
    cout << 'cd' << endl;
    cout << "hello word!" << endl;
    cout << "" << endl;
    cout << "c" << endl;
    return 0;
}

输出:

Hello, World!
20240912
180.5
A
25444
hello word!

c

十二、标识符和关键字——取名字

十三、符号常量

#include "iostream"
//#include "windows.h"
using namespace std;
#define FAT_BMI 28
#define J2C_RATE 4.19 //焦耳转卡路里的比率
// 符号常量:#define 名称(标识符) 常量值
//符号常量定义在代码的头部
//符号常量的定义不需要分号结尾


int main() {
    //SetConsoleOutputCP(CP_UTF8);
    system("chcp 65001");
    // 使用符号常量的语句,就是正常代码了,要写在main函数中
    // 如何使用:使用符号常量 就直接用它的名字即可
    cout << FAT_BMI << endl;
    cout << "焦耳转卡路里需要除以:" << J2C_RATE << endl;
    /*中文乱码解决:
     * 1)引入windows.h库。#include "windows.h";SetConsoleOutputCP(CP_UTF8);
     * 2)system("chcp 65001");*/
    return 0;
}

javacaoyu/黑马程序员C++学习 – 码云 – 开源中国 (gitee.com)

#include "iostream"
#include "windows.h"
using namespace std;
#define NAME_ZHOU "周杰伦"
#define AGE 21
#define HEIGHT 180.5
#define WEIGTH 56


int main() {
    SetConsoleOutputCP(CP_UTF8); //中文乱码解决
    cout << "我是" << NAME_ZHOU << ",今年" << AGE << "岁" << endl;
    cout << "身高" << HEIGHT << "cm,体重" << WEIGTH << "KG" << endl;
    return 0;
}

输出:

我是周杰伦,今年21岁
身高180.5cm,体重56KG

十四、变量的基础使用

#include "iostream"
#include "windows.h"
using namespace std;


int main()
{
    SetConsoleOutputCP(CP_UTF8);
    int age; //变量的声明(定义),变量类型 变量名
    float height; //实型变量声明
    char gender; //字符型变量声明
    string name; //字符串型变量声明


    age = 21; //变量的赋值,变量名 = 变量值
    height =180.5;
    gender = 'm';
    name = "小明";


    cout << name << "的年纪:"<< age << endl;
    cout << name << "的性别:"<< gender << endl;
    cout << name << "的身高:"<< height << endl;
    return 0;
}

输出:

小明的年纪:21
小明的性别:m
小明的身高:180.5
#include "iostream"
#include "windows.h"
using namespace std;


int main()
{
    SetConsoleOutputCP(CP_UTF8);
    string name = "周杰伦";
    int age = 21;
    float height =180.5;
    int weight = 56;
    cout << "我是" << name << ",今年" << age << "岁。" << endl;
    cout << "身高" << height << "cm,体重" << weight << "KG。" << endl;
    return 0;
}

输出:

我是周杰伦,今年21岁。
身高180.5cm,体重56KG。

十五、变量的特征

#include "iostream"
#include "windows.h"
using namespace std;


int main()
{
    SetConsoleOutputCP(CP_UTF8);
    int BMI = 30; //声明并赋值
    cout << "小明的BMI是:" << BMI << endl;


    BMI = 26; // 再次赋值
    cout << "经过一个月后,小明的BMI是:" << BMI << endl;


    //可以进行数学运算,+、-、*、/
    BMI = BMI -2;
    cout << "又经过一个月,小明的BMI是:" << BMI << endl;
    return 0;
}

输出:

小明的BMI是:30
经过一个月后,小明的BMI是:26
又经过一个月,小明的BMI是:24
#include "iostream"
#include "windows.h"
using namespace std;


int main()
{
    SetConsoleOutputCP(CP_UTF8);
    int money = 50;
    cout << "小明余额:" << money << "元。" << endl;
    money = money - 5;
    cout << "购买冰淇淋花费5元,余额剩余:" << money << "元。" << endl;
    money = money + 10;
    cout << "转卖冰淇淋得到10元,余额剩余:" << money << "元。" << endl;
    money = money - 2;
    cout << "购买彩票花费2元,余额剩余:" << money << "元。" << endl;
    money = money * 2;
    cout << "彩票中奖余额翻倍,余额剩余:" << money << "元。" << endl;
    return 0;
}

输出:

小明余额:50元。
购买冰淇淋花费5元,余额剩余:45元。
转卖冰淇淋得到10元,余额剩余:55元。
购买彩票花费2元,余额剩余:53元。
彩票中奖余额翻倍,余额剩余:106元。

十六、变量的快速定义

#include "iostream"
#include "windows.h"
using namespace std;


int main() {
    SetConsoleOutputCP(CP_UTF8); //中文乱码解决
    int a = 10,b = 20,c = 30; //一次性快捷声明
    cout << a << b << c << endl;
    return 0;
}

输出:

102030

十七、标识符的命名规范

十八、标识符的限制规则

十九、数据类型-整型

#include "iostream"
#include "windows.h"
using namespace std;


int main() {
    SetConsoleOutputCP(CP_UTF8); //中文乱码解决
    short a = 21;
    int b = 10;
    long c = 20;
    long long d = 30;
    cout << a << b << c << d << endl;


    //sizeof函数,用法:sizeof(数据),会告知得到数据所占用的字节
    cout << "short变量,占用字节:" << sizeof(a) << endl;
    cout << "int变量,占用字节:" << sizeof(b) << endl;
    cout << "long变量,占用字节:" << sizeof(c) << endl;
    cout << "long long变量,占用字节:" << sizeof(d) << endl;
    return 0;
}

输出:

21102030
short变量,占用字节:2
int变量,占用字节:4
long变量,占用字节:4
long long变量,占用字节:8
#include "iostream"
#include "windows.h"
using namespace std;


int main() {
    SetConsoleOutputCP(CP_UTF8); //中文乱码解决
    int a = 20;
    float b = 20.5;
    char c;
    string hello;


    //sizeof函数,用法:sizeof(数据),会告知得到数据所占用的字节
    cout << "a,占用字节:" << sizeof(a) << endl;
    cout << "b,占用字节:" << sizeof(b) << endl;
    cout << "char,占用字节:" << sizeof(c) << endl;
    cout << "string变量,占用字节:" << sizeof("hello") << endl;
    return 0;
}

输出:

a,占用字节:4
b,占用字节:4
char,占用字节:1
string变量,占用字节:6

二十、无符号和有符号数字

#include "iostream"
#include "windows.h"
using namespace std;


int main() {
    SetConsoleOutputCP(CP_UTF8); //中文乱码解决
    //有符号:signed(可选),无符号:unsigned(必选)
    signed int a = 10; //有符号int
    int b = -20;       //有符号int
    cout << a << "," << b << endl;


    unsigned int c = -30; //无符号数必须大于等于0
    cout << c << endl;


    //无符号的int、short、long的快捷写法
    u_short d =100; //等同于unsigned short
    u_int e = 200; //等同于unsigned int
    u_long f = 300; //等同于unsigned long
    cout << d << "," << e << "," << f <<endl;
    return 0;
}

输出:

10,-20
4294967266
100,200,300

二十一、数据类型-实型

#include "iostream"
#include "windows.h"
using namespace std;


int main()
{
    SetConsoleOutputCP(CP_UTF8);
    // float单精度浮点数,4字节,6~7位准确输出
    float num1 = 1234567890; //只提供了前7位的有效输出
    float num2 = 1.234567890;//只提供了前7位的有效输出
    //有效位:整数位、小数点、小数位


    cout << fixed; //设置为小数显示
    cout.width(20); //设置显示的最大宽度(最大位数)
    cout << num1 << "," << sizeof(num1) << endl;
    cout << num2 << "," << sizeof(num2) << endl;


    cout << "----------------------------" << endl;


    // double双精度浮点数,8字节,15~16位有效位
    double num3 = 1234567890.1234567890;
    cout << num3 << "," << sizeof(num3) << endl;


    cout << "----------------------------" << endl;


    // long double长精度(多精度)浮点数,16字节,18~19位有效位
    long double num4 = 1234567890.1234567890;
    cout << num4 << "," << sizeof(num4) << endl;
    return 0;
}

输出:

   1234567936.000000,4
1.234568,4
----------------------------
1234567890.123457,8
----------------------------
1234567890.123457,16

二十二、C++常量类型的确定

#include "iostream"
#include "windows.h"
using namespace std;


int main()
{
    SetConsoleOutputCP(CP_UTF8);
    // 不带有后缀的数字的类型确定,整数的类型最小是int,小数的类型最小是double
    cout << "10的字节数是:" << sizeof(10) << endl;
    cout << "99999999999的字节数是:" << sizeof(99999999999) << endl;
    cout << "3.14的字节数是:" << sizeof(3.14) << endl;


    // 带有后缀的
    // U无符号的意思
    10U; // 无符号整数int


    // L是long的意思
    cout << "10L的字节数是:" << sizeof(10L) << endl;


    // F是float的意思
    cout << "3.14F的字节数是:" << sizeof(3.14F) << endl;
    cout << "3.14的字节数是:" << sizeof(3.14) << endl;
    cout << "3.14D的字节数是:" << sizeof(3.14D) << endl;
    return 0;
}

输出:

10的字节数是:4
99999999999的字节数是:8
3.14的字节数是:8
10L的字节数是:4
3.14F的字节数是:4
3.14的字节数是:8
3.14D的字节数是:8

二十三、数据类型-字符型

#include "iostream"
#include "windows.h"
using namespace std;


int main()
{
    SetConsoleOutputCP(CP_UTF8);
    char ch = 65; //A的ASCII码位65
    cout << ch << endl;


    char ch2 = 'a'; //a的ASCII码为97
    cout << ch2 + 1 << endl;


    char ch3 = 'a' + 2;
    cout << ch3 << endl; //c的ASCII码为99
    return 0;
}

输出:

A
98
b

二十四、转义字符

#include "iostream"
#include "windows.h"
using namespace std;


int main()
{
    SetConsoleOutputCP(CP_UTF8);
    // 转义字符:将普通的字符使用\作为开头,将其含义进行转换,对照得到ASCII表的控制字符的功能
    // \n换行 \t制表符 \表示一个反斜杠本身 \'表示单引号 \"表示双引号
    cout << "你好呀 \n 我喜欢你" << endl; //效果等同于Enter键
    cout << "----------------" << endl;
    cout << "hello\titheima" << endl; //效果等同于Tab键,一个Tab可以补充到8个字符位
    cout << "a\titcast" << endl;
    cout << "----------------" << endl;
    cout << "\"" << endl;
    cout << "\" << endl;
    cout << "\'" << endl;
    return 0;
}

输出:

hello   itheima
a       itcast
----------------
"
\
'

二十五、数字类型之字符串

#include "iostream"
#include "windows.h"
using namespace std;


int main()
{
    SetConsoleOutputCP(CP_UTF8);
    char s1[] = "itheima";//C语言风格的字符串,数组
    char *s2 = "itcast";  //C语言风格的字符串,指针
    string s3 = "C++ string";//C++风格的字符串


    cout << s1 << endl;
    cout << s2 << endl;
    cout << s3 << endl;


    //s1 = "666";//C语言数组只读
    s2 = "777";
    s3 = "888";
    cout << s1 << endl;
    cout << s2 << endl;
    cout << s3 << endl;
    return 0;
}

输出:

itheima
itcast
C++ string
itheima
777
888

二十六、字符串的拼接

#include "iostream"
#include "windows.h"
using namespace std;


int main()
{
    SetConsoleOutputCP(CP_UTF8);
    string name = "小黑";
    string major = "物理";
    int age = 21;
    double height = 172.50;
    string msg = "我叫做" + name + ",我的专业是" + major;
    //to_string函数可以将内容转换为字符串类型,用法:to_string(内容)
    string msg1 = "我叫做" + name + ",我的专业是" + major + ",年龄是" + to_string(age) + ",身高是" + to_string(height);
    cout << msg << endl;
    cout << msg1 << endl;
    return 0;
}

输出:

我叫做小黑,我的专业是物理
我叫做小黑,我的专业是物理,年龄是21,身高是172.500000

二十七、数据类型之布尔型

#include "iostream"
#include "windows.h"
using namespace std;


int main() {
    SetConsoleOutputCP(CP_UTF8); //中文乱码解决
    // 布尔:bool 字面常量仅仅有2个:true或false
    bool flag1 = true;
    bool flag2 = false;
    cout << flag1 << endl;
    cout << flag2 << endl;
    return 0;
}

输出:

1
0

二十八、cin数据输入

#include "iostream"
#include "windows.h"
using namespace std;


int main() {
    SetConsoleOutputCP(CP_UTF8); //中文乱码解决
    // cin >> 变量;
    int num1;
    cout << "请输入一个整数:" << endl;
    cin >> num1;


    double num2;
    cout << "请输入一个实型数字:" << endl;
    cin >> num2;


    char c;
    cout << "请输入一个字符:" << endl;
    cin >> c;


    string s;
    cout << "请输入一个字符串:" << endl;
    cin >> s;


    cout << "输入的整数:" << num1 << endl;
    cout << "输入的小数值:" << num2 << endl;
    cout << "输入的字符:" << c << endl;
    cout << "输入的字符串:" << s << endl;
    return 0;
}

输出:

请输入一个整数:
12
请输入一个实型数字:
3.14
请输入一个字符:
A
请输入一个字符串:
freedali
输入的整数:12
输入的小数值:3.14
输入的字符:A
输入的字符串:freedali

二十九、cin中文乱码解决

#include "iostream"
#include "windows.h"
using namespace std;


int main() {
    SetConsoleOutputCP(CP_UTF8); //中文乱码解决
    // 试一下中文输入
    string str;
    cout << "请输入一个字符:" << endl;
    cin >> str;
    cout << "输入的字符为:" << str << endl;
    return 0;
}

压根就输入不了(Clion版本为CLion 2024.2.1)

我这个CLion取消勾选那个还是不行,哎。完了

后面发现,复制粘贴是可以的。

#include "iostream"
using namespace std;


int main() {
    // 试一下中文输入
    string str;
    cout << "请输入一个字符:" << endl;
    cin >> str;
    cout << "输入的字符为:" << str << endl;
    return 0;
}

输出:

请输入一个字符:


hh
输入的字符为:hh
#include "iostream"
using namespace std;


int main() {
    string name;
    float height;
    int age;


    cout << "请输入您的姓名:" << endl;
    cin >> name;
    cout << "请输入您的身高(CM):" << endl;
    cin >> height;
    cout << "请输入您的年龄:" << endl;
    cin >> age;
    cout << "----------" << endl;
    cout << "信息输入完成,您的信息如下:" << endl;
    cout << "姓名:" << name << endl;
    cout << "身高:" << height << "cm" << endl;
    cout << "年龄:" << age << endl;
    return 0;
}

输出:

请输入您的姓名:
周杰伦
请输入您的身高(CM):
180.5
请输入您的年龄:
21
----------
信息输入完成,您的信息如下:
姓名:周杰伦
身高:180.5cm
年龄:21

三十、算术运算符

#include "iostream"
using namespace std;


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


    // 双目(有2个操作数)操作符:+、-、*、/、%
    int num3 = 5 + 5; // 相加
    int num4 = 5 - 3; // 相减
    int num5 = 5 * 5; // 相乘
    int num6 = 10 / 3;// 相除,如果两个操作数都属整数,是整除结果
    int num7 = 10 % 3;// 取余
    cout << "5 + 5 =" << num3 << endl;
    cout << "5 - 3 =" << num4 << endl;
    cout << "5 * 5 =" << num5 << endl;
    cout << "10 / 3 =" << num6 << endl;
    cout << "10 % 3 =" << num7 << endl;


    //单目操作符:++(+1)、--(-1)
    int a = 2;
    int b = ++a; //前置递增(+1),在赋值语句(=)之前,先执行加1的操作,先自增再赋值
    cout << "a = " << a << ",b = " << b << endl;


    int c = 2;
    int d = c++; //后置递增,在赋值语句之后,再执行加1的操作,先赋值再自增
    cout << "c = " << c << ",d = " << d << endl;


    int e = 2;
    int f = --e; //先自减再赋值
    cout << "e = " << e << ",f = " << f << endl;


    int g = 2;
    int h = g--; //先赋值再自减
    cout << "g = " << g << ",h = " << h << endl;
    return 0;
}

输出:

10,-10
5 + 5 =10
5 - 3 =2
5 * 5 =25
10 / 3 =3
10 % 3 =1
a = 3,b = 3
c = 3,d = 2
e = 1,f = 1
g = 1,h = 2

三十一、赋值运算符

#include "iostream"
using namespace std;


int main() {
    //+=、-=、*=、/=、%=
    int num = 2;
    num = num +3;
    cout << num << endl;
    num += 3;
    cout << num << endl;//num=8


    num -= 3;
    cout << num << endl;//num=5


    num *= 5;
    cout << num << endl;//num=25


    num /= 5;
    cout << num << endl;//num=5


    num %= 3;
    cout << num << endl;//num=2
    return 0;
}

输出:

5
8
5
25
5
2
#include "iostream"
using namespace std;


int main() {
    int money = 50;
    cout << "小明余额:" << money << "元。" << endl;
    money -= 5;
    cout << "购买冰淇淋花费5元,余额剩余::" << money << "元。" << endl;
    money += 10;
    cout << "转卖冰淇淋得到10元,余额剩余::" << money << "元。" << endl;
    money -= 2;
    cout << "购买彩票花费2元,余额剩余::" << money << "元。" << endl;
    money *= 2;
    cout << "彩票中奖余额翻倍,余额剩余::" << money << "元。" << endl;
    return 0;
}

输出:

小明余额:50元。
购买冰淇淋花费5元,余额剩余::45元。
转卖冰淇淋得到10元,余额剩余::55元。
购买彩票花费2元,余额剩余::53元。
彩票中奖余额翻倍,余额剩余::106元。

三十二、比较运算符

#include "iostream"
#include "cstring"  //C语言的字符串库
using namespace std;


int main() {
    // ==相等,!=不等,<小于,>大于,<=小于等于,>=大于等于
    //0 false假,1 true 真
    int num1 = 3;
    int num2 = 5;
    bool r1 = num1 == num2;
    bool r2 = num1 != num2;
    cout << "num1 == num2," << r1 << endl;
    cout << "num1 != num2," << r2 << endl;


    cout << "3 < 5 ," << (3 < 5) << endl;
    cout << "3 > 5 ," << (3 > 5) << endl;
    cout << "3 <= 5 ," << (3 <= 5) << endl;
    cout << "3 >= 5 ," << (3 >= 5) << endl;


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


    //strcmp进行比较,0相等,-1 s1<s2,1 s1>s2
    cout << "s1 == s2," << strcmp(s1,s2) << endl;
    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;
}

输出:

num1 == num2,0
num1 != num2,1
3 < 5 ,1
3 > 5 ,0
3 <= 5 ,1
3 >= 5 ,0
s1 == s2,0
s1 == s2,0
s3和s4的比较结果:-1
字符串字面量 c 是否大于 a?,1
s5是否等于s6:1

三十三、逻辑运算符

#include "iostream"
#include "cstring"  //C语言的字符串库
using namespace std;


int main() {
    // bool 1真 0假
    // !非
    bool b1 = !(1 == 1); //假
    bool b2 = !(1 == 2); //真
    cout << b1 << endl;
    cout << b2 << endl;


    //&&与,两个条件都要同时为true 结果为真,否则只要有一个为假,结果就为假
    bool b3 = 1 == 1 && 2 == 2; //真
    bool b4 = 1 == 2 && 2 == 2; //假
    cout << b3 << endl;
    cout << b4 << endl;


    //||或 只要有1个为真,结果就为真。
    bool b5 = 1 == 1 || 1 == 2; //真
    bool b6 = 1 == 2 || 1 == 2; //假
    cout << b5 << endl;
    cout << b6 << endl;
    return 0;
}

输出:

0
1
1
0
1
0

三十四、三元运算符

#include "iostream"
#include "cstring"  //C语言的字符串库
using namespace std;


int main() {
    // 表达式? 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;
    return 0;
}

输出:

请输入num1的值:
99
请输入num2的值:
100
num1小于num2
#include "iostream"
#include "cstring"  //C语言的字符串库
using namespace std;


int main() {
    float score1;
    float score2;
    cout << "请输入小明第一次考试成绩(0-100):" << endl;
    cin >> score1;
    cout << "请输入小明第二次考试成绩(0-100):" << endl;
    cin >> score2;
    string value = score2 > score1? "买糖" : "不买糖";
    cout << value << endl;
    return 0;
}

输出1:

请输入小明第一次考试成绩(0-100):
90
请输入小明第二次考试成绩(0-100):
96
买糖

输出2:

请输入小明第一次考试成绩(0-100):
99
请输入小明第二次考试成绩(0-100):
96
不买糖

三十五、if逻辑判断语句

#include "iostream"
using namespace std;


int main() {
    cout << "今天发工资了" << endl;
    cout << "请输入小明发的工资:" << endl;
    int money;
    cin >> money;
    if(money >= 10000){
        cout << "买个新电脑去,花费9900元!" << endl;
        money -= 9900;
    }
    cout << "今天发的工资还剩:" << money << "元!" << endl;
    return 0;
}

输出1:

今天发工资了
请输入小明发的工资:
10000
买个新电脑去,花费9900元!
今天发的工资还剩:100元!

输出2:

今天发工资了
请输入小明发的工资:
8000
今天发的工资还剩:8000元!
#include "iostream"
using namespace std;


int main() {
    cout << "欢迎来到黑马儿童游乐场,儿童免费,成人收费!" << endl;
    cout << "请输入你的年龄:" << endl;
    int age;
    cin >> age;
    if(age < 18){
        cout << "您未成年,免费游玩,欢迎你小朋友!" << endl;
    }
    cout << "祝您游玩愉快!!!" << endl;
    return 0;
}

输出1:

欢迎来到黑马儿童游乐场,儿童免费,成人收费!
请输入你的年龄:
15
您未成年,免费游玩,欢迎你小朋友!
祝您游玩愉快!!!

输出2:

欢迎来到黑马儿童游乐场,儿童免费,成人收费!
请输入你的年龄:
20
祝您游玩愉快!!!

输出3:

欢迎来到黑马儿童游乐场,儿童免费,成人收费!
请输入你的年龄:
18
祝您游玩愉快!!!

三十六、AI大模型辅助编程

三十七、if_else语句

#include "iostream"
using namespace std;


int main() {
    int love;
    cout << "小美你喜欢我吗?喜欢扣1,不喜欢扣0" << endl;
    cin >> love;
    if(love){
        cout << "小美我也喜欢你!!!" << endl;
    }
    else{
        cout << "伤心,我去追求小新去了!" << endl;
    }
    return 0;
}

输出1:

小美你喜欢我吗?喜欢扣1,不喜欢扣0
1
小美我也喜欢你!!!

输出2:

小美你喜欢我吗?喜欢扣1,不喜欢扣0
0
伤心,我去追求小新去了!
#include "iostream"
using namespace std;


int main() {
    int height;
    cout << "欢迎来到黑马动物园。 " << endl;
    cout << "请输入你的身高(cm): ";
    cin >> height;
    if(height > 120){
        cout << "您的身高超出120cm,游玩需要购票10元。" << endl;
    }else{
        cout << "您的身高未超出120cm,可以免费游玩。" << endl;
    }
    cout << "祝您游玩愉快。" << endl;
    return 0;
}

输出1:

欢迎来到黑马动物园。 
请输入你的身高(cm): 130
您的身高超出120cm,游玩需要购票10元。
祝您游玩愉快。

输出2:

欢迎来到黑马动物园。 
请输入你的身高(cm): 111
您的身高未超出120cm,可以免费游玩。
祝您游玩愉快。

三十八、else if语句

#include "iostream"
using namespace std;


int main() {
    bool xiaomei = true;
    bool xiaotian = false;
    if(xiaomei){
        cout << "小美我也喜欢你!" << endl;
    } else if(xiaotian){
        cout << "小甜我也喜欢你!" << endl;
    } else{
        cout << "小新我喜欢你!!!" << endl;
    }
    return 0;
}

输出:

小美我也喜欢你!
#include "iostream"
using namespace std;


int main() {
    int guess;
    int num = 5;
    cout << "请输入一个猜想的数字(1~10): " << endl;
    cin >> guess;
    if(guess >= 1 && guess <= 10){
        if(guess == num){
            cout << "你猜对了,真棒!" << endl;
        }else if(guess < num){
            cout << "你猜小了!!!" << endl;
        }else{
            cout << "你猜大了!!!" << endl;
        }
    }
    return 0;
}

输出1:

请输入一个猜想的数字(1~10): 
5
你猜对了,真棒!

输出2:

请输入一个猜想的数字(1~10): 
1
你猜小了!!!

输出3:

请输入一个猜想的数字(1~10): 
10
你猜大了!!!

输出4:

请输入一个猜想的数字(1~10): 
20

三十九、逻辑判断语句的嵌套

#include "iostream"
using namespace std;


int main() {
    int love;//1表示喜欢,0表示不喜欢
    int weather;//1表示好天气,0表示坏天气
    cout << "小美对我的态度是怎么样的?1是喜欢,0是不喜欢" << endl;
    cin >> love;


    if(love){
        cout << "很高兴,小美喜欢我,我也喜欢小美!" << endl;
        cout << "今天天气怎么样?1是好天气,0是坏天气" << endl;
        cin >> weather;
        if(weather){
            cout << "今天是个好天气,带小美一起去踏青!" << endl;
        }else{
            cout << "今天天气不好,去看电影吧!" << endl;
        }
    }
    else{
        cout << "很伤心,我去追求小新了!" << endl;
    }
    return 0;
}

输出1:

小美对我的态度是怎么样的?1是喜欢,0是不喜欢
1
很高兴,小美喜欢我,我也喜欢小美!
今天天气怎么样?1是好天气,0是坏天气
1
今天是个好天气,带小美一起去踏青!

输出2:

小美对我的态度是怎么样的?1是喜欢,0是不喜欢
1
很高兴,小美喜欢我,我也喜欢小美!
今天天气怎么样?1是好天气,0是坏天气
0
今天天气不好,去看电影吧!

输出3:

小美对我的态度是怎么样的?1是喜欢,0是不喜欢
0
很伤心,我去追求小新了!
#include "iostream"
using namespace std;


int main() {
    int guess;
    int num = 5;
    cout << "请输入第一次猜想的数字: ";
    cin >> guess;
    if(guess == num){
        cout << "第一次就猜对了,你真棒!" << endl;
    }else{
        cout << "不对,请再猜一次:" << endl;
        cin >> guess;
        if(guess == num){
            cout << "第二次猜对了,你真棒!" << endl;
        }else{
            cout << "不对,再猜最后一次:" << endl;
            cin >> guess;
            if(guess == num){
                cout << "第三次猜对了,你真棒!" << endl;
            }else{
                cout << "Sorry,全部猜错啦,我想的是:" << num << endl;
                }
            }
        }
    return 0;
}

输出1:

请输入第一次猜想的数字: 5
第一次就猜对了,你真棒!

输出2:

请输入第一次猜想的数字: 1
不对,请再猜一次:
5
第二次猜对了,你真棒!

输出3:

请输入第一次猜想的数字: 1
不对,请再猜一次:
2
不对,再猜最后一次:
5
第三次猜对了,你真棒!

输出4:

请输入第一次猜想的数字: 1
不对,请再猜一次:
2
不对,再猜最后一次:
3
Sorry,全部猜错啦,我想的是:5

四十、逻辑判断的综合案例

#include "iostream"
#include "random"
using namespace std;


//生产一个1到10的随机数
int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}


int main() {
    //int num = get_random_num(1, 10);
    //cout << num << endl;


    //第一份信息:1~10的数字,代表扑克牌1~10
    int num = get_random_num(1, 10);


    //第二份信息:字符串,红色或黑色,代表扑克牌的花色
    string color = get_random_num(0, 1)? "红色" : "黑色";


    //第三份信息:字符串,如果是红色产出红桃或方块,如果是黑色产出黑桃或梅花
    string suit;
    if(color == "红色"){
        suit = get_random_num(0,1)?  "红桃" : "方块";
    }else{
        suit = get_random_num(0,1)?  "黑桃" : "梅花";
    }
    cout << num << ":" << color << ":" << suit << endl;


    //先猜数字,成功后猜颜色,再成功猜测具体花型
    int guess_num;
    cout << "请输入猜测的扑克牌数字:" << endl;
    cin >> guess_num;
    if(guess_num == num){
        //数字猜对了就要猜颜色
        cout << "请猜测颜色,红色输入1,黑色输入0:" << endl;
        int color_num;
        cin >> color_num;
        if((color_num? "红色" : "黑色") == color){
            //颜色猜对了
            int suit_num;
            if(color == "红色"){
                //要猜测是否红桃或方块
                cout << "请猜测是否红桃或方块,红桃输入1,方块输入0:" << endl;
                cin >> suit_num;
                if((suit_num? "红桃" : "方块") == suit){
                    //花型正确
                    cout << "恭喜你游戏成功,花型猜测正确,游戏的花型是:" << suit << endl;
                }else{
                    cout << "游戏失败,花型猜测错误,游戏的正确花型是:" << suit << endl;
                }
            }else{
                //要猜测是否黑桃或梅花
                cout << "请猜测是否黑桃或梅花,黑桃输入1,梅花输入0:" << endl;
                cin >> suit_num;
                if((suit_num? "黑桃" : "梅花") == suit){
                    //花型正确
                    cout << "恭喜你游戏成功,花型猜测正确,游戏的花型是:" << suit << endl;
                }else{
                    cout << "游戏失败,花型猜测错误,游戏的正确花型是:" << suit << endl;
                }
            }
        }else{
            //颜色猜错了
            cout << "颜色猜错了,游戏结束" << endl;
        }
        }else{
        cout << "数字猜错了,游戏结束" << endl;
    }
    return 0;
}

输出1:

3:黑色:梅花
请输入猜测的扑克牌数字:
1
数字猜错了,游戏结束

输出2:

10:红色:方块
请输入猜测的扑克牌数字:
10
请猜测颜色,红色输入1,黑色输入0:
0
颜色猜错了,游戏结束

输出3:

10:红色:红桃
请输入猜测的扑克牌数字:
10
请猜测颜色,红色输入1,黑色输入0:
1
请猜测是否红桃或方块,红桃输入1,方块输入0:
0
游戏失败,花型猜测错误,游戏的正确花型是:红桃

输出4:

8:红色:红桃
请输入猜测的扑克牌数字:
8
请猜测颜色,红色输入1,黑色输入0:
1
请猜测是否红桃或方块,红桃输入1,方块输入0:
1
恭喜你游戏成功,花型猜测正确,游戏的花型是:红桃

四十一、基于逻辑运算符完成复杂判断

#include "iostream"
using namespace std;


int main() {
    int age,height;
    cout << "请输入你的年龄: ";
    cin >> age;
    cout << "请输入你的身高: ";
    cin >> height;
    //必须同时满足年龄小于18且身高小于120才可以免费
    if(age < 18 && height < 120)
        cout<<"免费游玩!!" << endl;
    else
        cout<<"不能免费游玩!" << endl;


    //||满足年龄小于18或身高小于120才可以免费
    if(age < 18 || height < 120)
        cout<<"免费游玩!!" << endl;
    else
        cout<<"不能免费游玩!" << endl;
    return 0;
}

输出1:

请输入你的年龄: 10
请输入你的身高: 110
免费游玩!!
免费游玩!!

输出2:

请输入你的年龄: 12
请输入你的身高: 130
不能免费游玩!
免费游玩!!

输出3:

请输入你的年龄: 19
请输入你的身高: 110
不能免费游玩!
免费游玩!!

输出4:

请输入你的年龄: 19
请输入你的身高: 130
不能免费游玩!
不能免费游玩!

四十二、switch控制语句

#include "iostream"
using namespace std;


int main() {
    //输入数字1-7输出星期几
    int num;
    cout << "请输入数字1-7:";
    cin >> num;
    switch (num) {
        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;
        default:
            cout << "输入错误" << endl;
    }
    return 0;
}

输出1:

请输入数字1-7:5
今天是星期五

输出2:

请输入数字1-7:0
输入错误

输出3:

请输入数字1-7:8
输入错误
#include "iostream"
using namespace std;


int main()
{
    int num;
    cout << "请给电影打分,10和9是优秀、8和7是一般、6和5是普通、低于5是垃圾:" << endl;
    cin >> num;
    switch (num)
    {
    case 10:
    case 9:{
        cout << "优秀" << endl;
        break;
    }
    case 8:
    case 7:{
        cout << "一般" << endl;
        break;
    }
    case 6:
    case 5:{
        cout << "普通" << endl;
        break;
    }
    default:
        cout << "垃圾" << endl;
    }
    return 0;
}
#include "iostream"
using namespace std;


int main()
{
    int num;
    cout << "请选择直播的场景,输入对应的场景代码数字。" << endl;
    cout << "1仅输出屏幕 ,2输出屏幕+摄像头画面, 3仅输出摄像头:";
    cin >> num;
    switch (num) {
        case 1:
            cout << "已经切换为场景1,用户只能看到屏幕画面。" << endl;
            break;
        case 2:
            cout << "已经切换为场景2,用户可以看到屏幕和摄像头画面。" << endl;
            break;
        case 3:
            cout << "已经切换为场景3,用户仅可看到摄像头画面。" << endl;
            break;
        default:
            cout << "您输入的代码有误,无法识别具体场景。" << endl;
    }
    return 0;
}

输出1:

请选择直播的场景,输入对应的场景代码数字。
1仅输出屏幕 ,2输出屏幕+摄像头画面, 3仅输出摄像头:1
已经切换为场景1,用户只能看到屏幕画面。

输出2:

请选择直播的场景,输入对应的场景代码数字。
1仅输出屏幕 ,2输出屏幕+摄像头画面, 3仅输出摄像头:2
已经切换为场景2,用户可以看到屏幕和摄像头画面。

输出3:

请选择直播的场景,输入对应的场景代码数字。
1仅输出屏幕 ,2输出屏幕+摄像头画面, 3仅输出摄像头:3
已经切换为场景3,用户仅可看到摄像头画面。

输出4:

请选择直播的场景,输入对应的场景代码数字。
1仅输出屏幕 ,2输出屏幕+摄像头画面, 3仅输出摄像头:6
您输入的代码有误,无法识别具体场景。

四十三、枚举类型

#include "iostream"
using namespace std;


int main()
{
    /*
     * enum 枚举类型名称{
     * 枚举元素,
     * 枚举元素,
     * 。。。
     * 。。。
     * }
     * */


    // 询问小朋友喜欢的颜色,红黄蓝三种选1个
    enum Color{
        RED,   //默认是0
        YELLOW,//默认是1
        BLUE   //默认是2
    };


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

输出:

小朋友们,你们喜欢什么颜色?0红色 1黄色 2蓝色
1
小朋友喜欢黄色!!

其他输出省略。

四十四、while循环语句

#include "iostream"
using namespace std;


int main()
{
    bool is_run = true; //循环控制因子
    int num = 0;  //控制变量
    while (is_run){  //false就结束while循环了,true就继续执行循环体
        cout << "hello" << endl;
        num++;


        if (num == 5){
            is_run = false;  //控制因子的更新
        }
    }
    return 0;
}

输出:

hello
hello
hello
hello
hello

小美表白10次:

#include "iostream"
using namespace std;


int main()
{
    //我要向小美表白,每一天都表白,连续表白十天
    int day = 1;
    while (day <= 10){
        cout << "今天是第" << day << "天向小美表白,小美我喜欢你!!!" << endl;
        day++;
    }
    return 0;
}

输出:

今天是第1天向小美表白,小美我喜欢你!!!
今天是第2天向小美表白,小美我喜欢你!!!
今天是第3天向小美表白,小美我喜欢你!!!
今天是第4天向小美表白,小美我喜欢你!!!
今天是第5天向小美表白,小美我喜欢你!!!
今天是第6天向小美表白,小美我喜欢你!!!
今天是第7天向小美表白,小美我喜欢你!!!
今天是第8天向小美表白,小美我喜欢你!!!
今天是第9天向小美表白,小美我喜欢你!!!
今天是第10天向小美表白,小美我喜欢你!!!
#include "iostream"
using namespace std;


int main()
{
    int n = 0 , sum = 0;
    while(n < 100)
    {
        n++;
        sum = sum + n;
        if(n == 100)
            cout << "从1累加到100的和 = " << sum << endl;
    }
    return 0;
}

输出:

从1累加到100的和 = 5050

扩展:从n1累加到n2的值,n1>n2。

#include "iostream"
using namespace std;


int main()
{
    int n1,n2,sum = 1;
    cout << "请输入开始累加的整数:";
    cin >> n1;
    cout << "请输入结束累加的整数:";
    cin >> n2;
    int n3 = n1;
    if(n1 < n2){
        while(n1 <= n2)
        {
            n1++;
            sum = sum + n1;
            if(n1 == n2)
                cout << "从" << n3 << "累加到" << n2 << "的和 = " << sum << endl;
        }
    }
    else
        cout << "输入的数字有误!" << endl;
    return 0;
}

输出1:

请输入开始累加的整数:1
请输入结束累加的整数:10
从1累加到10的和 = 55

输出2:

请输入开始累加的整数:100
请输入结束累加的整数:1
输入的数字有误!

老师讲解的1到100累加:

#include "iostream"
using namespace std;


int main() {
    int n = 1 , sum = 0;
    while(n < 101)
    {
        sum += n;
        n++;
    }
    cout << "从1累加到100的和 = " << sum << endl;
    return 0;
}

四十五、while循环猜数字案例

#include "iostream"
#include "random"
using namespace std;


int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
int main() {
    int num = get_random_num(1, 100);
    int n = 0;
    cout << num << endl;


    while(1) {
        int guess;
        cout << "请输入一个数字(1-100):";
        cin >> guess;
        n++;
        if(guess > num) {
            cout << "太大了" << endl;
        } else if(guess < num) {
            cout << "太小了" << endl;
        } else {
            cout << "猜对了" << endl;
            break;
        }
    }
    cout << "你总共猜了" << n << "次" << endl;
    return 0;
}

输出1:

77
请输入一个数字(1-100):80
太大了
请输入一个数字(1-100):60
太小了
请输入一个数字(1-100):70
太小了
请输入一个数字(1-100):75
太小了
请输入一个数字(1-100):77
猜对了
你猜了5次

输出2:

53
请输入一个数字(1-100):53
猜对了
你总共猜了1次

四十六、do while循环

#include "iostream"
#include "random"
using namespace std;


int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
int main() {
    int num = get_random_num(1, 100);
    int n = 0;
    int count = 0;
    cout << num << endl;


    do {
        cout << "请输入一个数字:";
        cin >> n;
        count++;
        if (n > num) {
            cout << "太大了" << endl;
        } else if (n < num) {
            cout << "太小了" << endl;
        } else {
            cout << "猜对了" << endl;
        }
    } while (n != num);
    cout << "你总共猜了" << count << "次" << endl;
    return 0;
}

输出1:

9
请输入一个数字:8
太小了
请输入一个数字:10
太大了
请输入一个数字:9
猜对了
你总共猜了3次

输出2:

73
请输入一个数字:73
猜对了
你总共猜了1次

四十七、while循环嵌套

#include "iostream"
#include "random"
using namespace std;


int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
int main()
{
    bool is_continue = true;
    while (is_continue){
        cout << "今天又是新的一天,开始向小美表白" << endl;


        //每一天表白的流程 每一次都送三朵玫瑰花
        int i = 0;
        while (i < 3){   //内层循环控制因子
            cout << "送给小美一朵玫瑰花!!!" << endl;
            i++;  //内层循环控制因子的更新
        }


        cout << "小美,我喜欢你!" << endl;


        int num = get_random_num(1, 20);
        cout << "num = " << num << endl;
        if (num == 1){ //模拟5%的几率
            //成功
            is_continue = false;
        }
        cout << endl;
    }
    return 0;
}
#include "iostream"
using namespace std;
int main()
{
    cout << "有点胖需要减肥10斤体重,计划5天,每天目标2斤体重。加油!" << endl;
    int day = 1;
    int fuwocheng = 1,chongcipao = 1,weightdown = 0;
    while (day <= 5){
        cout << "今天是减肥的第" << day << "天" << endl;
        while (fuwocheng <= 3){
            cout << "开始做减肥第" << day << "天的第" << fuwocheng << "个俯卧撑!" << "\t";
            fuwocheng++;
        }
        cout << endl;
        weightdown += 1;
        cout << "减肥第" << day << "天的3个俯卧撑做完,体重减少1斤,目前累计减少体重:" << weightdown << "斤!!" << endl;
        while (chongcipao <= 3){
            cout << "开始减肥第" << day << "天的第" << chongcipao << "批次400米冲刺跑!" << "\t";
            chongcipao++;
        }
        cout << endl;
        weightdown += 1;
        cout << "减肥第" << day << "天的3批次400米冲刺跑完成,体重减少1斤,目前累计减少体重:" << weightdown << "斤!!" << endl;
        cout << endl;
        day++;
        fuwocheng = 1;
        chongcipao = 1;
    }
    cout << "5天减肥完成,体重累计减少:" << weightdown << "斤体重!" << endl;
    return 0;
}

输出:

有点胖需要减肥10斤体重,计划5天,每天目标2斤体重。加油!
今天是减肥的第1天
开始做减肥第1天的第1个俯卧撑!	开始做减肥第1天的第2个俯卧撑!	开始做减肥第1天的第3个俯卧撑!	
减肥第1天的3个俯卧撑做完,体重减少1斤,目前累计减少体重:1斤!!
开始减肥第1天的第1批次400米冲刺跑!	开始减肥第1天的第2批次400米冲刺跑!	开始减肥第1天的第3批次400米冲刺跑!	
减肥第1天的3批次400米冲刺跑完成,体重减少1斤,目前累计减少体重:2斤!!


今天是减肥的第2天
开始做减肥第2天的第1个俯卧撑!	开始做减肥第2天的第2个俯卧撑!	开始做减肥第2天的第3个俯卧撑!	
减肥第2天的3个俯卧撑做完,体重减少1斤,目前累计减少体重:3斤!!
开始减肥第2天的第1批次400米冲刺跑!	开始减肥第2天的第2批次400米冲刺跑!	开始减肥第2天的第3批次400米冲刺跑!	
减肥第2天的3批次400米冲刺跑完成,体重减少1斤,目前累计减少体重:4斤!!


今天是减肥的第3天
开始做减肥第3天的第1个俯卧撑!	开始做减肥第3天的第2个俯卧撑!	开始做减肥第3天的第3个俯卧撑!	
减肥第3天的3个俯卧撑做完,体重减少1斤,目前累计减少体重:5斤!!
开始减肥第3天的第1批次400米冲刺跑!	开始减肥第3天的第2批次400米冲刺跑!	开始减肥第3天的第3批次400米冲刺跑!	
减肥第3天的3批次400米冲刺跑完成,体重减少1斤,目前累计减少体重:6斤!!


今天是减肥的第4天
开始做减肥第4天的第1个俯卧撑!	开始做减肥第4天的第2个俯卧撑!	开始做减肥第4天的第3个俯卧撑!	
减肥第4天的3个俯卧撑做完,体重减少1斤,目前累计减少体重:7斤!!
开始减肥第4天的第1批次400米冲刺跑!	开始减肥第4天的第2批次400米冲刺跑!	开始减肥第4天的第3批次400米冲刺跑!	
减肥第4天的3批次400米冲刺跑完成,体重减少1斤,目前累计减少体重:8斤!!


今天是减肥的第5天
开始做减肥第5天的第1个俯卧撑!	开始做减肥第5天的第2个俯卧撑!	开始做减肥第5天的第3个俯卧撑!	
减肥第5天的3个俯卧撑做完,体重减少1斤,目前累计减少体重:9斤!!
开始减肥第5天的第1批次400米冲刺跑!	开始减肥第5天的第2批次400米冲刺跑!	开始减肥第5天的第3批次400米冲刺跑!	
减肥第5天的3批次400米冲刺跑完成,体重减少1斤,目前累计减少体重:10斤!!


5天减肥完成,体重累计减少:10斤!

四十七、while循环嵌套案例-九九乘法表

下面for循环由AI生成

#include "iostream"
using namespace std;
//主函数
int main()
{
    //输出九九乘法表
    for(int i=1; i<=9; i++)
    {
        for(int j=1; j<=i; j++)
        {
            //输出乘法表达式及其结果
            cout<<j<<"*"<<i<<"="<<i*j<<"\t";
        }
        //换行,开始新的乘法表达式行
        cout<<endl;
    }
    //程序执行结束,返回0表示正常结束
    return 0;
}

输出:

1*1=1	
1*2=2	2*2=4	
1*3=3	2*3=6	3*3=9	
1*4=4	2*4=8	3*4=12	4*4=16	
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81

简直不要太强大!!!

while:

#include "iostream"
using namespace std;
int main()
{
    //输出九九乘法表
    //1、通过外层循环输出9行
    int line = 1;
    while(line <= 9)
    {
        //内层循环
        int num = 1;
        while(num <= line)
        {
            cout << num << "×" << line << "=" << num * line << "\t";
            num++;
        }
        cout << endl;
        line++;
    }
    return 0;
}

输出:

1×1=1	
1×2=2	2×2=4	
1×3=3	2×3=6	3×3=9	
1×4=4	2×4=8	3×4=12	4×4=16	
1×5=5	2×5=10	3×5=15	4×5=20	5×5=25	
1×6=6	2×6=12	3×6=18	4×6=24	5×6=30	6×6=36	
1×7=7	2×7=14	3×7=21	4×7=28	5×7=35	6×7=42	7×7=49	
1×8=8	2×8=16	3×8=24	4×8=32	5×8=40	6×8=48	7×8=56	8×8=64	
1×9=9	2×9=18	3×9=27	4×9=36	5×9=45	6×9=54	7×9=63	8×9=72	9×9=81

四十八、for循环语句

基础for循环 打印1-10的数字

#include "iostream"
using namespace std;
int main()
{
    //基础for循环 打印1-10的数字
    for(int i = 1;i <= 10;i++)
    {
        cout << i << endl;
    }
    return 0;
}

输出:

1
2
3
4
5
6
7
8
9
10

打印1-20的奇数:

#include "iostream"
using namespace std;
int main()
{
    //基础for循环 打印1-20的奇数
    for(int i = 1;i <= 20;i += 2)
    {
        cout << i << endl;
    }
    return 0;
}

输出:

1
3
5
7
9
11
13
15
17
19

条件判断可以省略 不建议

#include "iostream"
using namespace std;
int main()
{
    //条件判断可以省略 不建议
    for (int i = 0;; i++) {
        cout << i << endl;
    }
    return 0;
}

循环控制因子可以省略

#include "iostream"
using namespace std;
int main()
{
    //循环控制因子可以省略
    int i = 0;
    for ( ; i < 100; ++i) {
        cout << i << endl;
    }
    return 0;
}

循环控制因子的更新 可以省略

#include "iostream"
using namespace std;
int main()
{
    //循环控制因子的更新 可以省略
    for (int i = 0; i < 100; ) {
        cout << i << endl;
    }
    return 0;
}
#include "iostream"
using namespace std;
int main()
{
    int sum = 0;
    for (int i = 0; i <= 100; i += 2) {
        //cout << i << endl;
        sum += i;
    }
    cout << "1到100的偶数和:" << sum << endl;
    return 0;
}

输出:

1到100的偶数和:2550
#include "iostream"
#include "random"
using namespace std;


int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
int main()
{
    int num = get_random_num(1, 10);
    int guess;
    cout << num << endl;
    for(int i = 0; i < 1 ; ){
        cout << "请输入你猜想的数字(1-10):";
        cin >> guess;
        if(guess < 1 || guess > 10){
            cout << "输入有误,请重新输入" << endl;
            continue;
        }
        if(guess > num){
            cout << "猜大了" << endl;
        }else if(guess < num){
            cout << "猜小了" << endl;
        }else{
            cout << "猜对了" << endl;
            break;
        }
    }
    return 0;
}

输出:

1

请输入你猜想的数字(1-10):0
输入有误,请重新输入
请输入你猜想的数字(1-10):99
输入有误,请重新输入
请输入你猜想的数字(1-10):5
猜大了
请输入你猜想的数字(1-10):2
猜大了
请输入你猜想的数字(1-10):1
猜对了

四十九、for循环的嵌套

#include "iostream"
using namespace std;
// 主函数
int main()
{
    // 外层循环:遍历1到9的乘法行
    for(int lin = 1; lin <= 9; lin++){
        // 内层循环:遍历当前行的所有乘法项
        for(int col = 1; col <= lin; col++){
            // 输出乘法表的具体项,包括两个乘数和结果
            cout << col << "×" << lin << "=" << col*lin << "\t";
        }
        // 每完成一行的输出后换行
        cout << endl;
    }
    // 程序正常结束,返回0
    return 0;
}

输出:

1×1=1	
1×2=2	2×2=4	
1×3=3	2×3=6	3×3=9	
1×4=4	2×4=8	3×4=12	4×4=16	
1×5=5	2×5=10	3×5=15	4×5=20	5×5=25	
1×6=6	2×6=12	3×6=18	4×6=24	5×6=30	6×6=36	
1×7=7	2×7=14	3×7=21	4×7=28	5×7=35	6×7=42	7×7=49	
1×8=8	2×8=16	3×8=24	4×8=32	5×8=40	6×8=48	7×8=56	8×8=64	
1×9=9	2×9=18	3×9=27	4×9=36	5×9=45	6×9=54	7×9=63	8×9=72	9×9=81	
#include "iostream"
using namespace std;
/c++
// 主函数
int main()
{
    // 外层循环:遍历乘法表的每一行
    for (int lin = 1; lin <= 9; lin++) {
        // 初始化列变量col,从1开始,最大到当前行号lin
        int col = 1;
        // 内层循环:遍历当前行的每一个元素
        while (col <= lin) {
            // 输出乘法表的一个元素,包括两个操作数和结果
            cout << col << "×" << lin << "=" << col*lin << "\t";
            // 增加列变量col,准备输出下一个元素
            col++;
        }
        // 输出换行符,准备输出下一行的乘法表
        cout << endl;
    }
    // 主函数执行结束,返回0表示正常结束
    return 0;
}

输出:

1×1=1	
1×2=2	2×2=4	
1×3=3	2×3=6	3×3=9	
1×4=4	2×4=8	3×4=12	4×4=16	
1×5=5	2×5=10	3×5=15	4×5=20	5×5=25	
1×6=6	2×6=12	3×6=18	4×6=24	5×6=30	6×6=36	
1×7=7	2×7=14	3×7=21	4×7=28	5×7=35	6×7=42	7×7=49	
1×8=8	2×8=16	3×8=24	4×8=32	5×8=40	6×8=48	7×8=56	8×8=64	
1×9=9	2×9=18	3×9=27	4×9=36	5×9=45	6×9=54	7×9=63	8×9=72	9×9=81	

五十、for循环的嵌套例题讲解

自己写的:

#include "iostream"
#include "random"
using namespace std;
int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}


int main(){
    int num = get_random_num(1, 10);
    int guess;
    cout << num << endl;
    cout << "请输入一个1-10的整数:";
    cin >> guess;
    for (int i = 0; i < 1; ) {
        if(guess > num){
            cout << "猜大了" << endl;
            cout << "请输入一个1-10的整数:";
            cin >> guess;
        }else if(guess < num){
            cout << "猜小了" << endl;
            cout << "请输入一个1-10的整数:";
            cin >> guess;
        }else{
            cout << "猜对了" << endl;
            break;
        }
    }
    return 0;
}

输出:

5
请输入一个1-10的整数:1
猜小了
请输入一个1-10的整数:6
猜大了
请输入一个1-10的整数:5
猜对了

视频中的:

#include "iostream"
#include "random"
using namespace std;
int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}


int main(){
    int num = get_random_num(1, 10);
    int guess;
    cout << num << endl;
    cout << "请输入一个1-10的整数:";
    cin >> guess;
    for (bool is_continue = true; is_continue;) {
        if(guess == num){
            cout << "恭喜你猜对了!" << endl;
            is_continue = false;
        }else if(guess > num){
            cout << "猜大了,请重新输入:";
            cin >> guess;
        }else{
            cout << "猜小了,请重新输入:";
            cin >> guess;
        }
    }
    return 0;
}

输出:

5

请输入一个1-10的整数:1
猜小了,请重新输入:9
猜大了,请重新输入:5
恭喜你猜对了!

五十一、变量的作用域

五十二、循环中断语句continue和break

#include "iostream"
using namespace std;
int main(){
    //continue 跳过本次循环,进入下一次的流程
    //break 直接停止所在循环的执行
    //通过for循环输出1-20之间的奇数
    for(int i = 1;i <= 20;i++){
        if(i % 2 == 0){
            continue; //跳过偶数
        }
        cout << i << "\t";
    }
    cout << endl;
    cout << "----------------" << endl;
    //通过for循环输出1-20之间的数字
    for(int i = 1; true; i++){
        cout << i << "\t";
        if(i == 20){
            break; //跳出循环
        }
    }
    cout << endl;
    cout << "----------------" << endl;
    //通过while循环输出1-20之间的偶数
    int j = 1;
    while(j <= 20){
        if(j % 2 == 0){
            j++;
            continue;
        }
        cout << j << "\t";
        j++;
    }
    cout << endl;
    cout << "----------------" << endl;
    for (int num = 1; num <=5 ; num++) {
        int j = 1;
        while(j <= 20){
            if(j % 2 == 0){
                j++;
                break;
            }
            cout << j << "\t";
            j++;
        }
    }
    return 0;
}

输出:

1	3	5	7	9	11	13	15	17	19	
----------------
1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16	17	18	19	20	
----------------
1	3	5	7	9	11	13	15	17	19	
----------------
1	1	1	1	1
#include "iostream"
#include "random"
using namespace std;


int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
int main(){
    //小明喜欢小美,计划每天都去表白,共表白30天
    int num1 = get_random_num(1, 10);
    int num2 = get_random_num(1, 10);
    cout << num1 << endl; //愤怒值
    cout << num2 << endl;  // 不高兴值
    for (int i = 0; i < 30; i++) {
        if (num1 > 1){   //小美10%愤怒了
            cout << "第" << i + 1 << "天,小明去表白了" << endl;
            cout << "送花、说喜欢、邀请一起看电影" << endl;
        }else{
            cout << "第" << i + 1 << "天,小明表白失败了" << endl;
            break;
        }
        if(num2 <= 5 ){
            cout << "今天表白结束,第二天继续吧!" << endl;
            continue;
        }
    }
    return 0;
}

五十三、循环综合案例——发工资

#include "iostream"
#include "random"
using namespace std;
int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
int main(){
    int money = 10000; //定义一个变量,记录金额
    for(int id = 1; id <= 20; id++){ //for循环进入发工资流程
        //如果工资发完了,结束发工资
        if(money <= 0){
            cout << "发工资结束" << endl;
            break;
        }
        //随机得到绩效分
        int score = get_random_num(1, 10);
        if(score < 5){
            cout << "员工" << id << "绩效分:" << score << ",小于5分,未发工资" << endl;
            continue;
        }else{
            //发工资
            cout << "员工" << id << "绩效分" << score << ",发工资1000,当前余额:" << money-1000 << "元。" <<endl;
            money -= 1000;
        }
        }
    return 0;
}

输出:

员工1绩效分:3,小于5分,未发工资
员工2绩效分6,发工资1000,当前余额:9000元。
员工3绩效分10,发工资1000,当前余额:8000元。
员工4绩效分5,发工资1000,当前余额:7000元。
员工5绩效分5,发工资1000,当前余额:6000元。
员工6绩效分6,发工资1000,当前余额:5000元。
员工7绩效分10,发工资1000,当前余额:4000元。
员工8绩效分5,发工资1000,当前余额:3000元。
员工9绩效分9,发工资1000,当前余额:2000元。
员工10绩效分6,发工资1000,当前余额:1000元。
员工11绩效分9,发工资1000,当前余额:0元。
发工资结束

五十四、_goto语句

#include "iostream"
using namespace std;
int main(){
    a:
    cout << "a" << endl;


    b:
    cout << "b" << endl;


    goto d;


    c:
    cout << "c" << endl;


    d:
    cout << "d" << endl;


    int i = 1;
    loop:
    cout << i << endl;
    i++;
    if(i <= 10)
        goto loop;
    return 0;
}

输出:

a
b
d
1
2
3
4
5
6
7
8
9
10

五十五、数组的定义

#include "iostream"
using namespace std;


int main(){
    //11,22,33,44,55放入数组中
    int v[5]; //得到一个可以存放5个元素的整形数组


    //可以用下标索引访问每日一歌元素(格格),下标索引从0开始
    v[0] = 11;
    v[1] = 22;
    v[2] = 33;
    v[3] = 44;
    v[4] = 55;
    cout << "数组的第一个元素是:" << v[0] << endl;
    cout << "数组的第二个元素是:" << v[1] << endl;
    cout << "数组的第三个元素是:" << v[2] << endl;
    cout << "数组的第四个元素是:" << v[3] << endl;
    cout << "数组的第五个元素是:" << v[4] << endl;


    //数组声明和赋值的快速写法
    // 数组类型 数组名[] = {元素,...,...,...}
    int v2[] = {11,22,33,44,55};
    cout << "v2数组的第一个元素是:" << v2[0] << endl;
    cout << "v2数组的第二个元素是:" << v2[1] << endl;
    cout << "v2数组的第三个元素是:" << v2[2] << endl;
    cout << "v2数组的第四个元素是:" << v2[3] << endl;
    cout << "v2数组的第五个元素是:" << v2[4] << endl;
    return 0;
}

输出:

数组的第一个元素是:11
数组的第二个元素是:22
数组的第三个元素是:33
数组的第四个元素是:44
数组的第五个元素是:55
v2数组的第一个元素是:11
v2数组的第二个元素是:22
v2数组的第三个元素是:33
v2数组的第四个元素是:44
v2数组的第五个元素是:55

简单一点:

#include "iostream"
#include "random"
using namespace std;


int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
int main(){
    int random = get_random_num(1, 10);
    cout << "随机数是:" << random << endl;
    int guess[10];
    int count = 0;
    for(int i = 0; i < 10; i++){
            cout << "请输入你猜的10个数字:";
            cin >> guess[i];
        if(guess[i] == random){
            count++;
        }
    }
    cout << "猜对了" << count << "次!" << endl;
    return 0;
}

输出1:

随机数是:8
请输入你猜的10个数字:1
请输入你猜的10个数字:2
请输入你猜的10个数字:3
请输入你猜的10个数字:4
请输入你猜的10个数字:5
请输入你猜的10个数字:6
请输入你猜的10个数字:7
请输入你猜的10个数字:8
请输入你猜的10个数字:9
请输入你猜的10个数字:10
猜对了1次!

输出2:

随机数是:2
请输入你猜的10个数字:2
请输入你猜的10个数字:2
请输入你猜的10个数字:2
请输入你猜的10个数字:2
请输入你猜的10个数字:2
请输入你猜的10个数字:2
请输入你猜的10个数字:2
请输入你猜的10个数字:2
请输入你猜的10个数字:2
请输入你猜的10个数字:2
猜对了10次!

五十六、数组定义例题讲解

#include "iostream"
#include "random"
using namespace std;


int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
int main(){
    int random = get_random_num(1, 10); //获得随机数
    cout << "随机数是:" << random << endl;
    int guess[10]; //10个元素的int数组
    int count = 0;
    for(int i = 0; i < 10; i++){
        cout << "请输入你猜的10个数字(第" << i+1 << "个):";
        cin >> guess[i];
        if(guess[i] == random){
            count++;
        }
    }
    cout << "猜对了" << count << "次!" << endl;
    return 0;
}

输出1:

随机数是:6
请输入你猜的10个数字(第1个):1
请输入你猜的10个数字(第2个):2
请输入你猜的10个数字(第3个):3
请输入你猜的10个数字(第4个):4
请输入你猜的10个数字(第5个):5
请输入你猜的10个数字(第6个):6
请输入你猜的10个数字(第7个):7
请输入你猜的10个数字(第8个):8
请输入你猜的10个数字(第9个):9
请输入你猜的10个数字(第10个):10
猜对了1次!

输出2:

随机数是:1
请输入你猜的10个数字(第1个):1
请输入你猜的10个数字(第2个):1
请输入你猜的10个数字(第3个):1
请输入你猜的10个数字(第4个):1
请输入你猜的10个数字(第5个):1
请输入你猜的10个数字(第6个):1
请输入你猜的10个数字(第7个):1
请输入你猜的10个数字(第8个):1
请输入你猜的10个数字(第9个):1
请输入你猜的10个数字(第10个):1
猜对了10次!

五十七、数组的特点

五十八、数组遍历(高级for循环语法)

#include "iostream"
using namespace std;
int main(){
    int arr[] = {1,2,3,4,5};


    //while
    int i = 0; // 循环控制因子,从0开始
    while(i < sizeof(arr) / sizeof(arr[0])){
        cout << "while循环取出的内容:" << arr[i] << endl;
        i++;
    }


    //for
    for(int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++){
        cout << "for循环取出的内容:" << arr[i] << endl;
    }


    //高级for循环
    for(int element : arr){
        cout << "高级for循环取出的内容:" << element << endl;
    }
    return 0;
}

输出:

while循环取出的内容:1
while循环取出的内容:2
while循环取出的内容:3
while循环取出的内容:4
while循环取出的内容:5
for循环取出的内容:1
for循环取出的内容:2
for循环取出的内容:3
for循环取出的内容:4
for循环取出的内容:5
高级for循环取出的内容:1
高级for循环取出的内容:2
高级for循环取出的内容:3
高级for循环取出的内容:4
高级for循环取出的内容:5
#include "iostream"
#include "random"
using namespace std;
int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
int main(){
    int random_arr[10], random_num;
    for (int i = 0; i < 10; i++) {
        random_num = get_random_num(1, 100);
        random_arr[i] = random_num;
        //cout << random_num << endl;
    }
    cout << "随机数组为:" ;
    for(int i = 0; i < 10; i++){
        cout << random_arr[i] << ",";
    }
    for(int i = 0; i < 10; i++){
        for(int j = i + 1; j < 10; j++){
            if(random_arr[i] > random_arr[j]){
                int temp = random_arr[i];
                random_arr[i] = random_arr[j];
                random_arr[j] = temp;
            }
        }
    }
    cout << endl;
    cout << "排序后数组为:";
    for(int i = 0; i < 10; i++){
        cout << random_arr[i] << ",";
    }
    cout << endl;
    cout << "此随机数组中最小的元素为:" << random_arr[0] << endl;
    cout << "此随机数组中最大的元素为:" << random_arr[9] << endl;
    return 0;
}

输出1:

随机数组为:13,49,77,14,94,45,53,29,53,79,
排序后数组为:13,14,29,45,49,53,53,77,79,94,
此随机数组中最小的元素为:13
此随机数组中最大的元素为:94

输出2:

随机数组为:61,33,72,14,46,19,70,99,18,91,
排序后数组为:14,18,19,33,46,61,70,72,91,99,
此随机数组中最小的元素为:14
此随机数组中最大的元素为:99

每次输出都不一样。

五十九、字符数组

#include "iostream"
using namespace std;
int main(){
    "hello"; //底层就是字符数组,会额外添加一个\0作为最后一个元素,当作结束标记
    char s[] = "hello";
    cout << s[0] << endl;
    cout << s[1] << endl;
    cout << s[2] << endl;
    cout << s[3] << endl;
    cout << s[4] << endl;
    cout << s[5] << endl;


    cout << sizeof(s) << endl;


    for(char i: s){
        cout << i;
    }
    return 0;
}

输出:

h
e
l
l
o
 
6
hello 

六十、多维数组

#include "iostream"
using namespace std;
int main(){
    int v1[2][2]; //多维数组的长度不可省略
    v1[0][0] = 11;
    v1[0][1] = 22;
    v1[1][0] = 33;
    v1[1][1] = 44;
    cout << "v1数组的第二个元素内的第一个元素是:" << v1[1][0] << endl;


    int v2[2][2] = {{11,22},{33,44}};
    cout << "v2数组的第一个元素内的第二个元素是:" << v2[0][1] << endl;


    int v3[2][2][2];
    v3[0][0][0] = 111;
    v3[0][0][1] = 222;


    v3[0][1][0] = 333;
    v3[0][1][1] = 444;


    v3[1][0][0] = 555;
    v3[1][0][1] = 666;


    v3[1][1][0] = 777;
    v3[1][1][1] = 888;


    cout << "v3数组的第二个元素内的第二个元素内的第一个元素是:" << v3[1][1][0] << endl;


    int v4[2][2][2] =
            {
                {{111,222},{333,444}},
                {{555,666},{777,888}}
            };
    cout << "v4数组的第一个元素内的第二个元素内的第一个元素是:" << v4[0][1][0] << endl;
    return 0;
}

输出:

v1数组的第二个元素内的第一个元素是:33
v2数组的第一个元素内的第二个元素是:22
v3数组的第二个元素内的第二个元素内的第一个元素是:777
v4数组的第一个元素内的第二个元素内的第一个元素是:333

六十一、多维数组的遍历

#include "iostream"
using namespace std;
int main(){
    int v1[2][3] = {
            {1,2,3},
            {4,5,6}
    };


    for(int i = 0; i <sizeof(v1) / sizeof(v1[0]); i++){
        for(int j = 0; j < sizeof(v1[0]) / sizeof(v1[0][0]); j++){
            cout << v1[i][j] << " ";
        }
        cout << endl;
    }


    int v2[2][2][3] = {
            {{1,2,3},{4,5,6}},
            {{7,8,9},{10,11,12}}
    };


    for(int i = 0; i < sizeof(v2) / sizeof(v2[0]); i++){
        for(int j = 0; j < sizeof(v2[0]) / sizeof(v2[0][0]); j++){
            for(int k = 0; k < sizeof(v2[0][0]) / sizeof(v2[0][0][0]); k++){
                cout << v2[i][j][k] << " ";
            }
            cout << endl;
        }
    }
    return 0;
}

输出:

1 2 3 
4 5 6 
1 2 3 
4 5 6 
7 8 9 
10 11 12 
string names[] = {"Landon" , "Avery" , "Kamden" , "Bentley" , "Finnegan" , "Nash" , "Emmett" , "Greyson" , "Noah" , "Jace" ,
                  "Jaxton" , "Sawyer" , "Zachary" , "Eli" , "Keegan" , "Lincoln" , "Isaac" , "Asher" , "Declan" , "Thea" ,
                  "Levi" , "Dominic" ,  "Austin" , "Wyatt" , "Carter" , "Logan" , "Luke" , "Max" , "Ethan" , "Miles" ,
                  "Oliver" , "Hudson" , "Owen" , "William" , "Joshua" , "Benjamin" , "Henry" ,"Lucas" , "Alexander" , "Jackson" ,
                  "Mason" , "Grayson" , "Ryder" , "Elijah" , "Liam" , "Caleb" , "Thomas" , "Cooper" , "Hunter" , "Connor"};

这个题我不太会欸~呜呜呜

#include "iostream"
#include "random"
using namespace std;


int get_random_num(int min, int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());
    //定义一个均匀分布的证书范围
    uniform_int_distribution<> dis(min, max);
    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}
int main(){
    string names[] = {"Landon" , "Avery" , "Kamden" , "Bentley" , "Finnegan" , "Nash" , "Emmett" , "Greyson" , "Noah" , "Jace" ,
                      "Jaxton" , "Sawyer" , "Zachary" , "Eli" , "Keegan" , "Lincoln" , "Isaac" , "Asher" , "Declan" , "Thea" ,
                      "Levi" , "Dominic" ,  "Austin" , "Wyatt" , "Carter" , "Logan" , "Luke" , "Max" , "Ethan" , "Miles" ,
                      "Oliver" , "Hudson" , "Owen" , "William" , "Joshua" , "Benjamin" , "Henry" ,"Lucas" , "Alexander" , "Jackson" ,
                      "Mason" , "Grayson" , "Ryder" , "Elijah" , "Liam" , "Caleb" , "Thomas" , "Cooper" , "Hunter" , "Connor"};
    string info[2][2][5];
    for(int i = 0; i < sizeof(info) / sizeof(info[0]); i++){
        for(int j = 0; j < sizeof(info[0]) / sizeof(info[0][0]); j++){
            for(int k = 0; k < sizeof(info[0][0]) / sizeof(info[0][0][0]); k++){
                string major = i == 0 ? "物理" : "计算机";
                string class_name = j == 0 ? "一班" : "二班";
                int seat_number = k + 1;
                string name = names[get_random_num(0, sizeof(names) / sizeof(names[0])-1)];


                string msg = major + "专业," + class_name + "," + "座位号" + to_string(seat_number) + "的同学叫" + name;
                info[i][j][k] = msg;
            }
        }
    }
    cout << "信息准备完成,现在开始输出:" << endl;
    for(int i = 0; i < sizeof(info) / sizeof(info[0]); i++){
        for(int j = 0; j < sizeof(info[0]) / sizeof(info[0][0]); j++){
            for(int k = 0; k < sizeof(info[0][0]) / sizeof(info[0][0][0]); k++){
                cout << info[i][j][k] << endl;
            }
        }
    };
    return 0;
}

输出:

信息准备完成,现在开始输出:
物理专业,一班,座位号1的同学叫Luke
物理专业,一班,座位号2的同学叫Caleb
物理专业,一班,座位号3的同学叫Oliver
物理专业,一班,座位号4的同学叫Alexander
物理专业,一班,座位号5的同学叫Benjamin
物理专业,二班,座位号1的同学叫Avery
物理专业,二班,座位号2的同学叫Elijah
物理专业,二班,座位号3的同学叫Thea
物理专业,二班,座位号4的同学叫Thea
物理专业,二班,座位号5的同学叫Ethan
计算机专业,一班,座位号1的同学叫Benjamin
计算机专业,一班,座位号2的同学叫Logan
计算机专业,一班,座位号3的同学叫Owen
计算机专业,一班,座位号4的同学叫Lincoln
计算机专业,一班,座位号5的同学叫Lincoln
计算机专业,二班,座位号1的同学叫Hudson
计算机专业,二班,座位号2的同学叫Hudson
计算机专业,二班,座位号3的同学叫Sawyer
计算机专业,二班,座位号4的同学叫Declan
计算机专业,二班,座位号5的同学叫Nash

六十二、指针基础

#include "iostream"
using namespace std;
int main(){
    int num = 10; //标准的int类型变量,存放了一个int值 10
    int *p; //声明了一个p指针变量,这个指针变量中记录的地址(内存区域)存的是int
    //指针变量(如上的p变量),值用来记录内存地址
    p = &num; //将num变量的地址,赋予了p指针


    cout << "&num取地址的结果是:" << &num << endl;
    cout << "指针变量p中记录的地址是:" << p << endl;
    cout << "取指针变量记录地址中存放的数值是:" << *p << endl;
    cout << "---------------------" << endl;


    //直接展示对内存的操作
    *p = 20;
    cout << "直接对指针变量p中的地址进行修改,修改后的数值是:" << *p << endl;
    cout << "直接对num变量进行修改,修改后的数值是:" << num << endl;
    return 0;
}

输出:

&num取地址的结果是:0xdea97ff924
指针变量p中记录的地址是:0xdea97ff924
取指针变量记录地址中存放的数值是:10
---------------------
直接对指针变量p中的地址进行修改,修改后的数值是:20
直接对num变量进行修改,修改后的数值是:20

六十三、野指针和空指针——不是好东西

就好比,你到餐厅吃饭,你吃完了,你刚走,下一个人又继续坐下来吃你的残羹剩菜,这样肯定是不可以的,你肯定会说,老板收拾一下,换一份新的。

#include "iostream"
using namespace std;
int main(){
    int *p; //声明了一个指针变量p(p就被分配了8字大小的内存空间)


    *p = 10;
    cout << "hello" << endl;
    return 0;
}

输出:

进程已结束,退出代码为 -1073741819 (0xC0000005)

上面做法有安全隐患,指针为脏指针。应该把指针清空。

#include "iostream"
using namespace std;
int main(){
    //int *p; //声明了一个指针变量p(p就被分配了8字大小的内存空间)
    int *p1 = NULL; //将指针标记为空
    int *p2 = nullptr; //将指针标记为空


    *p1 = 10;
    *p2 = 20;
    cout << "hello" << endl;
    return 0;
}

输出:

进程已结束,退出代码为 -1073741819 (0xC0000005)

六十三、指针运算

#include "iostream"
using namespace std;
int main(){
    int num = 10;
    int *p = &num;


    cout << "指针变量p  中记录的地址是:" << p << endl;
    p++; // int 类型占4个字节,所以指针p+1,就是指针p指向的内存地址加上4个字节
    cout << "指针变量p+1中记录的地址是:" << p << endl;
    cout << "---------------------------" << endl;


    double num2 = 10;
    double *p2 = &num2;
    cout << "指针变量p2  中记录的地址是:" << p2 << endl;
    p2++; // double 类型占8个字节,所以指针p2+1,就是指针p2指向的内存地址加上8个字节
    cout << "指针变量p2+1中记录的地址是:" << p2 << endl;
    p2 += 4; // double 类型占8个字节,所以指针p2+4,就是指针p2指向的内存地址加上4*8个字节
    cout << "指针变量p2+4中记录的地址是:" << p2 << endl;
    //地址为十六进制写法
    return 0;
}

输出:

指针变量p  中记录的地址是:0xfde1fffaec
指针变量p+1中记录的地址是:0xfde1fffaf0
---------------------------
指针变量p2  中记录的地址是:0xfde1fffae0
指针变量p2+1中记录的地址是:0xfde1fffae8
指针变量p2+4中记录的地址是:0xfde1fffb08

0xb08-0xae8=20,再换为十进制为:32

#include "iostream"
using namespace std;
int main(){
    int v[] = {1,2,3,4,5}; // 内存连续排列,每个元素的地址差是4字节(int)
    int *vp = v; //v默认记录v数组0下标的地址
    cout << "数组的第一个元素是:" << *vp << endl;
    cout << "数组的第一个元素是:" << v[0] << endl;
    cout << "数组的第二个元素是:" << *(vp+1) << endl; // 内存地址加4字节
    cout << "数组的第二个元素是:" << v[1] << endl;
    cout << "数组的第三个元素是:" << *(vp+2) << endl; // 内存地址加4字节
    cout << "数组的第三个元素是:" << v[2] << endl;
    *(vp+2) = 6;//使用地址操作对数组进行修改
    cout << "数组的第三个元素是:" << v[2] << endl;
    return 0;
}

输出:

数组的第一个元素是:1
数组的第一个元素是:1
数组的第二个元素是:2
数组的第二个元素是:2
数组的第三个元素是:3
数组的第三个元素是:3
数组的第三个元素是:6
#include "iostream"
using namespace std;
int main(){
    int v1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    char v2[] = {'a', 'b', 'c', 'd', 'e'};
    int *v1p = v1;
    char *v2p = v2;
    for(int i = 0; i < 10; i++){
        cout << *v1p << endl;
        v1p++;
    }
    for(int j = 0; j < 5; j++){
        cout << *v2p << endl;
        v2p++;
    }
    return 0;
}

输出:

1
2
3
4
5
6
7
8
9
10
a
b
c
d
e

六十四、动态内存管理

#include "iostream"
using namespace std;
int main(){
    int *p = new int;
    *p = 10;
    cout << "new申请的4字节空间内,存放的是:" << *p << endl;
    delete p;


    //int num = 10;
    //cout << num << endl;
    //delete &num;


    int *p_arr = new int[5]; //申请5元素可以存放的int类型的数组空间
    //p_arr的地址,就是数组空间的内存区域的开头(第一个元素的位置)
    p_arr[0] = 10; //等同于*p_arr = 10;
    p_arr[1] = 20; //等同于*(p_arr+1) = 10;
    p_arr[2] = 30;
    p_arr[3] = 40;
    p_arr[4] = 50;
    cout << "数组中第一个元素是:" << p_arr[0] << endl;
    cout << "数组中第二个元素是:" << p_arr[1] << endl;
    cout << "数组中第三个元素是:" << p_arr[2] << endl;
    cout << "数组中第四个元素是:" << p_arr[3] << endl;
    cout << "数组中第五个元素是:" << p_arr[4] << endl;
    delete[] p_arr;
    return 0;
}

输出:

new申请的4字节空间内,存放的是:10
数组中第一个元素是:10
数组中第二个元素是:20
数组中第三个元素是:30
数组中第四个元素是:40
数组中第五个元素是:50

With AI:

#include "iostream"
using namespace std;
int main(){
    int *p_arr = new int[10];
    for(int i = 0; i < 10; i++){
        p_arr[i] = i;
    }
    for(int i = 0; i < 10; i++){
        cout << p_arr[i] << endl;
    }
    delete[] p_arr;
    return 0;
}

输出:

0
1
2
3
4
5
6
7
8
9

六十五、数组元素的移除

#include "iostream"
using namespace std;
int main(){
    int *pArr = new int[5]{1, 3, 5, 7, 9};//示例数组
    for(int i = 0; i < 5; i++){
        cout << "老数组的元素是:" << pArr[i] << endl;
    }
    cout << "--------------------" << endl;
    //创建一个新的数组,将需要保留的复制到新数组中
    int *pNewArr = new int[4];
    //循环去遍历老的数组,将需要的元素放入新的数组中(不要的要跳过)
    for(int i = 0; i < 5; i++){
        if(i == 2){
            continue;
        }
        if(i > 2){
            pNewArr[i - 1] = pArr[i];
        } else{
            pNewArr[i] = pArr[i];
        }
    }
    delete []pArr;//可选:释放老数组
    pArr = pNewArr;//可选,将新数组的地址赋给老数组
    for(int i = 0; i < 4; i++){
        cout << "新数组的元素是:" << pNewArr[i] << endl;
    }
    return 0;
}

输出:

老数组的元素是:1
老数组的元素是:3
老数组的元素是:5
老数组的元素是:7
老数组的元素是:9
--------------------
新数组的元素是:1
新数组的元素是:3
新数组的元素是:7
新数组的元素是:9

3和66干掉,参照上面的例子写的

#include "iostream"
using namespace std;
int main(){
    int *pArr = new int[10] {3,5,1,11,99,66,22,2,8,6};
    //3和66干掉
    cout << "老元素是:";
    for(int i = 0; i < 10; i++){
        cout << pArr[i] << " ";
    }
    int *pNewArr = new int[8];
    for(int i = 0; i < 10; i++){
        if(i == 0 || i == 5){
            continue;
        }
        if(i > 5){
            pNewArr[i-2] = pArr[i];
        } else if (0 < i < 5){
            pNewArr[i-1] = pArr[i];
        } else{
            pNewArr[i] = pArr[i];
        }
        pNewArr[i] = pArr[i];
    }
    delete []pArr;
    pArr = pNewArr;
    cout << endl << "新元素是:";
    for(int i = 0; i < 8; i++){
        cout << pNewArr[i] << " ";
    }
    return 0;
}

输出:

老元素是:3 5 1 11 99 66 22 2 8 6 
新元素是:5 1 11 99 22 2 8 6 

讲解:

每跳过一个元素,offset就+1。

#include "iostream"
using namespace std;
int main(){
    int *pArr = new int[10] {3,5,1,11,99,66,22,2,8,6};
    //3和66干掉
    cout << "老元素是:";
    for(int i = 0; i < 10; i++){
        cout << pArr[i] << " ";
    }
    int *pNewArr = new int[8];
    int offset = 0;//新数组的偏移量
    for(int i = 0; i < 10; i++){//for循环遍历,将需要的元素一个个放入新数组中
        if(i == 0 || i == 5){ //这两个元素是不要的
            offset++; //每跳过一个不要的元素,offset+1,可以让后续的元素减去offset得到准确的新数组的下标
            continue;
        }
        pNewArr[i-offset] = pArr[i];
    }
    delete[] pArr;
    pArr = pNewArr; //可选
    cout << endl << "新元素是:";
    for(int i = 0; i < 8; i++){
        cout << pNewArr[i] << " ";
    }
    return 0;
}

输出:

老元素是:3 5 1 11 99 66 22 2 8 6 
新元素是:5 1 11 99 22 2 8 6 

六十六、数组元素的插入

#include "iostream"
using namespace std;
int main(){
    int *pArr = new int[5] {1,3,5,7,9};
    //在下标1和3插入数字11和66
    cout << "老元素是:";
    for(int i = 0; i < 5; i++){
        cout << pArr[i] << " ";
    }
    int *pNewArr = new int[7];
    int offset = 0;//新数组的偏移量
    for(int i = 0; i < 7; i++){//循环数组,挨个进行元素填充(非掺入的位置填充老数组的元素,插入位置填充新数组元素)
        if(i == 1){ //下标走到了1,应当插入11
            pNewArr[i] = 11;
            offset++;
            continue;
        }else if(i == 3){//下标走到了3,应当插入11
            pNewArr[i] = 66;
            offset++;
            continue;
        }
        //不是插入位置,从老数组中提取元素放入新数组中
        //公式:老数组的元素下标 + offset = 新数组的元素下标
        //当前循环的i是新数组的下标
        pNewArr[i] = pArr[i - offset];
    }
    delete[] pArr;
    pArr = pNewArr; //可选
    cout << endl << "新元素是:";
    for(int i = 0; i < 7; i++){
        cout << pNewArr[i] << " ";
    }
    return 0;
}

输出:

老元素是:1 3 5 7 9 
新元素是:1 11 3 66 5 7 9 

六十七、指针悬挂

#include "iostream"
using namespace std;
int main(){
    int *p1 = new int;
    *p1 = 10;
    int *p2 = p1; // 指针之间的相互赋值


    cout << "p1指针指向的内存区域的值是:" << *p1 << endl;
    delete p1;
    cout << "p2指针指向的内存区域的值是:" << *p2 << endl;//p2为悬挂指针
    return 0;
}

输出1:

p1指针指向的内存区域的值是:10
p2指针指向的内存区域的值是:-1113231200

输出2:

p1指针指向的内存区域的值是:10
p2指针指向的内存区域的值是:871919776

每刷新一下,值都不一样。

六十八、常量指针

#include "iostream"
using namespace std;
int main(){
    // 1、指向const(常量)的指针,指向可变,数据不可变
    int num1 = 10, num2 = 100;
    const int *p = &num1;
    cout << "指针p当前指向的数据是:" << *p << endl;
    //*p = 20;
    p = &num2;
    cout << "指针p当前指向的数据是:" << *p << endl;
    cout << "-----------------------" << endl;


    // 2、const指针,指向不可变,数据可变
    int num3 = 10, num4 = 100;
    int *const p1 = &num3;
    cout << "指针p1当前指向的数据是:" << *p1 << endl;
    *p1 = 20;
    //p1 = &num2;
    cout << "指针p1当前指向的数据是:" << *p1 << endl;
    cout << "-----------------------" << endl;


    //3、指向const的const指针,指向和数据都不可变
    int num5 = 10, num6 = 100;
    const int *const p2 = &num5;
    cout << "指针p2当前指向的数据是:" << *p2 << endl;
    //*p2 = 20;
    //p2 = &num2;
    cout << "指针p2当前指向的数据是:" << *p2 << endl;
    return 0;
}

输出:

指针p当前指向的数据是:10
指针p当前指向的数据是:100
-----------------------
指针p1当前指向的数据是:10
指针p1当前指向的数据是:20
-----------------------
指针p2当前指向的数据是:10
指针p2当前指向的数据是:10

六十九、数组和指针综合案例

先找到所有元素中的最小值,然后和第一个元素交换;接着再在剩下的元素中寻找最小值,然后和第二个元素交换,依次执行。寻找数组长度减一次的最小值即可,因为最后一个元素不需要换位。

#include "iostream"
using namespace std;
int main()
{
    int *pArr = new int[10] {3, 5, 1, 11, 99, 66, 22, 2, 8, 6};
    cout << "原数组为:";
    for (int i = 0; i < 10; i++)
    {
        cout << pArr[i] << " ";
    }
    for (int i = 0; i < 9; i++)
    {
        for(int j = i; j < 10; j++){
            if(pArr[i] > pArr[j]){
                int temp = pArr[i];
                pArr[i] = pArr[j];
                pArr[j] = temp;
            }
        }
    }
    cout << endl;
    cout << "新数组为:";
    for (int i = 0; i < 10; i++)
    {
        cout << pArr[i] << " ";
    }
    return 0;
}

输出:

原数组为:3 5 1 11 99 66 22 2 8 6 
新数组为:1 2 3 5 6 8 11 22 66 99 
#include "iostream"
using namespace std;
int main()
{
    int *pArr = new int[10] {3, 5, 1, 11, 99, 66, 22, 2, 8, 6};
    cout << "原数组为:";
    for (int i = 0; i < 10; i++)
    {
        cout << pArr[i] << " ";
    }
    for (int i = 0; i < 9; i++)
    {
        for(int j = i; j < 10; j++){
            if(pArr[i] <= pArr[j]){
                int temp = pArr[i];
                pArr[i] = pArr[j];
                pArr[j] = temp;
            }
        }
    }
    cout << endl;
    cout << "新数组为:";
    for (int i = 0; i < 10; i++)
    {
        cout << pArr[i] << " ";
    }
    return 0;
}

输出:

原数组为:3 5 1 11 99 66 22 2 8 6 
新数组为:99 66 22 11 8 6 5 3 2 1 

七十、结构体的基本应用

#include "iostream"
using namespace std;
int main()
{
    struct Student{  //新的数据类型
        string name; //成员1 姓名
        int age;     //成员2 年龄
        string gender;//成员3 性别
    };


    //结构体变量的声明,可以在前面带上struct关键字(可以省略不不写)
    //建议写上,可以清晰的知道变量是自定义结构体类型
    struct Student stu1;
    stu1 = {"周杰伦",11,"男"};
    //cout << stu1 << endl; //结构体变量是一个整体的包装,无法直接cout输出
    //需要访问它的每一个成员进行输出,访问语法:结构体变量。成员名称
    cout << stu1.name << endl;
    cout << stu1.age << endl;
    cout << stu1.gender << endl;
    cout << "------------------------------------------------" << endl;
    struct Student stu2 = {"林俊杰",11,"男"};
    cout << "二号学生的姓名是:" << stu2.name << endl;
    cout << "二号学生的年龄是:" << stu2.age << endl;
    cout << "二号学生的性别是:" << stu2.gender << endl;
    return 0;
}

输出:

周杰伦
11
男
------------------------------------------------
二号学生的姓名是:林俊杰
二号学生的年龄是:11
二号学生的性别是:男
#include "iostream"
using namespace std;
int main()
{
    struct Student{
        string name;
        int age;
        string address;
    };
    int i = 1;
    struct Student stu;
    while (1){
        cout << "正在录入学生" << i << "的信息:" << endl;
        cout << "请输入学生姓名:";
        cin >> stu.name;
        cout << "请输入学生年龄:";
        cin >> stu.age;
        cout << "请输入学生地址:";
        cin >> stu.address;
        cout << "学生" << i << "信息录入完成。" << endl;
        cout << "学生" << i << "信息核对:" << "姓名:" << stu.name << ",年龄:" << stu.age << ",地址:" << stu.address << "。" << endl;
        i++;
    }
    return 0;
}

输出:

正在录入学生1的信息:
请输入学生姓名:小明
请输入学生年龄:11
请输入学生地址:珠海
学生1信息录入完成。
学生1信息核对:姓名:小明,年龄:11,地址:珠海。
正在录入学生2的信息:
请输入学生姓名:李佟勇
请输入学生年龄:22
请输入学生地址:杭州
学生2信息录入完成。
学生2信息核对:姓名:李佟勇,年龄:22,地址:杭州。
正在录入学生3的信息:
请输入学生姓名:胡杰
请输入学生年龄:29
请输入学生地址:绍兴
学生3信息录入完成。
学生3信息核对:姓名:胡杰,年龄:29,地址:绍兴。
正在录入学生4的信息:
请输入学生姓名:罗旭东
请输入学生年龄:30
请输入学生地址:绍兴
学生4信息录入完成。
学生4信息核对:姓名:罗旭东,年龄:30,地址:绍兴。
正在录入学生5的信息:
请输入学生姓名:
进程已结束,退出代码为 -1

以上代码使用了while(1),可以无限输入输出。

七十一、结构体成员的默认值

#include "iostream"
using namespace std;
int main()
{
    struct Student{
        string name; //成员1,姓名
        string major_code = "003032"; //成员2专业代码,拥有默认值003032
        int dormitory_num = 1;   // 成员3宿舍楼号,默认是1号楼
    };


    struct Student s1 = {"周杰伦"};
    struct Student s2 = {"林俊杰", "003001", 3};


    cout << "学生1的姓名:" << s1.name << endl;
    cout << "学生1的专业代码:" << s1.major_code << endl;
    cout << "学生1的宿舍楼号:" << s1.dormitory_num << endl;
    cout << endl;
    cout << "学生2的姓名:" << s2.name << endl;
    cout << "学生2的专业代码:" << s2.major_code << endl;
    cout << "学生2的宿舍楼号:" << s2.dormitory_num << endl;


    return 0;
}

输出:

学生1的姓名:周杰伦
学生1的专业代码:003032
学生1的宿舍楼号:1


学生2的姓名:林俊杰
学生2的专业代码:003001
学生2的宿舍楼号:3
#include "iostream"
using namespace std;
int main()
{
    struct Student{
        string name;
        int age = 11;
        string address;
    };
    for(int i = 1; i < 6; i++){
        struct Student stu;
        cout << "请输入第" << i << "个学生的姓名:";
        cin >> stu.name;
        cout << "请输入第" << i << "个学生的地址:";
        cin >> stu.address;
        cout << "姓名:" << stu.name << " 年龄:" << stu.age << " 地址:" << stu.address << endl;
    }
    return 0;
}

输出:

七十二、结构体数组

#include "iostream"
using namespace std;
int main()
{
    struct Student{
        string name;
        int age;
        string gender;
    };


    struct Student arr[3];
    arr[0] = {"周杰伦", 18, "男"};
    arr[1] = {"林俊杰", 18, "男"};
    arr[2] = {"蔡依林", 18, "女"};


    for(int i = 0; i < 3; i++){
        cout << "当前下标:" << i << "姓名是:" <<arr[i].name << endl;
        cout << "当前下标:" << i << "年龄是:" <<arr[i].age << endl;
        cout << "当前下标:" << i << "性别是:" <<arr[i].gender << endl;
        cout << endl;
    }
    cout << "-------------------------------" << endl;
    //数组声明赋值同步写法
    struct Student arr2[2] = {
        {"小明", 18, "男"},
        {"小红", 18, "男"},
    };
    for(int i = 0; i < 2; i++){
        cout << "当前下标:" << i << "姓名是:" <<arr2[i].name << endl;
        cout << "当前下标:" << i << "年龄是:" <<arr2[i].age << endl;
        cout << "当前下标:" << i << "性别是:" <<arr2[i].gender << endl;
        cout << endl;
    }
    return 0;
}

输出:

当前下标:0姓名是:周杰伦
当前下标:0年龄是:18
当前下标:0性别是:男


当前下标:1姓名是:林俊杰
当前下标:1年龄是:18
当前下标:1性别是:男


当前下标:2姓名是:蔡依林
当前下标:2年龄是:18
当前下标:2性别是:女


-------------------------------
当前下标:0姓名是:小明
当前下标:0年龄是:18
当前下标:0性别是:男


当前下标:1姓名是:小红
当前下标:1年龄是:18
当前下标:1性别是:男
#include "iostream"
using namespace std;
int main()
{
    struct Student{
        string name;
        int age;
        string address;
    };
    struct Student stu;
    for(int i = 1;i < 6;i++){
        cout << "正在录入第" << i << "个学生的信息:" << endl;
        cout << "请输入姓名:";
        cin >> stu.name;
        cout << "请输入年龄:";
        cin >> stu.age;
        cout << "请输入地址:";
        cin >> stu.address;
        cout << "学生" << i << "信息录入完成。" << endl;
        cout << "--------------------------------" << endl;
        cout << "学生" << i << "信息核对:姓名" << stu.name << ",年龄:" << stu.age << ",地址:" << stu.address << endl;
        cout << "--------------------------------" << endl;
    }
    return 0;
}

输出:

C:\Users\lty13\CLionProjects\untitled\duoshuchu_lianxi.exe
正在录入第1个学生的信息:
请输入姓名:小明
请输入年龄:11
请输入地址:北京
学生1信息录入完成。
--------------------------------
学生1信息核对:姓名小明,年龄:11,地址:北京
--------------------------------
正在录入第2个学生的信息:
请输入姓名:李华
请输入年龄:21
请输入地址:上海
学生2信息录入完成。
--------------------------------
学生2信息核对:姓名李华,年龄:21,地址:上海
--------------------------------
正在录入第3个学生的信息:
请输入姓名:小美
请输入年龄:23
请输入地址:珠海
学生3信息录入完成。
--------------------------------
学生3信息核对:姓名小美,年龄:23,地址:珠海
--------------------------------
正在录入第4个学生的信息:
请输入姓名:胡杰
请输入年龄:28
请输入地址:绍兴
学生4信息录入完成。
--------------------------------
学生4信息核对:姓名胡杰,年龄:28,地址:绍兴
--------------------------------
正在录入第5个学生的信息:
请输入姓名:罗旭东
请输入年龄:32
请输入地址:深圳
学生5信息录入完成。
--------------------------------
学生5信息核对:姓名罗旭东,年龄:32,地址:深圳
--------------------------------


进程已结束,退出代码为 0

七十三、结构体指针

#include "iostream"
using namespace std;
int main()
{
    struct Student{
        string name;
        int age;
        string gender;
    };
    //先创建一个标准的结构体对象(静态内存管理)
    struct Student stu = {"周杰伦",18,"男"};
    //创建结构体指针,指向结构体对象的地址
    struct Student *p = &stu;
    //通过结构体指针,访问结构体成员,要使用的符号是:->
    cout << "结构体中成员的name:" << p->name << endl;
    cout << "结构体中成员的age:" << p->age << endl;
    cout << "结构体中成员的gender:" << p->gender << endl;
    cout << "--------------------" << endl;


    //通过new操作符,申请结构体的空间
    struct Student *p2 = new Student {"林俊杰",18,"男"};
    cout << "结构体中成员的name:" << p2->name << endl;
    cout << "结构体中成员的age:" << p2->age << endl;
    cout << "结构体中成员的gender:" << p2->gender << endl;
    delete p2;
    return 0;
}

输出:

结构体中成员的name:周杰伦
结构体中成员的age:18
结构体中成员的gender:男
--------------------
结构体中成员的name:林俊杰
结构体中成员的age:18
结构体中成员的gender:男

七十四、结构体指针数组

#include "iostream"
using namespace std;
int main()
{
    struct Student{
        string name;
        int age = 11;
        string gender = "男";
    };
    struct Student arr1[3] = {{"周杰伦"}, {"林俊杰"}, {"王力宏"}};
    struct Student *p1 = arr1; // 数组的对象本质上就是地址(指向数组的第一个元素的位置)
    cout << "数组的第一个元素中记录的name是:" << p1->name << endl;
    cout << "数组的第一个元素中记录的name是:" << p1[0].name << endl;//和上面的输出一样
    cout << "数组的第二个元素中记录的name是:" << p1[1].name << endl;
    cout << "数组的第三个元素中记录的name是:" << p1[2].name << endl;


    //通过new操作符,自行申请结构体数组的空间,可以通过delete回收
    struct Student *p2 = new Student[3] {{"周杰伦"}, {"林俊杰"}, {"王力宏"}};
    cout << "数组2的第一个元素中记录的name是:" << p2[0].name << endl;//和上面的输出一样
    cout << "数组2的第二个元素中记录的name是:" << p2[1].name << endl;
    cout << "数组2的第三个元素中记录的name是:" << p2[2].name << endl;
    delete []p2;
    return 0;
}

输出:

数组的第一个元素中记录的name是:周杰伦
数组的第一个元素中记录的name是:周杰伦
数组的第二个元素中记录的name是:林俊杰
数组的第三个元素中记录的name是:王力宏
数组2的第一个元素中记录的name是:周杰伦
数组2的第二个元素中记录的name是:林俊杰
数组2的第三个元素中记录的name是:王力宏

With AI:

#include "iostream"
using namespace std;
int main()
{
    struct Student{
        string name;
        int age;
        string address;
    };
    struct Student *p = new Student[5];
    for(int i = 0; i < 5; i++){
        cout << "请输入第" << i+1 << "个学生的姓名:";
        cin >> p[i].name;
        cout << "请输入第" << i+1 << "个学生的年龄:";
        cin >> p[i].age;
        cout << "请输入第" << i+1 << "个学生的地址:";
        cin >> p[i].address;
        cout << endl;
    }
    cout << "---------------------------------" << endl;
    cout << "下面是校验信息:" << endl;
    for(int i = 0; i < 5; i++){
        cout << "第" << i+1 << "个学生的信息为:";
        cout << p[i].name << " " << p[i].age << " " << p[i].address << endl;
    }
    delete [] p;
    return 0;
}

输出:

请输入第1个学生的姓名:小明
请输入第1个学生的年龄:11
请输入第1个学生的地址:北京


请输入第2个学生的姓名:小美
请输入第2个学生的年龄:21
请输入第2个学生的地址:上海


请输入第3个学生的姓名:李华
请输入第3个学生的年龄:23
请输入第3个学生的地址:广州


请输入第4个学生的姓名:胡杰
请输入第4个学生的年龄:22
请输入第4个学生的地址:深圳


请输入第5个学生的姓名:罗旭东
请输入第5个学生的年龄:32
请输入第5个学生的地址:绍兴


---------------------------------
下面是校验信息:
第1个学生的信息为:小明 11 北京
第2个学生的信息为:小美 21 上海
第3个学生的信息为:李华 23 广州
第4个学生的信息为:胡杰 22 深圳
第5个学生的信息为:罗旭东 32 绍兴

七十五、函数的概念

七十六、函数的基础语法

#include "iostream"
using namespace std;


/* 返回值类型 函数名(参数1类型 参数1名称,参数2类型 参数2名称, ·.…
*函数体;
*return 返回值;
*需求:编写一个函数,接收2个int数字传入,返回两者中最大的数值
*/


int get_max(int a, int b)
{
    int max; //标记最大值
    max = a;
    if(b > max)
    {
        max = b;
    }
    return max;//对外提供最大值
}
int main()
{
    //函数的使用在main函数内
    //函数调用:函数名称(传入参数)
    int max = get_max(3,5);
    cout << "函数的结果是:" << max << endl;


    int max2 = get_max(11,6);
    cout << "函数的结果是:" << max2 << endl;
    return 0;
}

输出:

函数的结果是:5
函数的结果是:11
#include "iostream"
using namespace std;


int get_min(int a, int b, int c)
{
    int min = a;
    if (b < min)
        min = b;
    if (c < min)
        min = c;
    return min;
}
int main()
{
    int a, b, c;
    cout << "请输入要比较的三个数(输入一个数字后用回车确认):" << endl;
    cin >> a >> b >> c;
    cout << "最小的数是:" << get_min(a, b, c) << endl;
    return 0;
}

输出:

请输入要比较的三个数(输入一个数字后用回车确认):
55
921
888
最小的数是:55

七十七、无返回值函数和void类型

#include "iostream"
using namespace std;


void say_hello(string name)
{
    cout << name << "你好,我是黑马程序员!" << endl;
}
int main()
{
    say_hello("周杰伦");
    say_hello("刘德华");
    say_hello("张学友");
    return 0;
}

输出:

周杰伦你好,我是黑马程序员!
刘德华你好,我是黑马程序员!
张学友你好,我是黑马程序员!
#include "iostream"
using namespace std;


void love_xm(int count)
{
    for (int i = 0; i < count; i++)
    {
        cout << "小美,我第" << i + 1 << "次喜欢你!!!" << endl;
    }
}
int main()
{
    int count;
    cout << "请输入喜欢的次数:";
    cin >> count;
    love_xm(count);
    return 0;
}

输出:

请输入喜欢的次数:10
小美,我第1次喜欢你!!!
小美,我第2次喜欢你!!!
小美,我第3次喜欢你!!!
小美,我第4次喜欢你!!!
小美,我第5次喜欢你!!!
小美,我第6次喜欢你!!!
小美,我第7次喜欢你!!!
小美,我第8次喜欢你!!!
小美,我第9次喜欢你!!!
小美,我第10次喜欢你!!!

七十八、空参函数

#include "iostream"
using namespace std;


//功能:对小美说5次我喜欢你
void i_like_you() //()是需要写的
{
    for(int i = 0;i < 5;i++)
        cout << "小美,我喜欢你!!!" << endl;
}
int main()
{
    // 调用的时候()是需要写的
    i_like_you();
    return 0;
}

输出:

小美,我喜欢你!!!
小美,我喜欢你!!!
小美,我喜欢你!!!
小美,我喜欢你!!!
小美,我喜欢你!!!
#include "iostream"
using namespace std;


void self_introduction()
{
    cout << "我是黑马程序员,我的股票代码是:003032。" << endl;
    cout << "学IT就来黑马,我是曹老师,带你畅游C++。" << endl;
    cout << "作业由FreedaLi完成。" << endl;
}
int main()
{
    self_introduction();
    return 0;
}

输出:

我是黑马程序员,我的股票代码是:003032。
学IT就来黑马,我是曹老师,带你畅游C++。
作业由FreedaLi完成。

七十九、函数的嵌套调用

#include "iostream"
using namespace std;


void send_food()
{
    cout << "小美,我给你买了早餐!" << endl;
}


void send_flower()
{
    cout << "小美,我给你买了玫瑰花,你真好看!" << endl;
}


void say_love()
{
    cout << "小美,我很喜欢你!" << endl;
}


void watch_movie()
{
    cout << "小美,我们一起看电影吧!" << endl;
}


void i_like_you(int num)
{
    switch (num) {
        case 1:
            send_food();
            send_flower();
            say_love();
            break;
        case 2:
            send_flower();
            say_love();
            watch_movie();
            break;
        case 3:
            watch_movie();
            send_flower();
            say_love();
            break;
        default:
        cout << "今天不追求小美了,打球去!" << endl;
    }
}
int main()
{
    cout << "今天天气不错,执行方案3追求小美!" << endl;
    i_like_you(3);
    cout << "--------------------------" << endl;
    cout << "第二天,天气也不错,执行方案2" << endl;
    i_like_you(2);
    return 0;
}

输出:

今天天气不错,执行方案3追求小美!
小美,我们一起看电影吧!
小美,我给你买了玫瑰花,你真好看!
小美,我很喜欢你!
--------------------------
第二天,天气也不错,执行方案2
小美,我给你买了玫瑰花,你真好看!
小美,我很喜欢你!
小美,我们一起看电影吧!

没读太懂这个题目的意思是什么?

#include "iostream"
using namespace std;


int get_min(int a, int b)
{
    int min = a < b ? a : b;
    return min;
}


int get_max(int a, int b)
{
    int max = a > b ? a : b;
    return max;
}


int get_srt(int a, int b)
{
    struct Compare{
        int max;
        int min;
    };
    cout << "最大值是:" << get_max(a, b) << endl;
    cout << "最小值是:" << get_min(a, b) << endl;
}
int main()
{
    cout << "请输入两个数:" << endl;
    int a, b;
    cin >> a;
    cin >> b;
    get_srt(a, b);
    return 0;
}

输出:

请输入两个数:
5
6
最大值是:6
最小值是:5

讲解:

#include "iostream"
using namespace std;


int get_min(int a, int b)
{
    if(a < b){
        return a;
    }else{
        return b;
    }
}


int get_max(int a, int b)
{
    if(a > b){
        return a;
    }else{
        return b;
    }
}


struct MinAndMax
{
    int min;
    int max;
};


struct MinAndMax get_min_and_max(int a, int b)
{
    int min = get_min(a, b);
    int max = get_max(a, b);
    struct MinAndMax v = {min, max};
    return v;
}
int main()
{
    struct MinAndMax v = get_min_and_max(3, 5);
    cout << "结构体中的min:" << v.min << endl;
    cout << "结构体中的max:" << v.max << endl;
    return 0;
}

输出:

结构体中的min:3
结构体中的max:5

八十、函数的值传递和地址传递

#include "iostream"
using namespace std;


void switch_num(int a, int b)
{
    int temp = a;
    a = b;
    b = temp;
}


void switch_num_pointer(int *a, int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}


int main()
{
    int x = 1;
    int y = 2;
    switch_num(x, y);//值传递,函数内对形参的修改,不会影响实参
    cout << "x=" << x << endl;
    cout << "y=" << y << endl;
    cout << "-------------------------" << endl;
    switch_num_pointer(&x, &y); //地址传递,函数内对形参的修改,会影响实参
    cout << "x=" << x << endl;
    cout << "y=" << y << endl;
    return 0;
}

输出:

x=1
y=2
-------------------------
x=2
y=1

八十一、函数综合案例

#include "iostream"
using namespace std;


void query_money(const string * const name, int * const money) //查询余额
{
    cout << "---------------查询余额---------------" << endl;
    cout << *name << "您好,您的余额剩余:" << *money << "元" << endl;
}


void save_money(const string * const name, int * const money, int num) //存钱
{
    cout << "---------------存钱---------------" << endl;
    cout << *name << "您好,您存入" << num << "元成功" << endl;
    *money += num; //余额打赏变更
    cout << *name << "您好,您的余额剩余:" << *money << "元" << endl;
}


void get_money(const string * const name, int * const money, int num) //取钱
{
    cout << "---------------取款---------------" << endl;
    cout << *name << "您好,您取款" << num << "元成功" << endl;
    *money -= num; //余额打赏变更
    cout << *name << "您好,您的余额剩余:" << *money << "元" << endl;
}


int menu(const string * const name)  //主菜单
{
    cout << "---------------主菜单---------------" << endl;
    cout << *name << ",您好,欢迎来到黑马银行ATM,请选择操作:" << endl;
    cout << "查询余额\t[输入1]" << endl;
    cout << "存款\t[输入2]" << endl;
    cout << "取款\t[输入3]" << endl;
    cout << "退出\t[输入4]" << endl;
    cout << "请输入您的选择:";
    int num;
    cin >> num;
    return num;
}
int main()
{
    //启动要求输入用户姓名
    string name;
    cout << "请输入您的用户名:";
    cin >> name;


    //初始化用户余额
    int *money = new int;
    *money = 500000;//余额默认500000


    //主循环
    bool is_run = true;
    while (is_run)
    {
        int select_num = menu(&name);
        switch (select_num)
        {
        case 1: // 查询余额
            query_money(&name, money);
            break;
        case 2: // 存钱
            int num_for_save_money;
            cout << "请输入您要存的金额:";
            cin >> num_for_save_money;
            save_money(&name, money, num_for_save_money);
            break;
        case 3:
            int num_for_get_money;
            cout << "请输入您要取的金额:";
            cin >> num_for_get_money;
            get_money(&name, money, num_for_get_money);
            break;
        default:
            cout << "程序退出!" << endl;
            is_run = false;
        }
    }
    delete money;
    return 0;
}

输出:

请输入您的用户名:周杰伦
---------------主菜单---------------
周杰伦,您好,欢迎来到黑马银行ATM,请选择操作:
查询余额	[输入1]
存款	[输入2]
取款	[输入3]
退出	[输入4]
请输入您的选择:1
---------------查询余额---------------
周杰伦您好,您的余额剩余:500000元
---------------主菜单---------------
周杰伦,您好,欢迎来到黑马银行ATM,请选择操作:
查询余额	[输入1]
存款	[输入2]
取款	[输入3]
退出	[输入4]
请输入您的选择:2
请输入您要存的金额:50000
---------------存钱---------------
周杰伦您好,您存入50000元成功
周杰伦您好,您的余额剩余:550000元
---------------主菜单---------------
周杰伦,您好,欢迎来到黑马银行ATM,请选择操作:
查询余额	[输入1]
存款	[输入2]
取款	[输入3]
退出	[输入4]
请输入您的选择:3
请输入您要取的金额:1000
---------------取款---------------
周杰伦您好,您取款1000元成功
周杰伦您好,您的余额剩余:549000元
---------------主菜单---------------
周杰伦,您好,欢迎来到黑马银行ATM,请选择操作:
查询余额	[输入1]
存款	[输入2]
取款	[输入3]
退出	[输入4]
请输入您的选择:4
程序退出!

八十二、函数传入数组

#include "iostream"
using namespace std;


//void func1(int arr[1])
//{
//    cout << "在func1函数内统计的数组总大小:" << sizeof(arr) << endl;
//}


void func(int arr[],int length)
{
    for(int i = 0; i < length; i++){
        cout << arr[i] << endl;
    }
}


int main()
{
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    //cout << "在main函数内统计的数组总大小:" << sizeof(arr) << endl;
    func(arr,10);
    return 0;
}

输出:

1
2
3
4
5
6
7
8
9
10

有点懵:听听讲解吧

#include "iostream"
using namespace std;


void sort_arr(int arr[], int length)
{
    int min, min_index;
    for (int i = 0; i < length - 1; i++)
    {
        for (int j = i; j < length; j++)
        {
            //本次内层循环的第一个元素直接放入min和记录min_index
            if (j == 1)
            {
                min = arr[j];
                min_index = j;
            }
            //非本次内层循环的第一个元素,就要比较大小
            else if (arr[j] < min)
            {
                min = arr[j];
                min_index = j;
            }
        }
        int temp = arr[i];
        arr[i] = arr[min_index];
        arr[min_index] = temp;
    }
}


int main()
{
    int arr[] = {11,33,55,99,66,77,44,22,5,3};
    cout << "排序前:";
    for (int i = 0; i < 10; i++)
    {
        cout << arr[i] << " ";
    }
    sort_arr(arr,10);
    cout << endl << "排序后:";
    for (int i = 0; i < 10; i++)
    {
        cout << arr[i] << " ";
    }
    return 0;
}

输出:

排序前:11 33 55 99 66 77 44 22 5 3 
排序后:3 5 33 55 99 66 77 44 22 11

八十三、引用的基本概念

#include "iostream"
using namespace std;


int main()
{
    int a = 10;
    int &b = a;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    a = 20;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    b = 30;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;


    double d1 = 3.14;
    double &d2 = d1;
    cout << "d1 = " << d1 << endl;
    cout << "d2 = " << d2 << endl;
    d1 = 5.67;
    cout << "d1 = " << d1 << endl;
    cout << "d2 = " << d2 << endl;
    return 0;
}

输出:

a = 10
b = 10
a = 20
b = 20
a = 30
b = 30
d1 = 3.14
d2 = 3.14
d1 = 5.67
d2 = 5.67

八十四、引用传参

#include "iostream"
using namespace std;


void switch_num1(int a, int b) //值传递
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}


void switch_num2(int *a, int *b) //地址传递
{
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}


void switch_num3(int &a, int &b) //引用传递
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}


int main()
{
    int x = 1, y = 2;
    switch_num1(x, y);
    cout << "x = " << x << endl;
    cout << "y = " << y << endl;
    cout << "------------------" << endl;
    switch_num2(&x, &y);
    cout << "x = " << x << endl;
    cout << "y = " << y << endl;
    cout << "------------------" << endl;
    switch_num3(x, y);
    cout << "x = " << x << endl;
    cout << "y = " << y << endl;
    return 0;
}

输出:

x = 1
y = 2
------------------
x = 2
y = 1
------------------
x = 1
y = 2

八十五、函数返回指针及局部变量的作用域问题

#include "iostream"
using namespace std;


//返回指针的函数,就在函数返回值声明和函数名之间添加*即可
int * add(int a, int b)
{
    int *sum = new int;
    *sum = a + b;
    return sum;
}


int main()
{
    int *result1 = add(1, 2);
    cout << *result1 << endl;
    delete result1;
    return 0;
}

输出:

3

八十六、static关键字

#include "iostream"
using namespace std;


//返回指针的函数,就在函数返回值声明和函数名之间添加*即可
int * add(int a, int b)
{
    static int sum; //静态变量,比较浪费内存
    sum = a + b;
    return &sum;
}


int main()
{
    int *result1 = add(1, 2);
    cout << *result1 << endl;
    return 0;
}

输出:

3

static:

#include "iostream"
using namespace std;


//返回指针的函数,就在函数返回值声明和函数名之间添加*即可
int * max_num(int arr[],int n)
{
    static int max = arr[0];
    for(int i = 1;i < n;i++)
    {
        if(arr[i]>max)
        {
            max = arr[i];
        }
    }
    return &max;
}


int main()
{
    int n;
    cout << "请输入要比较几个数字:" << endl;
    cin >> n;
    cout << "请输入数字:" << endl;
    int arr[n];
    for(int i = 0;i < n;i++)
    {
        cin >> arr[i];
    }
    cout << "最大的数字是:" << *max_num(arr,n) << endl;
    return 0;
}

输出:

请输入要比较几个数字:
5
请输入数字:
159
249
139
345
852
最大的数字是:852

new和delete不太会写。

八十七、函数返回数组

#include "iostream"
using namespace std;


//返回指针的函数,就在函数返回值声明和函数名之间添加*即可
int * func1()
{
    int arr[] = {1,2,3};//局部变量数组
    return arr;
}


int main()
{
    int *p1 = func1();
    for(int i = 0;i < 3;i++)
    {
        cout << p1[i] << endl;
    }
    return 0;
}

输出:

C:\Users\lty13\CLionProjects\untitled\duoshuchu_lianxi.exe


进程已结束,退出代码为 -1073741819 (0xC0000005)

static:

#include "iostream"
using namespace std;


//返回指针的函数,就在函数返回值声明和函数名之间添加*即可
int * func1()
{
    static int arr[] = {1,2,3};//static 关键字,表示函数返回的数组是静态的,不会被释放
    return arr;
}


int main()
{
    int *p1 = func1();
    for(int i = 0;i < 3;i++)
    {
        cout << p1[i] << endl;
    }
    return 0;
}

输出:

1
2
3

new&deldete:

#include "iostream"
using namespace std;


//返回指针的函数,就在函数返回值声明和函数名之间添加*即可
int * func1()
{
    int *arr = new int[3]{1,2,3};//static 关键字,表示函数返回的数组是静态的,不会被释放
    return arr;
}


int main()
{
    int *p1 = func1();
    for(int i = 0;i < 3;i++)
    {
        cout << p1[i] << endl;
    }
    delete [] p1;
    return 0;
}

输出:

1
2
3

函数外声明:

#include "iostream"
using namespace std;


int arr[3] = {1,2,3};
int * func1()
{
    return arr;
}


int main()
{
    int *p1 = func1();
    for(int i = 0;i < 3;i++)
    {
        cout << p1[i] << endl;
    }
    return 0;
}

输出:

1
2
3
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇