【C++】黑马程序员《C++从入门到精通》

黑马程序员《C++从入门到精通》--学习笔记

第一部分:基础入门知识(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

猜你喜欢

转载自blog.csdn.net/m0_37882192/article/details/109103335
今日推荐