C++期末总结

1、C++数据类型

1.1、基本数据类型

1.1.1、整数形
数据类型说明范围
short(2个字节)短整型-32768 ~ 32767
int(4个字节)整型-2147483648 ~ 2147483647
long(8个字节)长整型-9223372036854775808L ~ 9223372036854775807L
unsigned无符号数据类型0 ~ 255(从0一直到255个数与上面有所区别)
unsigned short无符号short类型0 ~ 65535
unsigned long无符号long类型0~4294967295
1.1.2、字符型
数据类型说明范围
char(1字节)字符型-128 ~ 127
unsidned char无符号字符型0 ~ 255(从0一直到255个数与上面有所区别)
1.1.3、浮点型
数据类型说明范围
float(4个字节)单精度浮点型(浮点数有效8位,超出八位不计算)1.4E-45 ~ 3.4028235E38
double(8个字节)双精度浮点型(浮点数有效16位,四舍五入计算)4.9E-324 ~ 1.7976931348623157E308
1.1.4、布尔型
数据类型说明范围
bool布尔型(0和-0:false,非0:true)true/false

1.2、派生类型

  • 指针
  • 枚举
  • 数组
  • 结构体
  • 共用体
  • class

1.3、空类型void

  • void

2、C++函数

2.1、函数定义

格式:函数返回类型、函数名称、函数的参数、函数体、函数返回值

//有返回值函数 说明:开头的int是函数的返回类型,max是函数名称,max括号里面的x、y是参数,{}表示函数体,return表示函数返回值。
int max(int x, int y)
{
    return x>y?x:y;
}

// 无返回值函数(实用void修饰)
void test()
{
    cout << "无返回值函数!";
}

2.2、函数声明

格式:函数返回类型、函数名称(参数)

#include <iostream>
using namespace std;

//定义函数
int max(int x, int y)
{
    return x>y?x:y;
}
int main()
{
    //声明函数
    int max(int,int);
    return 0;
}

2.3、函数调用

格式:返回值类型 变量名 = 函数名(参数);

#include <iostream>
using namespace std;

//定义函数
int max(int x, int y)
{
    return x>y?x:y;
}
int main()
{
    //声明函数
    int max(int,int);
    //调用函数
    int mx = max(11, 33);
    cout << "打印函数返回结果:" << mx << endl;
    return 0;
}

3、C++流程控制

3.1、判断控制语句

3.1.1、if

作用if(true){执行体},if条件为真就执行执行体内容

if(3 > 1) 
{
    cout "执行体代码块执行了!";
}

3.2、分支控制语句

3.2.1、if else if else

作用:哪个条件为真就执行哪个执行体代码块

double fraction = 59.9;
if(fraction >=60 && fraction <=69)
{
    cout << "合格,成绩一般有待提升!";
} else if(fraction >=70 && fraction <=89)
{
    cout << "合格,成绩良好!";
} else if(fraction >=90 && fraction <=100)
{
    cout << "这位同学您太优秀了,请你务必去打打游戏摆烂摆烂!";
} else if(fraction <0 && fraction >100)
{
    cout << "成绩数据异常,请联系老师或校领导!";
} else
{ 
    cout << "不合格,请您务必认真学习啊少年!";
}
3.2.2、switch

作用:执行匹配语句块

switch (2) //参数(可以是整数或者字符串)
{
    case 1: //和switch参数匹配就执行case执行体代码
        {
            cout << "1";
            break; //跳出switch
        }
    case 2:
        {
            cout << "2";
            break; //跳出switch
        }
    default: //如果上面匹配的值就执行默认执行体
        {
            cout << "default!";
        }
}

注意:例如上面例子中1 2case语句块没有break;关键字跳出语句块,那么就会从第2case开启往下执行(往下执行中在遇到break;就跳出循环)!

switch (2) //参数(可以是整数或者字符串)
{
    case 1: //和switch参数匹配就执行case执行体代码
        {
            cout << "1";
        }
    case 2:
        {
            cout << "2";
        }
    case 3:
        {
            cout << "3";
        }
    case 4:
        {
            cout << "4";
        }
    default: 
        {
            cout << "default!";
        }
}

//执行结果如下
2 3 4 default!

//如果在case语句块中遇到break;就跳出switch
switch (2) //参数(可以是整数或者字符串)
{
    case 1: //和switch参数匹配就执行case执行体代码
        {
            cout << "1";
        }
    case 2:
        {
            cout << "2";
        }
    case 3:
        {
            cout << "3";
        }
    case 4:
        {
            cout << "4";
            break; //跳出switch,下面所有case包括default都不执行了
        }
    default: 
        {
            cout << "default!";
        }
}

3.3、循环控制语句

3.3.1、for

执行顺序:先执行一次A,在执行B条件判断为真就执行D,在执行C然后执行B条件判断为真执行D,直到B条件为假结束循环!

