C++自学笔记003
一维数组
冒泡排序
二维数组
#include <iostream>
using namespace std;
int main()
{
//数组
//特点:1、放在一块连续的内存空间中;2、数组中每个元素都是相同的数据类型
//如果初始化数组是没有全部定义数组元素,则未定义的元素将会自动用零补齐
/*定义一个数组的格式:
1、数据类型 数组名[数组长度];
2、数据类型 数组名[数组长度] = {值1,值2,值2,...};
3、数据类型 数组名[] = {值1,值2,值3,...};*/
//例子:定义一个数组,利用循环语句输出
int arr1[5] = {10, 20, 30, 40, 50};
for(int i = 0; i < 5; i++)
{
cout << arr1[i] << endl;
}
/*一维数组名称的用途
1、可以统计整个数组在内存中的长度;
2、可以获取数组在内存中的首地址。*/
cout << "整个数组所占空间为:" << sizeof(arr1) << endl;
cout << "每个元素所占空间为:" << sizeof(arr1[0]) << endl;
cout << "整个数组所含元素个数为:" << sizeof(arr1) / sizeof(arr1[0]) << endl;
cout << "数组首地址为(十六进制):" << arr1 << endl;
cout << "数组首地址为(二进制):" << (int)arr1 << endl;
cout << "第一个元素所占地址为(二进制):" << (int)&arr1[0] << endl; //&表示为取置符号
//练习案例:五只小猪称体重,找出最终的小猪
int pigs[5] = {300, 350, 200, 400, 250};
int maxpig = 0;
for(int i1 = 0; i1 < 5; i1++)
{
if(maxpig < pigs[i1])
{
maxpig = pigs[i1];
}
}
cout << "最终的小猪体重为:" << maxpig << endl;
//练习案例:数组元素逆置
int arr2[5] = {1, 3, 2, 5, 4};
int t = 0;
int end = sizeof(arr2) / sizeof(arr2[0]) - 1;
for(int i2 = 0; i2 <= end; i2++)
{
t = arr2[i2];
arr2[i2] = arr2[end];
arr2[end] = t;
end--;
}
for(int i3 = 0; i3 < 5; i3++)
{
cout << arr2[i3] << endl;
}
//冒泡排序法的实现:
int arr3[10] = {4, 2, 6, 8, 0, 5, 7, 1, 3, 9};
int temp;
int end1 = 10;
for(int i4 = 0; i4 < 10; i4++)
{
for(int i5 = 0; i5 < end1 - 1; i5++) //end1不能忘记-1
{
if(arr3[i5] > arr3[i5 + 1])
{
temp = arr3[i5];
arr3[i5] = arr3[i5 + 1];
arr3[i5 + 1] = temp;
}
}
end1--;
for(int j = 0; j < 10; j++)
{
cout << arr3[j];
}
cout << endl;
}
//二维数组定义格式:
/*
1、数据类型 数组名[行数][列数];
2、数据类型 数组名[行数][列数] = {{数据1,数据2},{数据3,数据4},...}
3、数据类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4,...}
4、数据类型 数组名[ ][列数] = {数据1,数据2,数据3,数据4,...}
*/
//统计三名同学的总成绩
int score[3][3] =
{
{100, 100, 100},
{90, 50, 100},
{60, 70, 90}
};
int sum[3] = {0, 0, 0};
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
sum[i] += score[i][j];
}
cout << sum[i] << endl;
}
system("pause");
return 0;
}