数组学习总结

数组的使用是为了便于储存和处理较为庞大的数据,当一个问题十分简单而具有巨大数据时,如果不利于数组来写程序,这个程序将会变得很长,费时费力,利用数组可以将庞大的数据存进去,简短程序,化繁为简,一目了然。
数组的类型有一维数组、二维数组、多维数组和字符数组。
一.一维数组
具有下标类型的数据类型是数组,a[i]来代替a1,a2,a3,…,an,方括号中的i称为下标。
当数组中每个元素只带有一个下标时,就是一维数组。
1.格式:
类型标识符 数组名[ 常量标识符 ]
细节1:常量表达式可以是常量和符号常量,但一定不能是一个变量。
细节2:数组包括的元素下标从0开始。
2.初始化
类型标识符 数组名[ 常量表达式 ]={值1,值2,…}
例如 int a[5]={1,2,3,4,5}
细节1:仅对前几个元素赋值时,剩余的元素默认为0。
细节2: int a[ i ]={ }即将元素全赋值为0。
细节3:在主函数之外定义数组未赋初值时,元素默认为0,在主函数内部,被默认为一个随机大数。
3.数组越界
使用数组时应注意不要越界,即在定义元素个数的下标范围内使用,可以在定义数组时把范围定的比要求条件更大些,以防止越界的发生。
4.排序问题
利用数组可以使解决排序问题更加简洁
1.选择排序

{
int i,j,min;
for(int i=0;i<n-1;i++)
{
min=i;
for(int j=1;j<n;j++)
if(a[j]<a[min])
min=j;
if(min!=i)
swap(a[i],a[min])
}
2.冒泡排序

for(int i=1;i<=n;++i)
cin>>a[i];
for(int i=1;i<=n-1;++i)
for(int j=1;j<=n-i;++j)

if(a[j]<a[j+1]) swap(a[j],a[j+1);
}
3.插入排序

{
for(i=1;i<num;i++)
{
l= i-1;temp=a[i];
while(l>=0&&a[l]>temp)
{
a[l+1]=a[l];
l–;
}
a[l+1]=temp;
}
}
二.二维数组
当一维数组元素的类型也是一维数组时,便构成了“数组的数组”,即二维数组。
格式: 数据类型 数组名 [ 常量表达式1 ][ 常量表达式2];
二维数组可以看成一个矩阵,下标分别表示行和列。

利用双重嵌套循环输入二维数组,可以实现矩阵的输入和处理。
三.字符数组
元素为字符的数组叫字符数组。可以存放字符序列或者字符串。
1初始化
(1)用字符初始化数组
例如char a[2]={ ‘ a‘ ,‘ b‘};每个字符用单引号扩起来,逗号分隔。
易混点:字符数组可以存多个字符,也可以存字符串。两者的区别是字符串有结束符(\0)。在一维数组中存带有结束符的多个字符称为字符串,但是一维数组不等于字符串。
(2)用字符串初始化数组
要注意字符串的长度应小于或等于字符数组的范围。
(3)元素赋值
可以给数组元素单个赋值
字符常量和字符串常量的区别:
1.字符常量由单引号括起来,字符串常量用双引号。
2.字符常量只能是单个字符,字符串常量则可以是多个字符。
3.可以把一个字符给一个字符变量,但不可以把一个字符串常量给一个字符变量。
4.字符常量占一个字节,字符串常量占的比字符串字节数加1。
字符串的输入输出
输入
用scanf时得到的一段文字没有空格,使用时也不需要加取地址符,输入多个字符串时以空格隔开。
用gets时读入一整行文字包括空格,只能输入一个字符串,gets(字符串名称)。
输出
printf(“%s”,字符串名称);
输出只能是字符串名称,不能是数组元素,printf(“%s”,a[5])是错误的。
puts(字符串名称)
输出一个字符串和一个换行符。

字符串处理函数的头文件是string
最近做题常用的是strlen(字符串名)计算字符串长度,终止符不算在长度之内。

数组可以适用于大数据的分析计算和控制处理,一维数组将大量数据存入,是繁杂的程序简化,二维数组可以实现类似矩阵类型的问题,将数据存储达到二维的层次,以解决更为复杂的几何和实际问题,字符数组与二维数组等结合起来使用,让几何矩阵问题得以解决,避免繁冗的计算,找出规律充分发挥计算机的高效率。

感悟
学了数组以后在回去看看原来的问题,甚至是原来觉得很困难的不好想的难题,利用
新学的数组知识,难题也不是太难,一个问题往往有多种解决办法,用数组代替之前的循环可以简化程序,同时也更易理解。当掌握知识越来越多的时候,也就是难题越来越少的时候。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值