一 使用数组的目的:可以让多个数据使用一个变量,用不同的下标加以区分;
数组的需要先定义后使用,int a[10];//定义了一个长度为10,存放int型数据的数组;以下定义是错误的:
int a[a+1];//不能有表达式
int b[n];//不能有字母
int n=10;
int a[n];//错误,有字母
总结:[ ]中的值只能是正整数
二 数组的引用:通过下标引用
int a[10];这十个元素分门别为a[0]至a[9];引用时注意不要下标越界;这十个数在内存中连续存放
三 数组的赋值:数组的赋值需要在未定义完时候进行,如 int a[10]={1,2,4};不可以写成 :
int a[10];
a[10]={1,2};
int a[10]={1,2};//不完全赋值,a[0]到a[1]值分别为1,2,其余均为0(注意不是垃圾数据);
定义数组不声明数组个数的时候必须赋初值,数组个数取决于初值个数;
int a[]={1,1,1};//数组个数为3
四 数组的遍历使用for语句;
数据在数组中存储的三个特点:
1.从0开始;
2.连续存放;
3.上述两个特点必须动态满足(不论删除数据还是增加数据);
五 对于数组的输入,插入,删除,求均值,排序的讲解:
编写程序,对若干名同学成绩进行处理,包括输入成绩,删除成绩,插入成绩,求平均值,按升序排序:
输入成绩:因为输入学生不定,所以不能提前预知输入的个数,所以我们规定当输入为 -1 时候结束输入
程序代码:
printf("请输入数据(当输入-1时候结束):\n");
scanf("%d", &num);
for(i=0;i!=num;i++)
{
score[i]=num;
printf("请输入数据(当输入-1时候结束):\n");
scanf("%d", &num);
}
插入成绩:插入成绩分两步完成 第一步是查找 第二步插入(找到原有成绩,并将新成绩插到原有成绩之前)
1.查找的第一步是找到原有成绩,第二步是找到其下标i,第三步是输入要插入的成绩
2.插入采用前插法,具体查找的过程:
已知:插入成绩 newScore
数组的有效元素:count
插入点下标: j
插入成绩的 伪代码:
for(i=count;i>j;i--)
{
score[i]=score[i-1];
}
score[i]=newScore;
count;
将倒数第二赋值给倒数第一,将倒数第三赋值给倒数第二,找到将原有插入点下标的数据赋值给后一位,留下的空位由插入点数据补充;
3.查找的目的是找到旧成绩的下标
伪代码:
for(i=0;i<count&&score[i]!=oldScore;i++)
;
if(i>count)
printf("插入错误");
else
;//真正插入的代码
删除成绩:
1.输入要删除的成绩
2.找到这个成绩(从头依次查找)
3.删除这个成绩(将之后的成绩依次提前一位)
伪代码如下
printf("请输入删除的成绩:\n");
scanf("%d" , &delescore);
for(i = 0; i<count&&score[i]! = delescore;i++)
;
if(i>count)
printf("未有要删除的成绩\n");
else
{
for(;i<count-1;i++)
{
score[i]=score[i+1];
}
}
求和:相加除以人数即可:
按升序排序:将一堆混乱的数据从新有小到大排序
for(i = 0;i < count ;i++)//控制放置最小的数字
for(j = i+1;j < count ;j++)
{
if(score[i] >score[j])//将小的放前面
{
num = score[j];
score[j] =score[i];
score[i] = num;
}
}
转载于:https://blog.51cto.com/11631662/1783232