黑马程序员《C++从入门到精通》--学习笔记
- 第一部分:基础入门知识(1-70)
- 01、课程安排
- 02、C++书写helloworld
- 03、程序的注释
- 04、变量
- 05、常量
- 06、关键字
- 07、标识符命名规则
- 08、数据类型-整型
- 09、数据类型-sizeof关键字
- 10、数据类型-实型(浮点型)
- 11、数据类型-字符型
- 12、数据类型-转义字符
- 13、数据类型-字符串类型
- 14、数据类型-布尔类型bool
- 15、数据类型-数据的输入
- 16、算数运算符-加减乘除
- 17、算术运算符-取模
- 18、算数运算符-递增递减
- 19、赋值运算符
- 20、比较运算符
- 21、逻辑运算符-非、与、或
- 24、选择结构-单行if语句
- 25、选择结构-多行if语句
- 26、选择结构-多条件if语句
- 27、选择结构-嵌套if语句
- 28、程序流程结构-选择结构案例
- 29、三目运算符
- 30、选择结构-switch语句
- 31、循环结构-while语句
- 32、猜数字案例
- 33、循环结构-dowhile语句
- 34、水仙花案例
- 35、循环结构-for语句
- 36、敲桌子案例
- 37、嵌套循环-乘法口诀表
- 39、跳转语句-break、continue、goto
- 46、数组-冒泡排序
- 49、数组-考试成绩统计案例
- 50、函数-定义
- 51、函数-函数调用
- 53、函数样式
- 54、函数的声明
- 55、分文件的编写
- 56、指针-定义和使用
- 57、指针-所占内存空间
- 58、指针-空指针、野指针
- 60、指针-const修饰指针
- 62、指针和函数
- 63、指针、数组、函数--冒泡排序
- 64、结构体-结构体基本概念
- 65、结构体-结构体数组
- 66、结构体-结构体指针
- 68、结构体-结构体做函数参数
- 70、结构体-结构体案例
- 第二部分:通讯录管理系统(01-12)
- 第三部分:C++进阶知识(01-64)
- 第四部分:职工管理系统(01-20)
- 第五部分:C++核心难点知识(01-97)
- 第六部分:演讲比赛流程管理系统(01-18)
- 第七部分:机房预约系统(01-18)
- 第八部分:bug与思考
第一部分:基础入门知识(1-70)
01、课程安排
第一、C++基础入门
第二、C++核心编程
第三、C++提高编程
02、C++书写helloworld
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
int main()
{
cout << "hello world" << endl;
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
03、程序的注释
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
/*
常亮的定义方式
1、#define 宏常量
*/
#define day 7
2、重点知识
单行注释://
多行注释:/、、、、、/
04、变量
1、本节程序
2、重点知识
05、常量
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
/*
常亮的定义方式
1、#define 宏常量
*/
#define day 7
int main()
{
cout << "一周有几天:" << day << endl; //输出helloWord
const int month = 12;
cout << "一年有几个月:" << month << endl;
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
2.1、#define 宏常量
2.2、const修饰变量
06、关键字
1、本节程序
2、重点知识
链接: https://www.runoob.com/w3cnote/cpp-keyword-intro.html
关键字:
07、标识符命名规则
1、本节程序
2、重点知识
2.1、不能是关键字
2.2、由字母、数字和下划线组成
2.3、第一个字符只能是字母或下划线
2.4、区分大小写
08、数据类型-整型
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
int main()
{
//整形
//短整型
short num1 = 10;
//整形
int num2 = 20;
//长整形
long num3 = 30;
//长长整形
long long num4 = 40;
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
cout << "num3 = " << num3 << endl;
cout << "num4 = " << num4 << endl;
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
整形变量表示的是整形类型的数据
09、数据类型-sizeof关键字
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
int main()
{
//整形
//短整型,占用内存空间2个字节
short num1 = 10;
//整形,占用内存空间4个字节
int num2 = 20;
//长整形,占用内存空间4个字节
long num3 = 30;
//长长整形,占用内存空间8个字节
long long num4 = 40;
cout << "short占用的内存空间:" << sizeof(short) << endl;
cout << "int占用的内存空间:" << sizeof(int) << endl;
cout << "long占用的内存空间:" << sizeof(long) << endl;
cout << "long long占用的内存空间:" << sizeof(long long) << endl;
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
10、数据类型-实型(浮点型)
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
int main()
{
//默认情况下输出小数显示6位小数
float f1 = 3.1415926f;
double d1 = 3.1415926;
cout << "f1= " << f1 << endl;
cout << "d1= " << d1 << endl;
cout << "float占用的内存空间:" << sizeof(float) << endl;
cout << "double占用的内存空间:" << sizeof(double) << endl;
//科学计数法
float f2 = 3e2; //3*10^2
cout << "f2= " << f2 << endl;
float f3 = 3e-2; //3*0.1^2
cout << "f3= " << f3 << endl;
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
用于表示小数
浮点型变量:
单精度float:占用空间是4个字节,有效数字空间是7位有效数字
双精度double:占用空间是8个字节,有效数字空间是15-16位有效数字
11、数据类型-字符型
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
int main()
{
char ch = 'a';
cout << ch << endl;
cout << "char字符型变量所占用内存: " << sizeof(ch) << endl;
cout << int(ch) << endl;//对应的ASCII编码
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
字符型变量用于显示单个字符
注意1:用单引号将字符括起来,不能用双引号
注意2:单引号里只能是一个字符,不能是字符串
12、数据类型-转义字符
1、本节程序
2、重点知识
\b:回退:向后退一格
\f:换页
\n:换行,光标到下行行首
\r:回车,光标到本行行首
\t:水平制表
\v:垂直制表
\:反斜杠
\‘:单引号
":双引号
?:问号
\ddd:三位八进制
\xhh:二位十六进制
\0:空字符(NULL),什么都不做。换行只是换一行,不改变光标的横坐标;回车只是回到行首,不改变光标的纵坐标。
13、数据类型-字符串类型
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<string> //头文件,用于C++字符串
int main()
{
//1、C语言字符串
char str1[] = "hello";
cout << str1 << endl;
//2、C++字符串
string str2 = "word!";
cout << str2 << endl;
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
用于表示一串字符
一、char 变量名[] = “字符串值”
二、string 变量名 = “字符串值”
14、数据类型-布尔类型bool
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<string> //头文件,用于C++字符串
int main()
{
//1 代表真,0 代表假
bool flag = true;
cout << flag << endl;
flag = false;
cout << flag << endl;
cout << "bool 所占的内存空间:" << sizeof(flag) << endl;
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
布尔类型数据代表真或假
true — 真(1)
false — 假(0)
bool类型占1个字节大小
15、数据类型-数据的输入
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<string> //头文件,用于C++字符串
int main()
{
//1、整型
int a = 0;
cout << "请给整型变量a赋值:" << endl;
cin >> a;
cout << "a = " << a << endl;
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
用于从键盘上获取数据:cin指令
16、算数运算符-加减乘除
1、本节程序
2、重点知识
作用:用于处理四则运算
+、-、*、/
17、算术运算符-取模
1、本节程序
2、重点知识
用于取模
%
18、算数运算符-递增递减
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<string> //头文件,用于C++字符串
int main()
{
//1、前置递增
int a = 20;
++a;
cout << a << endl;
//2、后置递增
int b = 10;
b++;
cout << b << endl;
//3、前置后置区别,
// 前置时变量先加1,在进行表达式运算
// 后置时先进行表达式运算,在变量先加1
int a1 = 30;
int b1 = ++a1;//=31
int a2 = 40;
int b2 = a2++;//=40
cout << b1 << endl;
cout << b2 << endl;
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
前置:++a
后置:a++
前置时变量先加1,在进行表达式运算
后置时先进行表达式运算,在变量先加1
19、赋值运算符
1、本节程序
2、重点知识
作用:用于赋值运算
20、比较运算符
1、本节程序
2、重点知识
用于表达式的比较,并返回一个真值或假值
真为:1
假为:0
21、逻辑运算符-非、与、或
1、本节程序
2、重点知识
用于返回真值还是假值
在C++中,除了0都为真,
24、选择结构-单行if语句
1、本节程序
2、重点知识
C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构
顺序结构:程序按照顺序执行,不发生跳转
选择结构:依据条件是否满足,有选择的执行相应功能
循环结构:依据条件是否满足,循环执行多次某段代码
if语句作用:执行满足的语句
25、选择结构-多行if语句
1、本节程序
// An highlighted block
if ()
{
}
else
{
}
2、重点知识
26、选择结构-多条件if语句
1、本节程序
// An highlighted block
int a = 0;
cin >> a;
cout<< a <<endl;
if ()
{
}
else if()
{
}
else
{
}
2、重点知识
27、选择结构-嵌套if语句
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<string> //头文件,用于C++字符串
int main()
{
//
int score = 0;
cout << "请输入你考的分数:" << endl;
cin >> score;
cout << "你考的分数为:" << score << endl;
if (score > 600)
{
cout << "恭喜你考上了一本大学" << endl;
if (score > 700)
{
cout << "恭喜你考上了清华" << endl;
}
else if (score > 650)
{
cout << "恭喜你考上了北大" << endl;
}
}
else if (score > 500)
{
cout << "恭喜你考上了二本大学" << endl;
cout << score << endl;
}
else
{
cout << "未考上大学" << endl;
cout << score << endl;
}
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
作用:在if语句里再写一个if语句
28、程序流程结构-选择结构案例
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<string> //头文件,用于C++字符串
int main()
{
//三只小猪称体重,判断哪只最重
int num1 = 0;
int num2 = 0;
int num3 = 0;
cout << "请输入猪的体重:" << endl;
cin >> num1;
cin >> num2;
cin >> num3;
cout << "你输入的猪A的体重为:" << num1 << endl;
cout << "你输入的猪B的体重为:" << num2 << endl;
cout << "你输入的猪C的体重为:" << num3 << endl;
if (num1 > num2)//A比B重
{
if (num1 > num3)
{
cout << "猪A最重" << endl;
}
else
{
cout << "猪C最重" << endl;
}
}
else
{
if (num2 > num3)
{
cout << "猪B最重" << endl;
}
else
{
cout << "猪C最重" << endl;
}
}
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
三只小猪称体重,比较哪一只最重
29、三目运算符
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<string> //头文件,用于C++字符串
int main()
{
//三目运算符
int a = 10;
int b = 20;
int c = 0;
c = (a>b?a:b);
cout << "c = " << c << endl;//比较ab,谁大谁赋值给c
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
作用:
30、选择结构-switch语句
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<string> //头文件,用于C++字符串
int main()
{
//
int num = 0;
cout << "请给电影打分:" << endl;
cin >> num;
cout << "你给电影打分为:" << num << endl;
switch (num)
{
case 10:
cout << "您认为是经典电影" << endl;
break;
case 9:
cout << "您认为是经典电影" << endl;
break;
case 8:
cout << "您认为是好电影" << endl;
break;
case 7:
cout << "您认为是一般电影" << endl;
break;
default:
cout << "您认为烂片" << endl;
break;
}
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
作用:执行多条件分支语句
31、循环结构-while语句
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<string> //头文件,用于C++字符串
int main()
{
//ctrl + k +c 多行注释
int num = 0;
while (num<10)
{
cout << num << endl;
num++;
}
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
作用:
32、猜数字案例
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<ctime> //头文件,用于C++字符串
int main()
{
//添加随机种子,根据系统时间生成随机数,防止每次都一样
srand((unsigned int)time(NULL));
//猜数字案例
int num = rand()%100 + 1;//生成0-100的随机数
//cout << num << endl;
int val = 0;//生成0-100的随机数
while (1)
{
cin >> val;
if (val > num)
{
cout << "猜大了" << endl;
}
else if (val < num)
{
cout << "猜小了" << endl;
}
else
{
cout << "猜对了" << endl;
break;
}
}
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
作用:
33、循环结构-dowhile语句
1、本节程序
2、重点知识
作用:do{循环语句}while(循环条件);
do…while会先执行一次循环语句,在判断循环条件
34、水仙花案例
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<ctime> //头文件,用于C++字符串
int main()
{
//
int num = 100;
do
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
a = num % 10;
b = num / 10 % 10;
c = num / 100;
d = a*a*a + b*b*b + c*c*c;
if (d == num)
{
cout << num << endl;
}
num++;
} while (num < 1000);
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;
}
2、重点知识
案例描述:水仙花数是指一个3位数,他的每个位上的数字的3次幂之和等于它本身,例如:1^3 + 5 ^3+3 ^3=153
请利用do…while语句,求出所有3位数中的水仙花数
35、循环结构-for语句
1、本节程序
// An highlighted block
for(i = 0;i < 100; i++)
{
cout << i << endl;
}
2、重点知识
作用:
for(起始表达式;条件表达式;末尾循环体){循环语句;}
36、敲桌子案例
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<ctime> //头文件,用于C++字符串
int main()
{
//
int i = 0;
for (i = 1; i < 100; i++)
{
if (i % 7 == 0)
{
cout << "qiaozhuozi" << endl;
}
else if (i % 10 == 7)
{
cout << "qiaozhuozi" << endl;
}
else if (i / 10 % 10 == 7)
{
cout << "qiaozhuozi" << endl;
}
else
{
cout << i << endl;
}
}
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
作用:从1开始报数,如果数字个位含有7,或者数字十位含有7,或者是7的倍数,我们打印敲桌子,其他数字直接打印输出
37、嵌套循环-乘法口诀表
1、本节程序
// An highlighted block
#include<iostream>
using namespace std; //指调用命名空间std内定义的所有标识符
#include<ctime> //头文件,用于C++字符串
int main()
{
//
int i = 0;
int j = 0;
for (i = 1; i < 10; i++)
{
for (j = 1; j <= i; j++)
{
cout << j << "*" << i << "=" << j * i << " ";
}
cout << endl;
}
system("pause"); //让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
作用:
39、跳转语句-break、continue、goto
1、本节程序
2、重点知识
break:退出当前循环
continue:继续执行下面的指令
goto:跳转到指定语句
46、数组-冒泡排序
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
int main() {
//数组,冒泡排序
int arr[9] = { 4,2,8,0,5,7,1,3,9};
cout << "排序前顺序" << endl;
for (int i = 0; i < 9; i++)
{
cout << arr[i] << endl;
}
//开始排序
for (int i = 0; i < 9-1; i++)
{
for (int j = 0; j < 9-i-1; j++)
{
if (arr[j] < arr[j+1])
{
int temp = arr[j + 1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
cout << "排序后顺序" << endl;
for (int i = 0; i < 9; i++)
{
cout << arr[i] << endl;
}
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
作用:
对数据内元素进行升序排列
排序总论数=元素个数-1
每轮对比数= 元素个数-排序轮数-1
49、数组-考试成绩统计案例
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
int main() {
//数组
int arr[3][3] =
{
{ 100,100,100},
{ 90,50,100},
{ 60,70,80}
};
string names[3] = { "zhang","li","wang" };
for (int i = 0; i < 3; i++)
{
int sum = 0;
for (int j = 0; j < 3; j++)
{
sum += arr[i][j];
}
cout << names[i] << "的总分为:" << sum << endl;
}
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
作用:
50、函数-定义
1、本节程序
2、重点知识
函数的定义一般主要有5个步骤:
1、返回值
2、函数名
3、参数列表
4、函数体语句
5、return表达式
51、函数-函数调用
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
//函数
int add(int num1, int num2)
{
int sum = num1 + num2;
return sum;
}
int main() {
int a = 10;
int b = 20;
int c = add(a, b);
cout << "c=" << c << endl;
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
作用:
53、函数样式
1、本节程序
2、重点知识
1、无参无返
2、有参无返
3、无参有返
4、有参有返
54、函数的声明
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
//函数声明
int max(int a, int b);
int main() {
int a = 10;
int b = 20;
cout << max(a,b) << endl;
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
int max(int a, int b)
{
return a > b ? a : b;
}
2、重点知识
55、分文件的编写
1、本节程序
2、重点知识
作用:
1、创建后缀名为.h的头文件
2、创建后缀名为.cpp的源文件
3、在头文件中写函数的声明
4、在源文件中写函数的定义
56、指针-定义和使用
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
int main() {
//1、定义指针
int a = 10;
//指针定义语法,数据类型*指针变量名
int *p;
//让指针记录变量a的地址
p = &a;
cout << "a的地址为" << &a << endl;
cout << "指针p为" << p << endl;
//2、使用指针
//可以通过解引用的方式来找到指针指向的内存
//指针前加*代表解引用,找到指针指向的内存中数据
*p = 1000;
cout << "a=" << a << endl;
cout << "*p=" << *p << endl;
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
作用:
&:取地址符
数据类型指针变量名
指针前加代表解引用,找到指针指向的内存中数据
57、指针-所占内存空间
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
int main() {
//1、定义指针
int a = 10;
int *p = &a;
//在32位操作系统下,指针是占用4个字节空间大小,不管什么数据类型
//在64位操作系统下,指针是占用8个字节空间大小
cout << "sizeof(int *)=" << sizeof(int *) << endl;
cout << "sizeof(int *)=" << sizeof(double *) << endl;
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
作用:
在32位操作系统下,指针是占用4个字节空间大小,不管什么数据类型
在64位操作系统下,指针是占用8个字节空间大小
58、指针-空指针、野指针
1、本节程序
2、重点知识
作用:
空指针用于给指针变量进行初始化
空指针不可以进行访问
野指针:指针变量指向非法的内存空间
60、指针-const修饰指针
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
int main() {
//1、const修饰指针 常量指针
int a = 10;
int b = 10;
const int *p = &a;
//指针指向的值不可以改,指针的指向可以改
//*p = 20;错误
p = &b;
//2、const修饰常量 指针常量
//指针的指向不可以改,指针指向的值可以改
int * const p2 = &a;
*p2 = 20;//正确
//p2 = &b;错误,指针的指向不可以改
//2、const修饰常量 指针常量
//指针的指向不可以改,指针指向的值不可以改
const int * const p3 = &a;
//*p3 = 20;//错误
//p3 = &b;错误,指针的指向不可以改
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
const修饰指针有三种情况:
1、const修饰指针—常量指针
2、const修饰常量—指针常量
3、const即修饰指针又修饰常量
62、指针和函数
1、本节程序
2、重点知识
作用:
值传递不会改变实参
地址传递会改变实参
63、指针、数组、函数–冒泡排序
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
void maopao(int * arr, int len)
{
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len - i -1; j++)
{
//如果j>j+1,交换
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void printarray(int *arr, int len)
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << endl;
}
}
int main() {
int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };
int len = sizeof(arr) / sizeof(arr[0]);
maopao(arr, len);
printarray(arr, len);
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
案例描述:封装一个函数,利用冒泡排序,实现对整形数组的升序排列
64、结构体-结构体基本概念
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
struct student {
//结构体
string name;
int age;
int score;
};
int main() {
struct student stu1;
stu1.name = "zhangsan";
stu1.age = 20;
stu1.score = 90;
cout << "姓名:" << stu1.name << "年龄:" << stu1.age << "分数:" << stu1.score << endl;
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型
语法:struct 结构体名{结构体成员列表};
通过结构体创建变量的方式有三种:
struct 结构体名 变量名
struct 结构体名 变量名 = {成员1值,成员2值…}
定义结构体时顺便创建变量
65、结构体-结构体数组
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
struct student {
//结构体
string name;
int age;
int score;
};
int main() {
struct student stu1[3] =
{
{"zhang",21,84},
{"li",22,87},
{"wang",23,95}
};
for (int i = 0; i < 3; i++)
{
cout << "姓名:" << stu1[i].name << "年龄:" << stu1[i].age << "分数:" << stu1[i].score << endl;
}
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
作用:
66、结构体-结构体指针
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
struct student {
//结构体
string name;
int age;
int score;
};
int main() {
struct student stu1= {"zhang",21,84};
struct student *p = &stu1;
cout << "姓名:" << p->name << "年龄:" << p->age << "分数:" << p->score << endl;
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
作用:操作符->可以通过结构体指针访问结构体属性
68、结构体-结构体做函数参数
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
struct student
{
//结构体
string name;
int age;
int score;
};
//值传递
void printStudent1(struct student stu1)
{
cout << "姓名:" << stu1.name << "年龄:" << stu1.age << "分数:" << stu1.score << endl;
}
//地址传递
void printStudent2(struct student *p)
{
cout << "姓名:" << p->name << "年龄:" << p->age << "分数:" << p->score << endl;
}
int main() {
struct student stu1;
stu1.name = "zhangsan";
stu1.age = 20;
stu1.score = 90;
printStudent1(stu1);
printStudent2(&stu1);
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
作用:结构体做参数向函数中传递
传递方式有两种:
值传递
地址传递
70、结构体-结构体案例
1、本节程序
// An highlighted block
#include<iostream>
using namespace std;//声明使用std空间里的所有标识符
#include<string>
#include<ctime>
struct student
{
//结构体
string sname;
int score;
};
struct teacher
{
string tname;
struct student s[5];
};
//给老师和学生赋值的函数,len是计算老师个数
void allocateSpace(struct teacher t[], int len)
{
string nameSeed = "ABCDE";
for (int i = 0; i < len; i++)
{
t[i].tname = "teacher_";
t[i].tname += nameSeed[i];
for (int j = 0; j < 5; j++)
{
t[i].s[j].sname = "student_";
t[i].s[j].sname += nameSeed[j];
int random = rand() % 61 + 40;//40~100
t[i].s[j].score = random;
}
}
}
void printInfo(struct teacher t[],int len)
{
for (int i = 0; i < len; i++)
{
cout << "老师姓名: " << t[i].tname << endl;
for (int j = 0; j < 5; j++)
{
cout << "\t学生姓名:" << t[i].s[j].sname
<< "考试分数:" << t[i].s[j].score << endl;
}
}
}
int main() {
//随机数种子
srand((unsigned int)time(NULL));
//1、创建3名老师的数组
struct teacher t[3];
//2、通过函数给3名老师的信息赋值,并给老师带的学生信息赋值
int len = sizeof(t) / sizeof(t[0]);
allocateSpace(t, len);
//3、打印所有老师及所带的学生信息
printInfo(t, len);
system("pause");//让程序暂停一下,然后按任意键继续
return 0;//表明程序正常退出,返回到主程序继续往下执行
}
2、重点知识
案例描述:
学校正在做毕设项目,每名老师带领5个学生,总共有3名老师,需求如下:
设计学生和老师的结构体,其中在老师的结构体中,有老师姓名和一个存放5名学生的数组作为成员学生的成员有姓名、考试分数,创建数组存放3名老师,通过函数给每个老师及所带的学生赋值
最终打印出老师数据以及老师所带的学生数据。
第二部分:通讯录管理系统(01-12)
第三部分:C++进阶知识(01-64)
第四部分:职工管理系统(01-20)
第五部分:C++核心难点知识(01-97)
第六部分:演讲比赛流程管理系统(01-18)
第七部分:机房预约系统(01-18)
第八部分:bug与思考
项目链接: https://blog.csdn.net/m0_37882192/article/details/109574025