C++程序学习,第五部分——数组
目录:
P42 数组 一维数组定义方式
P43 数组 一维数组-数组名
P44 数组 一维数组案例-五只小猪称体重
P45 数组 一维数组案例-元素逆置
P46 数组 一维数组-冒泡排序
P47 数组 二维数组定义方式
P48 数组 二维数组-数组名
P49 数组 二维数组案例-考试成绩统计
P42 数组 一维数组定义方式
通过数组的名,来访问里面的每个元素。里面的数据是同一类型,比如,都是整型,或者都是浮点型。
初学者容易犯的错误,数组序号是从0开始的,不是从1开始的。
利用循环,解决复杂问题,善于使用循环。
小结:
1、数组名的命名规范与变量名规范一致,,不要和变量重名
2,数组中的下标是从0开始索引的。
P43 数组 一维数组-数组名
sizeof(arr),统计数字占用内存空间大小。
&arr [0]看第一个元素的首地址
小结:数组名是常量,不能进行赋值
P44 数组 一维数组案例-五只小猪称体重
任务:找数组中最大的值。
这个位置是ok的。
如果放在for循环内部,那么这个运行结果是这样的。
为什么呢?:我的思考是在循环体内部的话,每循环一次都要输出,而不是全部循环完之后才输出。
P45 数组 一维数组案例-元素逆置
互换思路:
1,想实现两个元素的互换,先创建起始下标和结束下标,然后让起始下标的元素和结束下标的元素进行互换。
2,执行完互换后,起始下标要++,结束下标要–,直到起始下标不再小于结束下标的时候停止互换。
两个for循环中都使用了同一个i,但是没有发生冲突,应该是在循环内部。
这个学起来感觉有点费劲呀。
小结:
1、能不能学会这套逻辑,进行首尾互换。
2、临时值的定义。
P46 数组 一维数组-冒泡排序
交换代码一定要熟记。
一定要看懂这张图片,外侧循环总共几轮,内侧循环几轮。
我的思考:for循环中,循环体内的变量与循环中规定的变量可以不是一个,并且相互之间不干涉。
7月18号又运行一次,没有运行成功,还是没有想明白,先放这里了。
代码如下,没有找到原因。
#include<iostream>
using namespace std;
int main()
{
int arr[] = { 4,2,8,0,5,7,1,3,9 };
cout << "排序之前的顺序为: " << endl;
for (int i = 0; i < 9; i++)
{
cout << arr[i] << " ";
}
cout << endl;
//开始冒泡排序
for (int i = 0; i < 9 - 1; i++) //这里的i决定的是轮数
{
for (int j = 0; j < 9 - i - 1; j++)
{
if (arr[j] > arr[j++])//交换代码一定要熟记
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
cout << "排序后结果为: " << endl;
for (int i = 0; i < 9; i++)
{
cout << arr[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
P47 数组 二维数组定义方式
这样也可以输出,但是太麻烦。可以使用一个嵌套循环,来解决。
只要是矩阵,都可以用嵌套循环做打印。
相比较第三种而言,第二种更为直观。第三种是程序可以自动识别,一到六个数据,前三个属于第一行,后三个属于第二行,因为二维数组定义程序已经给出了这个规则。
小结:四种数组的定义方式,推荐使用第二种,非常直观。
P48 数组 二维数组-数组名
我先做的。
小结:
1,用数组名读取首地址。
2,用数组名查看内存空间。
P49 数组 二维数组案例-考试成绩统计
我做出来了,哈哈。
新操作,每行相加的。
加上这个操作后,名字的输出也更加人性化。
二维数组案例代码
#include<iostream>
using namespace std;
#include<string>//只要你想用C++中的字符串,非常简单,只需要包含头文件,先包含头文件才可以用。
int main()
{
// 创建二维数组,3行3列。
//矩阵形式都可以用循环来搞定。
int scores[3][3] =
{
{100,100,100},
{90,50,100},
{60,70,80}
};
string names[3] = { "张三","李四", "王五" };
//统计每个人的总分数
for (int i = 0; i < 3; i++)
{
int sum = 0;//统计分数总和的变量
for (int j = 0; j < 3; j++)// for循环内部是做求和统计,输出的话,需要在for循环之后输出,如果输出需要循环,那么,可以在循环体内部实现循环输出。
{
sum += scores [i][j];
}
/*cout << "第" << i + 1 << "个人的总分为: " << sum << endl;*/
cout << names[i] << "的总分为: " << sum << endl;
}
system("pause");
return 0;
}