数组专项总结

数组专项总结

数组学习心得

学习数组的目的是让解决复杂问题更加简单和方便,比如一些数字矩阵问题。在做题时,往往需要找出数字之间的关系或者说是解析式。我觉得数组专项的难点就在与题目中各种关系和逻辑的寻找,我几乎每次都会摸不到头脑,也放弃过好几次。再看两遍课本例题会有些思路,比如多定义个数组来表示方向,让数字在矩阵中按程序设计的走。从而解决蛇形,螺旋这样数字拐弯的问题。这时就会有很多需要注意的易错点,比如数组的整体输出和逐个输出的区别,需要换行的地方和需要换方向的地方,多个数组的赋值混乱,写的程序太冗杂等等问题,都是我在写程序的时候经常犯的问题,有几次写完了程序运行不出来差点崩溃,经过这段时间的学习我提升了自己的耐心,但还有许多需要继续改进的地方,我认为课后的复习非常重要,不复习的话自己刚学会的一点东西到用的时候就不会了。总之,我已经感受到了c++的恐怖,也更能感受到写成功后的喜悦。

数组知识点

数组就是一个集合,里面存放了相同类型的数据元素
特点:数组中给个元素都是相容的数据类型,在内存中连续存放

一维数组

一维数组的的三种定义方式:

  1. 数据类型 数组名[数组长度]
  2. 数据类型 数组名[数组长度] = {值1, 值2, 值3}
  3. 数组类型 数组名[] = {值1, 值2, 值3…}
    2.一维数组名的用处
    可以统计整个数组在内存中的长度,可以获取数组在内存中的首地址。

3.一维数组的定义和初始化
数组下标都是从0开始的
注意 下标越界是大忌

4.一维数组的输入和输出
1)键盘逐个读入数组元素值
2)给每个数组元素直接赋值

5.一维数组的插入删除
例如:排队问题

for(i=1;i<=n;i++)scanf("%d",&q[i]);
scanf("%d",&x);
for(i=n;i>=x;i--)q[i+1]=q[i];
q[x]=q[n+1];
for(i=1;i<=n;i++)printf("%d",q[i]);
printf("%d\n",q[n]);

6.一维数组的查找统计

7.一维数组的元素排序
选择排序,冒泡排序,插入排序

8.c++sort函数

二维数组

1.二维数组的定义和初始化
2.二维数组的存储个元素引用
3.二维数组的输入输出
4.让人头疼的数字方阵
数字方阵的解决办法:解析法找出通项公式,模拟法动态填数。
例如:蛇形方阵

int i = 0,j = 0;
	int flag = 1; 
	m[0][0] = 1;
 
	for (int c = 2; c <= n*n; c++)  
	{
		if (flag == 1)
		{
			if (i - 1 >= 0 && j + 1 < n)
			{
				i--;
				j++;
				m[i][j] = c;
			}
			else if (j + 1 < n)
			{
				j++;
				m[i][j] = c;
				flag = -flag;
			} 
			else if (i + 1 < n)
			{
				i++;
				m[i][j] = c;
				flag = -flag;
			}
		}

字符数组

字符数组的赋值
字符数组的输入输出
快速读入数字字符串函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值