C语言之数组的基本概念
本文完整阅读约需 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等循环遍历
四、数组的作用
数组是程序设计中最常用的数据结构,属于构造类型。它将相同类型的数据连续组合在一起,简化了命名和赋值过程。相较单一的数据类型,能够更快更方便的处理更多的数据。