vlambda博客
学习文章列表

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开始,依次往上加;数组的输出也是这个原理。

好了,今天的讲述就到这里了,有什么问题大家可以私聊我!