C语言之数组的定义与使用
大家好!今天我们来讲一下数组的使用。
在程序设计中常常需要大量的相同数据类型的数据,比如说排序一个50人的班级成绩,这时如果我们按照简单的方法来定义这些数据,那么将是一个耗时又费力的操作,这时我们的数组便应运而生了。
在C语言中,数组有以下几个特点:
数组可以看做是一个变量的集合,在这个集合中,所有变量的数据类型都是相同的;
每个数组元素的作用相当于简单的变量;
数组的大小(数组元素的个数)必须在定义时确定,在程序中不可改变;
我们来看看一维数组的定义形式是什么?
储存类型 数据类型 数组名 数组大小;
例如:inta[6];在不特别声明的时候,数组的储存类型就是static型。
数组名为a,它有6个元素,分别是:a[0]、a[1]、a[2]、a[3]、a[4]、a[5],每个元素都代表着一个整型元素。
在使用数组的时候需要注意,C语言对于数组的下标值是否越界不做检测;另外,数组不能整体输入和整体输出,只能对其数组元素进行输入和输出。
我们来看一个程序,这个程序是将班级成绩输入,从大到小进行排序,然后再输出。
我们假定这个班级只有5个人。
程序如下:
#include<stdio.h>
int main()
{
inta[1000], z=1,i, j,n,max;
printf("请输入班级人数 n :");
scanf_s("%d",&n);
printf("请输入成绩:\n");
for (i =0; i < n; i++)
{
scanf_s("%d",&a[i]);
}
for (j =1; j < n; j++)
{
for(i = 0; i < n - 1; i++)
{
if(a[i] < a[i + 1])
{
max= a[i + 1];
a[i+ 1] = a[i];
a[i]= max;
}
}
}
for (i =0; i < n; i++)
{
printf("第%d名:%d\n", z, a[i]);
z++;
z<= n;
}
}
程序示例截图
其中我们在程序中所使用的排列方式是:冒泡排列。
冒泡排列是数组排列中最简单的一种排列方式,其原理如下(从大到小排列):
第一趟:先拿出数组中的第一个元素,逐个进行比较,如果比他大就交换位置,如果他大,不交换位置,在用这个比他小的数据往后比较。这时我们就比较出其中最小的数据了。
第二趟:类似上面的比较,这时比较出倒数第二小的数了。
····
我们在代码中的j变量控制的就是趟数,注意有多少数据就要比较多少趟。
我们具体来看看:
int a[5]={3,2,1,4,5};
第一趟:
2小于3,交换位置,{3,2,1,4,5};
2大于1,不用交换位置,{3,2,1,4,5};
1小于4,交换位置,{3,2,4,1,5};
1小于5,交换位置,{3,2,4,5,1};
此时,第一趟比较结束,已经出来最小的数了。
依次进行下面的第二趟·····,在这里我就不写了,请读者自己试验。
说完冒泡排列我们再来说说数组的输入。
如同代码所示,数组的输入是利用for循环进行逐个输入的,i是数组的下标,从0开始,依次往上加;数组的输出也是这个原理。
好了,今天的讲述就到这里了,有什么问题大家可以私聊我!