C++程序学习,第五部分——数组

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值