for(A; B; C)
{
    D
}

int x;
for(x=1,cout << "执行一次" << endl; x<=10; cout << "x<=10就执行这个语句块(x++)" << endl, x++)
{
    cout << "for循环执行体!" << x << endl;
}

//执行结果
执行一次
for循环执行体!1
x<=10就执行这个语句块(x++for循环执行体!2
x<=10就执行这个语句块(x++for循环执行体!3
x<=10就执行这个语句块(x++for循环执行体!4
x<=10就执行这个语句块(x++for循环执行体!5
x<=10就执行这个语句块(x++for循环执行体!6
x<=10就执行这个语句块(x++for循环执行体!7
x<=10就执行这个语句块(x++for循环执行体!8
x<=10就执行这个语句块(x++for循环执行体!9
x<=10就执行这个语句块(x++for循环执行体!10
x<=10就执行这个语句块(x++//简单for循环(直到i=10结束)
for(int i=0; i<10; i++)
{
	cout << i << endl;
}
//结果
0
1
2
3
4
5
6
7
8
9
3.3.2、while

作用:while 条件为真(true)就一致执行while循环结构体,为假(false)结束!

while(true)
{
    cout << "条件为true就一致循环!" << endl;
}
3.3.3、do while

作用:先执行一次do语句块,然后判断while条件为真继续执行do语句块,为假就结束循环!

int x=1;
do 
{
    cout << "do语句块必定执行一次!" << endl;
    x++;
} while (x <= 1); //条件为真(true)继续执行do语句块,知道条件为假(false)结束!

4、C++标识符

4.1、驼峰命名
  • userName
  • nickName
  • phoneNumber
  • 等等…
4.2、下划线分割
  • user_name
  • nick_name
  • phone_number

5、C++数组

5.1、数组定义

什么是数组:用于存储相同类型的数据集合,有序的集合。

定义数组:数组类型 数组名[数组长度] = {数组的值};

int arr[3] = {111,22,3};

5.2、数组读写

5.2.1、读取数组元素

格式:数组名称[下标]

//定义测试数组
int arr[3] = {333, 22, 1};

//读取数据元素
int a1 = arr[0]; //读取到的元素:333
int a1 = arr[1]; //读取到的元素:22
int a1 = arr[2]; //读取到的元素:1

int a1 = arr[3];//超出数组长度范围(下标越界异常)
5.2.2、写入数组元素

格式:数组名称[下标] = 元素;

//定义测试数组
int arr[3];

//1、通过下标给数组赋值
arr[0] = 111;
arr[0] = 222;
arr[0] = 111;

//2、直接赋值之完全赋值
int arr1[2] = {56,78};

//3、直接赋值之局部赋值
int arr2[3] = {111};

5.3、多维数组

5.3.1、一维数组

格式:数组类型 数组名称[数组长度] = {};

理解:一个数组包含多个元素

int arr_name[3] = {11,22,33};
5.3.2、二维数组

格式:数组类型 数组名称[数组长度] [数组长度] = {};

理解:二维数组就是一个二维数组里面包含多个一维数组

int arr_name[3][2] = {{1,2}, {3,4}, {5,6}};
5.3.3、三维数组

格式:数组类型 数组名称[数组长度] = {};

理解:三维数组就是一个三维数组里面包含多个二维数组,二维数组又包含多个一维数组

int arr_name[3][2][2] = {{{1,2}, {11,22}}, {{3,4}, {33,44}}, {{5,6}, {55,66}}};

6、C++联系题(19道考试重点)

6.1、【作图题】编写一个函数,返回1到200之间偶数的乘积

#include <iostream>
using namespace std;

int main()
{
	// 注意:使用int类型会超出范围(int最大值:2147483647),所以这里选择使用double类型
	double sum = 1;
	for(int i=2;i<=200;i+=2)
	{
		sum*=i;
	}
	cout << "1 ~ 200偶数乘积=" << sum;
	return 0;
}

6.2、【作图题】编写一个程序,从外界获取四个数,返回这前两个数的和的平方根和后两个数平方根的和,必须包含函数(非main)的调用

#include <iostream>
using namespace std;

double sum(double arr[])
{
	double x,y;
	x = ((arr[0]+arr[1]) / 2);
	y = ((arr[2]+arr[3]) / 2);
	return (x+y);
}

int main()
{
	double arr[4];
	for(int i=0;i<4;i++)
	{
		cin >> arr[i];
	}
	cout << "前两个数的和的平方根和后两个数平方根的和=" << sum(arr);
	return 0;
}

6.3、【作图题】编写一个程序,从外界获取三个数,返回这前两个数的和的平方根和第三个数的乘积,必须包含函数(非main)的调用

#include <iostream>
using namespace std;

double sum(double arr[])
{
	double x,y;
	x = ((arr[0]+arr[1]) / 2);
	y = (x * arr[2]);
	return y;
}

int main()
{
	double arr[3];
	for(int i=0;i<3;i++)
	{
		cin >> arr[i];
	}
	cout << "前两个数的和的平方根和第三个数的乘积 =" << sum(arr) << endl;
	return 0;
}

6.4、【作图题】编写一个程序,从外界获取两个数,返回这两个数的和的平方根,必须包含函数(非main)的调用

#include <iostream>
using namespace std;

double sum(double x, double y)
{
	return (x+y)/2;
}

int main()
{
	//【作图题】编写一个程序,从外界获取两个数,返回这两个数的和的平方根,必须包含函数(非main)的调用
	double x,y;
	cin >> x >> y;
	cout << "两个数的和的平方根 =" << sum(x,y) << endl;
	return 0;
}

6.5、【作图题】编写一个函数,从外界获取一个小数,返回该数整数部分的一半

#include <iostream>
using namespace std;

double halt(double x)
{
	int y = (int)x;
	double n = (double)y;
	return (n/2);
}

int main()
{
	double x;
	cin >> x;
	cout << "从外界获取一个小数,返回该数整数部分的一半=" << halt(x) << endl;
	return 0;
}

6.6、【作图题】编写一个程序,用于求从外界输入的三个数的最小公倍数和最大公约数。

#include <iostream>
using namespace std;

//最大公约数(最大公因数定义: 指两个或多个整数共有约数中最大的一个)
int gys(int x,int y, int w, int m)
{
	int gys = 1;
	for (int i = m; i > 1; i--)
	{
		if (x%i==0 && y%i==0 && w%i==0)
		{
			gys=i;
			break;
		}
	}
	return gys;
}

int main()
{
	//【作图题】编写一个程序,用于求从外界输入的三个数的最小公倍数和最大公约数。
	int x = 12;
	int y = 16;
	int w = 18;
	int m = ((x<y ? x:y) < w ? (x<y ? x:y) : w);
	
	int max = gys(x,y,w,m); //最大公约数
	int min = (x*y*w) / max; //最小公倍数(n个整数乘积 / 最大公倍数)
	
	cout << "最大公约数(" << x << "," << y << "," << w << "," << ")=" << max << endl;
	cout << "最小公倍数(" << x << "," << y << "," << w << "," << ")=" << min << endl;
	return 0;
}

6.7、【作图题】编写一个程序,用于求从外界输入的两个数的最小公倍数和最大公约数。

#include <iostream>
using namespace std;

//最大公约数(最大公因数定义: 指两个或多个整数共有约数中最大的一个)
int gys(int x,int y, int m)
{
	int gys = 1;
	for (int i = m; i > 1; i--)
	{
		if (x%i==0 && y%i==0)
		{
			gys=i;
			break;
		}
	}
	return gys;
}

int main()
{
	//【作图题】编写一个程序,用于求从外界输入的两个数的最小公倍数和最大公约数。
	int x = 12;
	int y = 16;
	int m = (x>y?x:y);
	int max = gys(x,y,m); //最大公约数
	int min = (x*y) / max; //最小公倍数(n个整数乘积 / 最大公倍数)
	cout << "最大公约数(" << x << "," << y << "," << ")=" << max << endl;
	cout << "最小公倍数(" << x << "," << y << "," << ")=" << min << endl;
	return 0;
}

6.8、【作图题】编写一个程序,用于生成平均值,数据从外界获取4个小数。

#include <iostream>
using namespace std;

// 求平均值
double avg(double avgs[], int arrayLength)
{
	double  sum = 0.00;
	for(int i=0;i<=arrayLength;i++)
	{
		sum +=avgs[i];
	}
	return sum/arrayLength;
}

int main()
{
	int len = 2;
	double arr[len];
	for(int i=0;i<len;i++)
	{
		cin >> arr[i];
	}
	cout << "平均值:" << avg(arr, len) << endl;
	return 0;
}

6.9、【作图题】编写程序,用于计算评委得分,5个评委的分数,去掉最高分和最低分,返回平均分。

#include <iostream>
using namespace std;

// 求平均值
double avg(double avgs[], int arrayLength)
{
	double max=avgs[0], min=avgs[0], sum;
	for(int i=0;i<arrayLength;i++)
	{
		if(avgs[i] > max)
		{
			max = avgs[i];
		}
		if(avgs[i] < min)
		{
			min = avgs[i];
		}
	}
	for(int j=0;j<arrayLength;j++)
	{
		double tem = avgs[j];
		if(tem < max && tem > min)
		{
			sum +=avgs[j];
		}
	}
	return (sum/(arrayLength-2));
}

int main()
{
	//9、【作图题】编写程序,用于计算评委得分,5个评委的分数,去掉最高分和最低分,返回平均分。
	int len = 5;
	double arr[len];
	for(int i=0;i<len;i++)
	{
		cin >> arr[i];
	}
	cout << "平均分:" << avg(arr, len) << endl;
	return 0;
}

6.10、【作图题】编写程序,从外界获取学生的5门科目成绩,返回平均值和最高分。

#include <iostream>
using namespace std;

// 求平均值
double avg(double avgs[], int arrayLength)
{
	double sum;
	for(int i=0;i<arrayLength;i++)
	{
		sum +=avgs[i];
	}
	return (sum/arrayLength);
}

double max(double avgs[], int arrayLength)
{
	double max =avgs[0];
	for(int i=0;i<arrayLength;i++)
	{
		if(max < avgs[i])
		{
			max =avgs[i];
		}
	}
	return max;
}

int main()
{
	//【作图题】编写程序,从外界获取学生的5门科目成绩,返回平均值和最高分。
	int len = 5;
	double arr[len];
	for(int i=0;i<len;i++)
	{
		cin >> arr[i];
	}
	cout << "平均分:" << avg(arr, len) << endl;
	cout << "最高分:" << max(arr, len) << endl;
	return 0;
}

6.11、【作图题】编写程序,从外界获取两个实数,返回平均值的整数部分。

#include <iostream>
using namespace std;

int main()
{
	double x,y, avg;
	cin >> x >> y;
	avg = (x+y)/2;
	int int_avg = (int)avg;
	cout << "平均值整数部分:" << avg << endl;
	return 0;
}

6.12、【作图题】求200-300之间的素数,并输出

#include <iostream>
using namespace std;

int main()
{
	//所有的偶数都不是素数,所以在循环过程中可以只对奇数进行判定,由此可以进行一步提高效率
	int i,j;
	for(i=201;i<=300;i++)
	{
		for(j=2;j<i;j++)
		{
			if(i%j==0) break; //能被整除所以不是素数直接跳出循环
		}
		if(j>=i)
		{
			cout << "200~300素数:" << i << endl;
		}
	}
	return 0;
}

6.13、【作图题】编写程序,从外界获取两个整数,用于求四个数的最大值,必须有可调用的函数。

#include <iostream>
using namespace std;

int max(int arr[], int len)
{
	int max = arr[0];
	for(int i=0;i<len;i++)
	{
		if(arr[i] > max) max=arr[i];
	}
	return max;
}

int main()
{
	//13、【作图题】编写程序,从外界获取两个整数,用于求四个数的最大值,必须有可调用的函数。
	int len = 4;
	int arr[len] = {111, 222};
	for(int i=2;i<len;i++)
	{
		cin >> arr[i];
	}
	cout << "最大值:" << max(arr, len);
	return 0;
}

6.14、【作图题】编写程序,从外界获取两个整数,用于求三个数的最大值,必须有可调用的函数。

#include <iostream>
using namespace std;

int max(int arr[], int len)
{
	int max = arr[0];
	for(int i=0;i<len;i++)
	{
		if(arr[i] > max) max=arr[i];
	}
	return max;
}

int main()
{
	//14、【作图题】编写程序,从外界获取两个整数,用于求三个数的最大值,必须有可调用的函数。
	int len = 3;
	int arr[len] = {111};
	for(int i=1;i<len;i++)
	{
		cin >> arr[i];
	}
	cout << "最大值:" << max(arr, len);
	return 0;
}

6.15、【作图题】编写程序,从外界获取两个整数,用于求两个数的最大值。

#include <iostream>
using namespace std;

int max(int x, int y)
{
	return x>y?x:y;
}

int main()
{
	int x,y;
	cin >> x >>y;
	cout << "最大值:" << max(x, y);
	return 0;
}

6.16、【作图题】编写一个程序,通过获取用户输入的数据来输出该数据是否是素数。

#include <iostream>
using namespace std;

int main()
{
	//17、【作图题】编写一个程序,通过获取用户输入的数据来输出该数据是否是素数。
	int i,x;
	cin >> x;
	for(i=2;i<x;i++)
	{
		if(x%i==0) break;
	}
	if(i>=x)
	{
		cout << "是素数:" << x << endl;
	} else
	{
		cout << "不是素数:" << x << endl;
	}
	return 0;
}

6.17、【作图题】求1-100之间的所有素数,并统计素数的个数。

#include <iostream>
using namespace std;

int main()
{
	//19、【作图题】求1-100之间的所有素数,并统计素数的个数。
	int i,x,count=0;
	for(i=1;i<100;i+=2)
	{
		for(x=2;x<i;x++)
		{
			if(i%x==0) break;
		}
		if(x>=i)	count+=1;
	}
	cout << "素数个数:" << count;
	return 0;
}

6.18、【作图题】编程显示任意输入5个数字中的最大值,最小值,平均值。

#include <iostream>
using namespace std;

int main()
{
	//19、【作图题】编程显示任意输入5个数字中的最大值,最小值,平均值。
	int len = 5;
	double arr[len];
	for(int i=0;i<len;i++)
	{
		cin >> arr[i];
	}
	
	double max=arr[0],min=arr[0],avg,count;
	for(int j=0;j<len;j++)
	{
		if(arr[j] > max) max=arr[j];
		if(arr[j] < min) min=arr[j];
		count += arr[j];
	}
	avg = (count / len);
	cout << "最大值:" << max << endl;
	cout << "最小值:" << min << endl;
	cout << "平均值:" << avg << endl;
	return 0;
}

6.19、【作图题】每次期末考试后,如果成绩低于60分则有一次补考机会,如果补考低于60分的则需要重修,如果重修成绩低于60分的还需要重修,直到成绩大于等于60分为止。 如果平时有三次缺勤的则直接重修,或者有缺考的直接重修。 请编写一个程序来实现以上功能,通过不同的用户输入数据来输出结果。

#include <iostream>
using namespace std;

void qq_cx(double y)
{
	if(y < 60)
	{
		cout << "重修没有通过,请输入重修成绩:" << endl;
		cin >> y;
		qq_cx(y);
	} else
	{
		cout << "考试通过!" << endl;
	}
}
int main()
{
	int x;
	double y;
	cout << "请输入考生缺勤次数:" << endl;
	cin >> x;
	if(x >= 3)
	{
		cout << "你的缺勤次数过多,滚去重修!" << endl;
		cout << "请输入重修成绩:" << endl;
		cin >> y;
		qq_cx(y);
	}
	else
	{
		cout << "请输入考生成绩:" << endl;
		cin >> y;
		if(y < 60)
		{
			cout << "考试没有通过,恭喜你获得一次补考机会!" << endl;
			cout << "请输入补考成绩:"<<endl;
			cin >> y;
			if(y < 60)
			{
				qq_cx(y);
			}
			else
			{
				cout << "恭喜你考试通过!" << endl;
			}
		} else
		{
			cout << "恭喜你考试通过!" << endl;
		}
	}
	return 0;
}

7、C++数组操作(30道练习考试重点)

7.1、一维数组

#include <iostream>
using namespace std;

// 案例一:一维数组(10个案例)
int main()
{
	//1、使用一维数组存放5个学号(直接赋值)
	int arr_day01[5] = {2120180331, 2120180332, 2120180333, 2120180334, 2120180335};
	for(int i=0;i<5;i++)
	{
		cout << "第" << (i+1) << "学号: " << arr_day01[i] << endl;
	}
	
	//2、使用一维数组存放3个姓名
	string arr_day02[3] = {"猜猜一", "猜猜二", "猜猜三"};
	for(int i=0;i<3;i++)
	{
		cout << "姓名" << (i+1) << ": " << arr_day02[i] << endl;
	}
	
	//3、使用一维数组存放2个电影名称
	string arr_day03[2] = {"007", "天龙八部"};
	for(int i=0;i<2;i++)
	{
		cout << "电影" << (i+1) << ": " << arr_day03[i] << endl;
	}
	
	//4、使用一维数组存放5个班级名称
	string arr_day04[5] = {"计应一班", "计应二班", "计应三班", "计应四班", "计应五班"};
	for(int i=0;i<5;i++)
	{
		cout << "第" << (i+1) << "班级: " << arr_day04[i] << endl;
	}
	
	//5、使用一维数组存放5个 int 类型数据
	int arr_day05[5] = {111, 222, 333, 444, 555};
	for(int i=0;i<5;i++)
	{
		cout << "int数据类型:" << arr_day05[i] << endl;
	}
	
	//6、使用一维数组存放5个 string 类型数据
	string arr_day06[5] = {"test01", "test02", "test03", "test04", "test05"};
	for(int i=0;i<5;i++)
	{
		cout << "string类型:" << arr_day06[i] << endl;
	}
	
	//7、使用一维数组存放5个 double 类型数据
	double arr_day07[5] = {111.11, 222.22, 333.33, 444.44, 555.55};
	for(int i=0;i<5;i++)
	{
		cout << "double数据类型:" << arr_day07[i] << endl;
	}
	
	//8、使用一维数组存放5个年龄
	long arr_day08[5] = {18, 22, 23, 24, 25};
	for(int i=0;i<5;i++)
	{
		cout << "年龄:" << arr_day08[i] << endl;
	}
	
	//9、使用一维数组存放5个宿舍号
	long arr_day09[5] = {3442, 3443, 3444, 3445, 3446};
	for(int i=0;i<5;i++)
	{
		cout << "年龄:" << arr_day09[i] << endl;
	}
	
	//10、使用一维数组存放5地址名
	string arr_day010[5] = {"城大一", "城大二", "城大三", "城大四", "城大五"};
	for(int i=0;i<5;i++)
	{
		cout << "地址:" << arr_day010[i] << endl;
	}
	return 0;
}

7.2、二维数组

#include <iostream>
using namespace std;

// 案例一:二维数组(10个案例)
int main()
{
	//1、n个人的姓名学号
	string str_day01[3][2] = {{"猜猜一", "2120180332"}, {"猜猜二", "2120180333"}, {"猜猜三", "2120180334"}};
	for(int i=0;i<3;i++)
	{
		string str = "";
		for(int j=0;j<2;j++)
		{
			str += str_day01[i][j];
		}
		cout << str << endl;
	}
	
	//2、2个宿舍所有人姓名
	string str_day02[2][6] = 
	{
		{"猜猜一", "猜猜二", "猜猜三", "猜猜四", "猜猜五", "猜猜六"}, 
		{"ruanjia1", "ruanjia2", "ruanjia3", "ruanjia4", "ruanjia5", "ruanjia6"}
	};
	for(int i=0;i<2;i++)
	{
		cout << "第" << (i+1) << "个宿舍所有人姓名:" << endl;
		for(int j=0;j<6;j++)
		{
			cout << str_day02[i][j] << endl;
		}
	}
	
	/*
	3、公司年销售额求和
		某公司按照季度和月份统计的数据如下:单位(万元)
		第一季度:22,66,44
		第二季度:77,33,88
		第三季度:25,45,65
		第四季度:11,66,99
	*/
	double arr_day03[4][3] = {{22,66,44}, {77,33,88}, {25,45,65}, {11,66,99}};
	double sum = 0.00;
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<3;j++)
		{
			sum += arr_day03[i][j];
		}
	}
	cout << "年销售额求和= " << sum << "万元" << endl;
	
	/*
	4、使用二维数组保存4个班级的学生身高(求每个班级最高身高,最低身高,平均身高)
	*/
	double str_day04[4][4] = 
	{
		{167.7, 170.8, 177, 169.8}, 
		{187.7, 160.8, 157, 189.8}, 
		{164.7, 173.8, 137, 149.8}, 
		{163.7, 172.8, 177, 161.8}
	};
	double x,max,min,avg;
	for(int i=0;i<4;i++)
	{
		cout << "第" << (i+1) << "个班级" << endl;
		max = str_day04[i][0];
		min = str_day04[i][0];
		x = 0.00;
		for(int j=0;j<4;j++)
		{
			x += str_day04[i][j];
			if(str_day04[i][j] > max)
			{
				max = str_day04[i][j];
			} 
			if(str_day04[i][j] < min)
			{
				min = str_day04[i][j];
			}
		}
		cout << "最高身高:" << max << endl;
		cout << "最低身高:" << min << endl;
		cout << "平均身高:" << (x/4) << endl;
	}

	/*
	5、使用二维数组保存n个班级的学生成绩(求每个班级最高成绩,最低成绩,平均成绩)
	*/
	double arr_day05[3][50];
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<50;j++)
		{
			arr_day05[i][j] = rand() % 100 + 1;
		}
	}
	for(int i=0;i<3;i++)
	{
		double mx = arr_day05[i][0], mi = arr_day05[i][0], ag = 0.00;
		cout << "第" << (i+1) << "个班级" << endl;
		for(int x=0;x<50;x++)
		{
			if(mx < arr_day05[i][x])
			{
				mx = arr_day05[i][x];
			}
			if(mi > arr_day05[i][x])
			{
				mi = arr_day05[i][x];
			}
			ag += arr_day05[i][x];
		}
		cout << "最高成绩:" << mx << endl;
		cout << "最低成绩:" << mi << endl;
		cout << "平均成绩:" << (ag/50) << endl;
	}
	
	// 6、找出5个电影院的3个热门电影
	string str_day06[5][3] = {
		{"001", "002", "003"},
		{"101", "102", "103"},
		{"201", "202", "203"},
		{"301", "302", "303"},
		{"401", "402", "403"}
	};
	for(int i=0;i<5;i++)
	{
		cout << "第" << (i+1) << "个电影院" << endl;
		for(int j=0;j<3;j++)
		{
			cout << str_day06[i][j] << endl;
		}
	}
	
	// 7、二维数组存储多个int类型一个数组(一维数组长度为5),对每个一维数组数据进行排序输出(降序:高 -> 低);
	int arr07[3][5] = {
		{32,5,88,22,44},
		{1,5,45,422,65},
		{89,76,43,33,32}
	};
	for(int i=0;i<3;i++)
	{
		// 比较次数:n-1
		for(int j=0;j< (5-1);j++)
		{
			bool isSort  = true;
			for(int x=0;x<((5-1) - j);x++)
			{
				if(arr07[i][x] < arr07[i][x+1])
				{
					isSort = false;
					int temp = arr07[i][x];
					arr07[i][x] = arr07[i][x+1];
					arr07[i][x+1] = temp;
				}
			}
			if(isSort) break;
		}
	}
	for(int i=0;i<3;i++)
	{
		cout << "第" << (i+1) << "个数组排序结果:";
		for(int j=0;j<5;j++)
		{
			cout << arr07[i][j] << " ";
		}
		cout << endl;
	}
	
	//8、插入排序
	int arr08[3][5] = 
	{
		{32,5,88,22,44},
		{1,5,45,422,65},
		{89,76,43,33,32}
	};
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<(5-1);j++)
		{
			int end = j;
			int tem = arr08[i][j+1];
			while(end >= 0)
			{
				if(tem > arr08[i][end])
				{
					arr08[i][end+1] = arr08[i][end];
					end--;
				}
				else
				{
					break;
				}
			}
			arr08[i][end+1] = tem;
		}
	}
	
	for(int i=0;i<3;i++)
	{
		cout << "第" << (i+1) << "个数组排序结果:";
		for(int j=0;j<5;j++)
		{
			cout << arr08[i][j] << " ";
		}
		cout << endl;
	}
	
	//9、使用二维数组存储n个宿舍所有人姓名
	string arr09[2][6] = {
		{"佳佳一", "佳佳二", "佳佳三", "佳佳四", "佳佳五", "佳佳六",},
		{"张三一", "张三二", "张三三", "张三四", "张三五", "张三六",}
	};
	for(int i=0;i<2;i++)
	{
		cout << "第" << (i+1) << "个宿舍:" << endl;
		for(int j=0;j<6;j++)
		{
			cout << arr09[i][j] << endl;
		}
	}
	
	//10、使用二维数组存储3个公司部门名称(万元)
	string arr10[2][2] = {
		{"销售部", "运维部"},
		{"财务部", "开发部"}
	};
	for(int i=0;i<2;i++)
	{
		cout << "第" << (i+1) << "个公司部门: " << endl;
		for(int j=0;j<2;j++)
		{
			cout << arr10[i][j] << endl;
		}
	}
	
	return 0;
}

7.3、三维数组

#include <iostream>
using namespace std;

//三维数组使用案例(10个)
int main()
{
	cout << "1、使用三维数组存储3个公司的3部门的员工名" << endl;
	string arr01[3][3][2] = 
	{
		{
			{"张三", "李四"},
			{"小明", "王五"},
			{"小红", "小紫"}
		},
		{
			{"狗狗", "狗子"},
			{"猫猫", "猫子"},
			{"鸭鸭", "鸭子"}
		},
		{
			{"佳佳", "珈珈"},
			{"家家", "甲甲"},
			{"加加", "假假"}
		}
	};
	for(int i=0;i<3;i++)
	{
		cout << "第" << (i+1) << "公司:" << endl;
		for(int j=0;j<3;j++)
		{
			cout << "第" << (j+1) << "部门员工姓名:" <<  endl;
			for(int x=0;x<2;x++)
			{
				cout << arr01[i][j][x] << endl;
			}
		}
	}
	
	cout << "2、使用三维数组存储3个班级的学号成绩" << endl;
	int arr02[3][2][2] = {
		{
			{2120180332, 2120180332},
			{33,44}
		},
		{
			{2120180333, 2120180334},
			{53,54}
		},
		{
			{2120180336, 2120180335},
			{63,67}
		}
	};
	for(int i=0;i<3;i++)
	{
		cout << "第" << (i+1) << "班级" << endl;
		for(int j=0;j<2;j++)
		{
			if(j == 0)
			{
				cout << "学号:" << endl;
			} else
			{
				cout << "成绩:" << endl;	
			}
			for(int x=0;x<2;x++)
			{
				cout << arr02[i][j][x] << endl;
			}
		}
	}
	
	cout << "3 、使用三维数组存储5个int类型数组后排序(冒泡)" << endl;
	int arr03[2][3][5] = {
		{
			{12, 44, 1, 55, 38},
			{22, 54, 7, 5, 78},
			{32, 64, 8, 5, 88}
		},
		{
			{54, 74, 31, 65, 38},
			{132, 34, 27, 55, 28},
			{52, 14, 18, 45, 8}
		}
	};
	for(int i=0;i<2;i++)
	{
		for(int j=0;j<3;j++)
		{
			for(int x=0;x<(5-1);x++)
			{
				for(int y=0;y<((5-1)-x);y++)
				{
					if(arr03[i][j][y] > arr03[i][j][y+1])
					{
						int temp = arr03[i][j][y+1];
						arr03[i][j][y+1] = arr03[i][j][y];
						arr03[i][j][y] = temp;
					}
				}
			}
		}
	}
	for(int i=0;i<2;i++)
	{
		cout << "第" << (i+1) << "个数组:" << endl;
		for(int j=0;j<3;j++)
		{
			cout << "第" << (j+1) << "排序结果:" << endl;
			for(int x=0;x<5;x++)
			{
				cout << arr03[i][j][x] << " ";
			}
			cout << endl;
		}
	}
	
	cout << "4、使用三维数组存储5个int类型数组后排序(插入排序)" << endl;
	int arr04[2][3][5] = {
		{
			{12, 44, 1, 55, 38},
			{22, 54, 7, 5, 78},
			{32, 64, 8, 5, 88}
		},
		{
			{54, 74, 31, 65, 38},
			{132, 34, 27, 55, 28},
			{52, 14, 18, 45, 8}
		}
	};
	for(int i=0;i<2;i++)
	{
		for(int j=0;j<3;j++)
		{
			for(int x=0;x<(5-1);x++)
			{
				int end = x;
				int tem = arr04[i][j][x+1];
				while(end >= 0)
				{
					if(tem > arr04[i][j][end])
					{
						arr04[i][j][end+1] = arr04[i][j][end];
						end--;
					}		
					else
					{
						break;
					}
				}
				arr04[i][j][end+1] = tem;
			}
		}
	}
	for(int i=0;i<2;i++)
	{
		cout << "第" << (i+1) << "个数组:" << endl;
		for(int j=0;j<3;j++)
		{
			cout << "第" << (j+1) << "排序结果:" << endl;
			for(int x=0;x<5;x++)
			{
				cout << arr04[i][j][x] << " ";
			}
			cout << endl;
		}
	}
	
	
	cout << "5、使用三维数组存储n个宿舍学生学号、成绩" << endl;
	int arr05[3][2][2] = 
	{
		{
			{2120180332, 2120180333},
			{88, 99}
		},
		{
			{2120180334, 2120180335},
			{77, 89}
		},
		{
			{2120180345, 2120180345},
			{68, 69}
		}
	};
	for(int i=0;i<3;i++)
	{
		cout << "第" << (i+1) << "个宿舍:" << endl;
		for(int j=0;j<2;j++)
		{
			if(j == 0)
			{
				cout << "学号:" ;
			} else
			{
				cout << "成绩:" ;	
			}
			for(int y=0;y<2;y++)
			{
				cout << arr05[i][j][y] << " ";
			}
			cout << endl;
		}
	}
	
	cout << "6、某公司所有部门员工工资、员工工号" << endl;
	double arr06[3][2][5] =
	{
		{
			{8888.88, 4345.12, 7563.11, 9808.55, 4345.22},
			{1111, 2222, 3333, 4444, 5555}
		},
		{
			{8888.88, 4345.12, 7563.11, 9808.55, 4345.22},
			{1211, 1222, 1233, 1244, 1255}
		},
		{
			{8888.88, 4345.12, 7563.11, 9808.55, 4345.22},
			{2211, 3322, 4433, 5544, 6655}
		}
	};
	for(int i=0;i<3;i++)
	{
		cout << "第" << (i+1) << "个部门:" << endl;
		for(int j=0;j<2;j++)
		{
			for(int ii=0;ii<5;ii++)
			{
				cout << arr06[i][j][ii] << " ";
			}
			cout << endl;
		}
	}
	
	cout << "7、2个班级4个宿舍人的姓名,学号" << endl;
	string arr07[2][4][2][2] = 
	{
		{
			{
				{"test01", "test01"},
				{"2120180332", "2120180332"}
			},
			{
				{"test01", "test01"},
				{"2120180332", "2120180332"}
			},
			{
				{"test01", "test01"},
				{"2120180332", "2120180332"}
			},
			{
				{"test01", "test01"},
				{"2120180332", "2120180332"}
			}
		},
		{
			{
				{"test01", "test01"},
				{"2120180332", "2120180332"}
			},
			{
				{"test01", "test01"},
				{"2120180332", "2120180332"}
			},
			{
				{"test01", "test01"},
				{"2120180332", "2120180332"}
			},
			{
				{"test01", "test01"},
				{"2120180332", "2120180332"}
			}
		}
	};
	for(int i=0;i<2;i++)
	{
		cout << "第" << (i+1) << "个班级:" << endl;
		for(int j=0;j<4;j++)
		{
			cout << "第" << (j+1) << "个宿舍:" << endl;
			for(int x=0;x<2;x++)
			{
				for(int y=0;y<2;y++)
				{
					cout << arr07[i][j][x][y] << " ";
				}
				cout << endl;
			}
		}
	}
		
	return 0;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值