2019-12-24

数组总结

一、一维数组的定义
1.格式:
类型标识符 数组名[常量表达式];
类型标识符可以是任何基础数据类型,也可以是结构体等构造类型,相同类型的数组可以一起定义。数组名必须是合法的标识符。常量表达式的值即为数组元素的个数。
例如,“int h[5];”就表示定义一个一维数组h,共5个元素,编号从0开始到4,每个都是int类型。
ps:1.int[]中数字可以大一点保证不超过个数。
2.元素引用时,不能一次引用整个数组,只能逐个引用数组的单个元素。
二、一维数组的输入和输出
1.格式:
int h[100];
for(i=0;i<100;i++) cout<<h[i];
2.批量输入一般有两种方法:
①键盘读入
例:
int h[100];
for(i=0;i<100;i++) cin>>h[i];
②直接赋值
例:
int h[100],a[20];
for(i=0;i<100;i++) h[i]=0;
for(i=0;i<20;i++) a[i]=i*2+1;
3.整体赋值
①memset函数
按照字节进行赋值,一般用在char型数组中,使用前需要包头文件:#include。
例:,“memset(h,0,sizeof(h));”就是将h数组所有元素均赋值为0。
②fill函数
fill函数是给数组安元素进行赋值,可以是整个数组,也可以是部分连续元素,可以赋任何值。使用前需要包头文件:#include。
部分元素或者所有元素赋值。
例:
int a[10]={0,1,2,3,4,5,6,7,8,9};
int a[10]={0,1,2,3,4};//部分赋初值,后面的元素自动初始化为0
int a[]={1,2,3,4,5};//不定义数组长度,直接根据赋值个数定

memset和fill函数作用:
在这里插入图片描述
在这里插入图片描述

三、一维数组的插入删除
插入一个元素,需要找到插入位置x,将这个元素及其之后所有元素依次往后移一位,再将给定的元素插入到位置x。删除某一个元素,也需要先找到删除的位置x,将下标为x+1及其之后的所有元素依次向前移一位,覆盖原来位置上的元素。
四、一维数组的查找统计
1.一维数组的查找操作,就是在一维数组中查找有没有某个元素,它的值等于指定的值x。
2.常见的查找算法有“顺序”查找和“二分”查找。
①顺序查找就是按照从前往后的顺序,将数组中的元素依次与要查找的数x进行比较。
②二分查找又称“折半”查找,其优点是比较次数少,查找速度快。
二分法查找的算法框架可以如下:
int left=0,right=n-1;
int find=n;//find标记找到的位置,初始化为n,表示没找到
while(left<=right){
int mid=(left+right)/2;
if(a[mid]==x){//找到了,就标记位置,并退出循环
find=mid;
break;

if(x < a[mid] right=mid-1;//x只能在左半部分
if(a[mid]<x) left=mid+1;//只能在右半部分

if(find!=n) printf(“%d\n”,find);
else peintf(“not find\n”);
五、一维数组的应用
六、二维数组定义
1.格式:
类型标识符 数组名[常量表达式1][常量表达式2];
ps:常量表达式1的值表示第一维大小,常量表达式2的值表示第二维大小,常量表达式1和常量表达式2的乘积就是二维数组的元素个数。
例:
int h[4][5];表示数组有20个元素,每个都是int型。
2.二维数组的引用
格式:
数组名[下标1][下标2]
例如:
cin>>h[3][1];h[3][1]=h[3][1]*2;cout<<h[3][1];
七、二维数组应用举例
八、数字方阵
1.n阶奇数幻方
2.螺旋方阵
3.蛇形矩阵
在这里插入图片描述
在这里插入图片描述

九、收获感想
通过学习数组学会了如何利用数组去编辑一些复杂的计算问题,如何利用数组去解决生活上的一些问题,如:成绩排序,队伍调整,抽奖等。数组题目中有大量的for语句的使用,通过学习数字加强了for语句的使用熟练度。
学习了数组之后一些问题大大简化,学习数组之前,一些数据较多的题目会比较烦琐,学习数组之后这些题目变比较简单解决。
在做题时遇到过一些问题
在解决与指定数相同的个数问题中
#include
#include
using namespace std;
int main(){
int i,a[101],p,x=0,h;
cin>>i;
for(h=0;h<i;h++)
cin>>a[h]; cin>>p;
for(h=0;h<i;h++){
if(a[h] == p)x++;
}
cout<<x;
return 0;
}
我错把“==”输成“=”导致最后运行时输出的是h而不是x。这反应出对符号的用处还不大熟练。
数组的难度相比之前感到更难,运用也比较广泛,期中有些题目结合了前面所学知识,需要运用大量时间去练习,有些较难的题目要反复修改很多次,有时一个小时才能编程出来一两个程序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值