- 数组定义
- 一维数组
- 一维数组练习案例
- 冒泡排序
- 二维数组
- 二维数组练习案例
数组:数组就相当于一个集合,里面存放相同类型的数据元素。数组是由连续的内存位置组成的。
一维数组 //数组三种创建方式
//1.数据类型 数组名【数组长度】;
int arr1[5];
arr1[0] = 10; //为数组赋值
//2.数据类型 数组名【数组长度】={值1,值2,值3......}
int arr2[5] = { 10,20,30,40,50 };
for (int i = 0; i < 5; i++) { //利用循环,输出数组中元素
cout << arr2[i] << endl;
}
//2.数据类型 数组名【】={值1,值2,值3......}
int arr3[] = { 10,20,30,40,50 };
cout << "数组占用内存空间为:" << sizeof(arr3) << endl;
cout << "数组每个元素占用内存空间为:" << sizeof(arr3[0]) << endl;
cout << "数组中元素个数为:" << sizeof(arr3) / sizeof(arr3[0]) << endl;
cout << "数组首地址为:" << arr3 << endl; //若改写为(int)arr3则代表把16进制地址强转为十进制,
cout << "数组中第一个元素地址为:" << (int)&arr3[0] << endl; //&为取址符
一维数组练习案例
1、五只小猪称体重
//找出五只小猪中最重的一只
int pig[] = { 100,200,300,150,280 };
int max = 0;
for (int i = 0; i < 5; i++) {
if (pig[i] > max) {
max = pig[i];
}
}
cout << "最重的小猪重量为:" << max << endl;
2、 数组元素逆置
//将数组逆置
int arr4[] = { 1,3,5,7,9 };
cout << "数组逆置前为:" << endl;
for (int i = 0; i < 5; i++) {
cout << arr4[i];
}
int start = 0;
int end = sizeof(arr4) / sizeof(arr4[0]) - 1; //得到数组个数
while (start < end) {
int temp = arr4[start];
arr4[start] = arr4[end];
arr4[end] = temp;
start++;
end--;
}
cout << "逆置后的数组为:" << endl;
for (int i = 0; i < 5; i++) {
cout << arr4[i];
}
冒泡排序
冒泡排序:是最常用的排序算法,对数组内的元素进行排序。
算法步骤:
step1比较相邻的两个元素,如果第一个比第二个大,就交换他们两个。
step2对每一对相邻元素做同样的操作,执行完毕后,找到第一个最大值。
step3重复以上步骤,每次比较次数减1,直到不需要比较。
//冒泡排序
int shuzu[9] = {2,4,0,5,8,6,9,7,3};
cout << "输出原数组为:" << endl;
for (int i = 0; i < 9; i++) {
cout << shuzu[i];
}
cout << endl;
//总共排序轮数 为元素个数-1
for (int i = 0; i < 9-1; i++) {
//内层循环对比次数=元素个数-当前轮数-1
for (int j = 0; j < 9 - i - 1; j++) {
if (shuzu[j] > shuzu[j + 1]) {
int temp = shuzu[j];
shuzu[j] = shuzu[j + 1];
shuzu[j + 1] = temp;
}
}
}
cout << "输出排序后的数组为:" << endl;
for (int i = 0; i < 9; i++) {
cout<< shuzu[i];
}
cout << endl;
二维数组
//二维数组 四种定义方式
//数据类型 数组名【行数】【列数】;
//数据类型 数组名【行数】【列数】={ {数值1,数值2 ...},{数值3,数值4...} };
//数据类型 数组名【行数】【列数】={ 数值1,数值2,数值3,数值4... };
//数据类型 数组名【】【列数】={ 数值1,数值2,数值3,数值4... };
int dshuzu[2][3] =
{
{1,2,3},
{4,5,6}
};
//输出二维数组
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
cout << dshuzu[i][j]<
二维数组练习案例
输出每个同学的总分。
//统计三人三科成绩,并得出每人成绩总和
int grade [3][3]= {
{100,100,100},
{90,50,100},
{60,70,80}
};
int sum = 0;
string names[] = {"张三","李四","王五"}; //对string进行输入输出的时候,需要包含头文件
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
sum += grade[i][j];
}
cout << "第" << i + 1 << "个人的总成绩为:" << sum << endl; //按序号输出
cout << names[i]<< "的总成绩为:" << sum << endl; //按姓名输出
}



