首页 > C > 数组 阅读:57,774

一维数组的初始化与遍历

< 上一页 一维数组定义 二维数组定义 下一页 >

因为数组是连续存储,所以它支持随机访问,即随便给出一个数组的下标i,就能够很快访问到对应的元素a[i],访问速度快。

一些常见的一维数组初始化:

 

int a[10]={ 0,1,2,3,4,5,6,7,8,9 };

int a[10]={0,1,2,3,4};//10个元素,只显示初始化了前5个元素,后面的默认为0

int a[]={1,2,3,4,5};//未指定数组元素个数,实际上为5个元素

 

    数组如何存放结构体?

typedef struct _person

{

         char name[20];

         char sex;

         int age;

}Person, *PPerson;

 

Person a[10];

strcpy(a[0].name, “tom”);

a[0].sex = ‘M’;

a[0].age = 25;

 

for(int i=0;i <sizeof(a)/sizeof(Person); i++)

{

 

}

 

对于一个长度为n的整型数组,应该如何去访问它的每一个元素呢?

for(int i = 0; i < n; i++)

{

         printf(“a[%d]=%d\n”, i, a[i]);

}

数组的下标是从零开始计算的而不是从1开始计算的,这点对于初学者来说尤其要引起注意。比如,对于一个元素个数为N的数组a,那么它的所有成员为:

a[0],a[1],a[2],…,a[N-1]

所以,该数组的最后一个元素为a[N-1]而不是a[N]。如果试图去访问a[N],那么访问就越界了。越界访问一个数组,其行为未定义。如果这个地方的内存不存在,那么可能会造成程序崩溃。而C语言的数组,是不会帮助你检测这个越界行为的。

C语言程序中,数组有着广泛的应用。数组作为一种数据结构,一般就是用来存放程序运行中的各种待处理的数据。

数组用来计算斐波那契数列

斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

这个数列从第三项开始,每一项都等于前两项之和。

#include <stdio.h>

void main(void)

{

    int a[20],i;

    a[0]=1;a[1]=1;

    for(i=2;i<20;i++)

    {

        a[i]=a[i-1]+a[i-2];

    }

    for(i=0;i<20;i++)

    {

        printf("%d ",a[i]);

    }

}

 

数组统计平均成绩

int _tmain(int argc, _TCHAR* argv[])

{

         int a[10];

         int sum =0;

         for(int i = 0; i<10;i++)

         {

                   printf("Please input  the score for %d:\n",i+1);

                   scanf_s("%d", &a[i]);//这是数组元素的输入方法,a[i]是数组的第i个元素,所以需要使用&求出它的地址。

         }

         for(int i = 0;i<10;i++)

         {

                   sum+=a[i];

         }

         printf("The sum is:%d, and average score is :%f\n", sum,(float)sum/10);

         return 0;

}

冒泡法排序:

冒泡法的排序思想是:从第n个元素(a[n-1])开始,扫描数组,比较相邻两个元素,如果次序相反则交换。如此反复,直到没有任何两个违反相反原则的元素。

void bubble_sort(int a[], size_t n);//a为数组名,n为数组元素个数

{

    for(int i = 0;i<n-1;i++)

    {

        for(int j=n-1;j>i;j--)

        {

            if(a[j-1]>a[j])

            {

                int tmp = a[j-1];

                a[j-1]=a[j];

                a[j]=tmp;

            }

        }

    }

}

< 上一页 一维数组定义 二维数组定义 下一页 >

周哥教IT,分享编程知识,提高编程技能,程序员的充电站。跟着周哥一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

当你决定关注「周哥教IT」,你已然超越了90%的程序员!

IT黄埔-周哥教IT技术交流QQ群:213774841,期待您的加入!

二维码
微信扫描二维码关注