数组总结

一.一维数组

⒈格式

数组名[常量表达式];(不能为变量)

例如:int h[50];表示定义一个一维数组h,共有50个元素,编号从0到49。

还有以下几种写法:

int d[50],g[100];

int a[5*10];

#define N 50

int b[N];

如果要储存两个类别的,可以定义两个数组。

注意:数组名[下标],下标只能为常量或整形表达式,一般从零开始,在定义时,一般要比规定的大几位数,否则会出现下标越界。

2.一维数组的用处

①.如何使两个数组相等

方法一:逐个元素赋值

b[0]=a[0],b[1]=a[1]……

方法二:通过循环赋值

int i;

for(i=0;i<5;i++){b[i]=a[i];}

②可以利用sizeof函数直接求出一个数组所占的内存空间。

整个数组所占内存的大小等于数组元素类型的大小乘以数组元素的个数。

附:int占4个

short int占2个

long int占4个

无符号整形unsigned [int]占4个

无符号短整形unsigned short [int]占2个

无符号长整形 unsigned long [int]占4个

 

③常用于大批量处理数据

输入样例

int h[50];

for(i=0;i<=49;i++)cin>>h[i];

另外,还有整体赋值法

(1)memset函数,头文件#include<cstring>是按字节进行赋值,一般用在char类型中,如果是int型,一般赋值为0和1

例:memset(h,0,sizeof(h));就是将h数组所有元素均赋值为0.

(2)fill函数,头文件为#include<algorithm>

例:fill(a,a+10,5)意思是将a数组的前十个元素赋值为5.

另外,还可以进行部分元素赋值

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};//不定义数组长度,直接根据赋值个数定。

④可以进行多个数的排序

(1)插入排序

基本思想:把所有待排序元素分成前后两段,前一段是已经排好序的,后一段是待排序的

(2)冒泡排序

冒泡排序基本流程为:第一轮先是第一项与第二项,第二项和第三项....第n-1项与n比较,

 

将大的一项排在后面的一项,这样就保证了最大一项可以到达最后,

第二轮在挑出第二大的数,将其放在倒数第二位,

这样一项项的将相对最大值挑出来,就完成了从小到大的排序,这种方法就是冒泡排序。

(3)选择排序

从待排序序列选择最小的元素与序列第1个元素交换;从剩下的元素中选择最小的缘续与序列第2个元素交换;依次类对直到最后一个元素。

#include<iostream>

using namespace std;

int main(){

int n,i,j,k,temp,h[101];

cin>>n;

for(i=1;i<=n;i++)cin>>h[i];

for(i=1;i<=n;i++){

k=i;

for(j=i+1;j<=n;j++)

if(h[j]<h[k]) k=j;//在i~n之间的最小元素

temp=h[i];

h[i]=h[k];

h[k]=temp;//将i~n之间的最小元素放到第i个位置}

for(i=1;i<n;i++) cout<<h[i]<<" ";

cout<<h[n]<<endl;

return 0

}

二.二维数组

1.格式

类型标识符 数组名[常量表达式1][常量表达式2];

二维数组就可以看成是行和列的关系

在定义二维数组时,可以进行初始化赋值

例如 int a[2][3]={{1,2,3},{4,5,6}};//分行初始化

     int a[2][3]={1,2,3,4,5,6};//不分行初始化

 

2.例题 杨辉三角形

输入正整数n输出杨辉三角形的前n行。见课本170页

 

三.字符数组

1.一个字符组只能存一段文字

2.在scanf读入数组中,空格作为间隔符,不作为文字的内容。scanf函数中所用头文件为#include<cstdio>

3.两个字符串整体不可比较,若要比较相不相等可以用

if strcmp(str[i],str[j])

若等于0则相同,若大于零,则第一个大,反之第二个大。

4.如果数字和字符混输

cin>>n;

getchar( );

gets(s1);

cout<<n<<" "<<s1<<endl;

5.在计算机字符串的末尾都会有一个空字符\0,也就是说,在计算字符所占数时,要多出一个。

 

 

 

 

四.感悟

  学习程序设计将近一个学期了,真的感受到它的难度不亚于数分高代,在做平时的题的时候,真的是很难很难,一个是对于平常的知识程度把握不够,更不用说是其他的知识了,在一开始的第一次作业十道题的时候,感觉还挺容易,可到后来慢慢的我觉得越来越跟不上了,知识难度的加大,有时候也想要过放弃,但是现在的我们如果不趁现在多学点知识,那上大学还有什么用,还有两周的时间,还有学习的机会,相信自己可以把这门课学好。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值