概述
1. 数组
数组(array)是一些独立数值的集合,具有两个显著的特征:
(1) 数组是有序的。必须能把数组中的每个分量按顺序排列。
(2) 数组是同质的。数组中的每个数值必须有同样的类型。
数组中的每一个数值称为一个元素(element)。
在C语言中,每个数组有两个基本特性:
(1) **元素类型(**elementtype):存储在数组元素中的数值的类型。
(2) 数组大小(arraysize):数组所包含的元素个数。
1.1 数组声明
和C语言中其他的变量一样,数组在使用前必须声明。
数组声明的一般形式。例如:
int intArray[10];
声明了一个名为intArray
,且拥有十个元素的数组,每个元素的类型都是int
型的。
数组中的每一个元素都由对应的一个叫做下标(index)的数值确定。在C语言中,数组的下标从0开始。
在大多数情况下,应该用一个符号化的常量而不是一个具体的数值来指定数组的大小,以便将来可以容易地修改数组的大小。
例如,定义数组应该将大小定义成常量:
#define NElements 10
然后把声明写为:
int intArray[NElements];
1.2 数组选择
要指定数组中的一个元素,既需要指定数组的名字,又要指定对应于元素在数组中的下标。
在数组中指定特定元素的过程叫选择(selection)。
在C语言中,选择通过在数组的名字后面加上方括号,然后在方括号中加上下标来表示。
结果是一个选择表达式(selection expression),形式如下:
array-name[index]
在程序中,选择表达式的作用和一个变量的作用相似。可以把它用在一个表达式中,特别是,可以给它赋值。
用下列语句对scores
数组中的元素赋初值0.0:
#define NJudges 5
double scores[NJudges];
int i;
for (i = 0; i < NJudges; i++) {
scores[i] = 0.0;
}
1.3 一个简单的数组实例
数组操作的实例gymjudge.c
,要求用户输入每个裁判员给出的分数,然后显示平均分数。
具体实现如下:
#include <stdio.h>
main() {
#define NJudges 5
double scores[NJudges], score, average;
double total = 0.0;
int i;
printf("Please enter a score for each judge.n");
for (i = 0; i < NJudges; i++) {
printf("Score for judge #%d: ", i);
scanf("%lf", &score);
scores[i] = score;
}
for (i = 0; i < NJudges; i++) {
total += scores[i];
}
average = total / NJudges;
printf("The average score is %.2lfn", average);
}
运行后,可得如下结果:
1.4 改变下标值的范围
在C语言中,每个数组的第一个元素的下标值是0。在现实生活中,习惯从1开始给元素编码。
因此,程序改为要求用户输入编号为1~5的裁判给出的分数。
解决该问题存在两种标准方法:
(1) 在内部使用的下标值从0~4,但当从用户处得到数据或是在屏幕上显示数据时,下标值加1。
由此,上述程序gymjudge.c
中唯一需要改动的,是为每个输入值显示提示信息的printf
语句。
具体改动如下:
printf("Score for judge #%d:", i+1);
(2) 声明一个有额外元素的数组,数组元素的下标值从0~5,然后完全忽略0元素。
由此,主程序改为:
#include <stdio.h>
main() {
#define NJudges 5
double scores[NJudges+1], score, average;
double total = 0.0;
int i;
printf("Please enter a score for each judge.n");
for (i = 1; i <= NJudges; i++) {
printf("Score for judge #%d: ", i);
scanf("%lf", &score);
scores[i] = score;
}
for (i = 1; i <= NJudges; i++) {
total += scores[i];
}
average = total / NJudges;
printf("The average score is %.2lfn", average);
}
第一种方法:
优点是,可以方便地使用现有的基于此机制的程序;
缺点是,程序需要两种不同的下标表示方法,考虑两种下标表示方法会增加程序处理的复杂性。
第二种方法:
优点是,内部的下标表示方法与和用户进行交流的方法是一致的。
参考
《C语言的科学和艺术》 —— 第11章 数组
最后
以上就是孤独冬天为你收集整理的(十一)数组 -- 1. 数组1. 数组的全部内容,希望文章能够帮你解决(十一)数组 -- 1. 数组1. 数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复