本文完整阅读约需 10 分钟,如时间较长请考虑收藏后慢慢阅读~

数组

一维数组

同类元素的集合,称为数组

定义方式

数据类型 数组名 [常量表达式]; 举例:

int     a[5];
float   score[8];
double  d[10];
char    name[256];

初始化


int a[3]; a[0] = 1; a[1] = 2; a[2] = 3; int b[5] = { 1, 2, 3, 4, 5 }; // 省略写法 float score[8] = { 1.0, 1.2 }; // 后面未赋值则为零 char name[] = "Alan"; // 省略写法,单独定义时必须声明大小

一维数组的下标

数组的下标实际上是关于数组第一个元素的偏移量 比如,定义一个数组array[5]。它的第一个元素跟数组的第一个元素的偏移量为0 所以,数组的第一个元素应该是array[0] 数组的第二个元素跟数组的第一个元素偏移量为1 所以,数组的第二个元素应该是array[1] 以此类推,数组的第五个元素与第一个元素的偏移量为4 所以,数组array的第五个元素应该是array[4] 结论: 一位数组最后一个元素的下标为 (长度 – 1) 并且对于一个数组它的第几个元素的下标就是几减一

循环初始化:


#include <stdio.h> int main() { int a[10], b[3], i; // 有规律的循环赋值 for( i = 0; i < 10; i++ ) { a[i] = i; } // 多次输入赋值 for( i = 0; i < 3; i++ ) { scanf("%d", b[i]); } }

注意如果一次输入多个数用scanf循环去接收的话,空格也会被当做字符(或数值)来保存

一维数组遍历

#include <stdio.h>
int main()
{
    int a[8] = { 1, 1, 2, 3, 5, 8, 13, 21 };
    int i;

    for( i = 0; i < 8; i++ )
    {
        printf("%d ", a[i]);
    }
}

一维数组应用示例

#include <stdio.h>
int main()
{
    int a[8] = { 80, 90, 85, 84, 70, 76, 75, 83 };
    int i, max = 0, min = 100;

    for( i = 0; i < 8; i++ )
    {
        if( a[i] > max )
        {
            max = a[i];
        }else if( a[i] < min )
        {
            min = a[i];
        }
    }
    printf("最高分为:%d 最低分为:%d", max, min);
}

二维数组

定义

//数据类型 数组名 [常量表达式][常量表达式];

int     a[56][3];
char    name[5][256];

初始化


// 1)分段赋值 int grade[2][3] = { {80,75,92}, {61,65,71} }; // 2)连续赋值 int a[2][3] = { 80, 75, 92, 61, 65, 71 }; // 3)连续省略赋值 int a[][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

二维数组的遍历


#include <stdio.h> int main() { int grade[4][3] = {82,77,76,90,87,56,87,48,75,86,86,66}; int i, j; for( i = 0; i < 4; i++ ) { for( j = 0; j < 3; j++ ) { if( grade[i][j] < 60 ) { printf("第%d位学生不及格"); continue; } } } }

本讲小结

一、数组由类型说明符、数组名、数组长度(数组的个数)三部分组成
int a[10]; float money[2][3]; // 注意下标

二、数组的初始化
1)声明之后一个个赋值
2)省略形式赋值: char name[] = “Sam”;

三、数组的遍历
通过while、do while、for等循环遍历

四、数组的作用
数组是程序设计中最常用的数据结构,属于构造类型。它将相同类型的数据连续组合在一起,简化了命名和赋值过程。相较单一的数据类型,能够更快更方便的处理更多的数据。