您的位置:首页 > 编程语言 > C语言/C++

黑马程序员关于c语言数组详解

2015-04-21 12:09 225 查看


------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -----

我们想要保存一个int型数据可以用一个变量来保存,可是如果我们要保存相同类型的100个int型的变量呢?不可能用100个变量来保存吧,于是我们用到了数组,用数组来保存这100个数据就简单方便多了。
数组:数组从字面意义上解释,就是一组数据,所以数据就是用来保存一组数据的。
特点:只能存储相同类型的数据,可以是int,也可以是float,或者其他一些相同的数据类型,我们把保存的数据称为“元素”。

一维数组:
1.定义: 声明数组的类型和元素个数

2.格式:元素类型 数组名[元素个数] 比如:int ages[5]

3.初始化
正确初始化:
int ages[5]={18,19,23,27,21};
int ages[]={18,19,23,27,21};
int ages[5]={18,19,23,27};
int ages[5]={[1]=19,[4]=21};
列举一些错误写法:
int ages;
int ages[];
int[5] ages;
ages[5]={18,19,23,27,21};
ages={18,19,23,27,21};
4.内存分析:
数组存储空间大小要合适

内存分配是从高地址到低地址进行的,但是数组元素是从低地址到高地址开始分配的
数组名可以作为首元素地址进行访问,比如ages,就可以当做ages[0]的地址

下面举一个例子:输入5个学生的成绩,计算并输出平均分,最高分和最低分。
#include <stdio.h>
int main()
{
float average(int a[],int n);
int Max(int a[],int n);
int Min(int a[],int n);
float a;
int b,c;
int score[5];
printf("请输入5个学生的成绩:\n");
for(int i=0;i<5;i++)
scanf("%d",&score[i]);
a=average(score,5);
b=Max(score,5);
c=Min(score,5);
printf("平均分是:%0.2f,最高分是:%d,最低分是:%d\n",a,b,c);
return 0;
}

float average(int a[],int n)
{
float sum=0;
for(int i=0;i<n;i++)
sum += a[i];
return sum/n;
}

int Max(int a[],int n)
{
int max = a[0];
for(int i=1;i<n;i++)
if(max < a[i])
max = a[i];
return max;

}

int Min(int a[],int n)
{
int min = a[0];
for(int i=1;i<n;i++)
if(min > a[i])
min = a[i];
return min;

}


运行截图:

二维数组:

1.定义: 声明数组的类型和元素的行数和列数

2.格式:元素类型 数组名[行数][列数] 比如:int a[3][4];

3.初始化
正确初始化:
int a[2][3]={1,2,3,4,5,6};
int a[2][3]={{1,2},{3,4},{5,6}};
int a[][3]={1,2,3,4,5,6};
列举一些错误写法:
int a[2][3];a[2][3]={1,2,3,4,5,6}; //二维数组定义和初始化不能分步,要在定义声明的时候进行初始化
比如初始化三个人(小红,小明,小刚)的数学和英语成绩并打印出来就可以用二维数组为:

#include <stdio.h>
int main()
{
float score[3][2]={89,78,90,88,86,96};
// float score[3][2]={{89,78},{90,88},{86,96}};
printf("小红的数学成绩:%0.2f,英语成绩:%0.2f\n",score[0][0],score[0][1]);
printf("小明的数学成绩:%0.2f,英语成绩:%0.2f\n",score[1][0],score[1][1]);
printf("小刚的数学成绩:%0.2f,英语成绩:%0.2f\n",score[2][0],score[2][1]);
return 0;
}


运行截图:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: