一维数组的引用
引用一维数组的一般形式为:
数组名[下标]
(1)数组元素可以作为一个独立的基本类型的变量来使用。例如:
int a[5]; /*定义数组 */
a[0] = 15; /* 数组元素 a[0] 赋值为 15*/
(2)引用数组时,下标可以是整常数,也可以是整型表达式,但不能是小数。例如:
设有“int a[10];”,则 a[2 + 3],a[6]都是合法的数组元素,但 [6.3] 是非法的。
(3)引用数组元素时,可以使用变量的值作为下标。例如:
for(i=0;i<10;i=i+1)
printf ( "%d",a[i] );
该语句的功能是用for 循环语句,逐一输出数组 a 中各元素的值。如果使用基本的交量,则需要 10个同样形式的语句才能完成。此例说明:通过数组可以对相同类型的组数据进行统一处理,从而使得程序显得更加简洁。
(4)参加处理的只能是数组的单个元素,而不能对数组整体进行处理。例如:
for(i=0;i<10;i=i+1)
printf ( "%d",a); //该程序 并不能输出数组 a 中的各元素值
例题
例1.按学生学号的大小顺序,记录某班(3人)学生的数学课程的成绩。
分析:通过循环依次输入三个人的数学成绩,并通过循环再依次输出三个学生的学号及对应成绩。
程序:
# include <stdio.h>
# define N 3 /*N值即为学生个数*/
int main ()
{
int i;
float maths [N];
printf ( "输入成绩:\n");
for (i = 0;i< N;i++)
scanf ("%f", &maths[i ]); /*逐一输入N个数据*/
for (i = 0;i< N;i++)
printf ("\n学生学号 No.%2d, 成绩: %5.2f ", i + 1, maths[i]);/*输出编号及成绩*/
return 0;
}
输出:
通过改变N值可以改变输出成绩的学生个数
例2.用“选择法”对10个数排序(从大到小)。
分析:设10个数分别是a[0], a[1], ··…,a[9],使用选择法排序。
第1轮:在a[o], a[1] ·…,a[9] 中选择最大元素 a[j],将 a[j] 与a[0]交换。
第2轮:在a[1], a[2], ··, a[9] 中选择最大元素 a,将a[j]与 a[1]交换。
第3轮:在a[2], a[3], ··…,a[9]中选择最大元素 a[j],将 a[j] 与 a[2]交换。
--------
第8轮:在a[7], a[8], a[9] 中选择最大元素 a[j],将 a[j]与a[7]交换。
第9轮:在a[8],a[9]中选择最大元素 a[j],将 a[j]与a[8]交换。
结论:使用选择法对n个数进行排序,需要进行n-1 轮选择。第i轮选择操台需要进行n-i次两两比较。可以通过两层嵌套的循环结构实现。
程序:
举例 假设十个数为:24、9、86、4、87、8、2、14、36、99
#include <stdio.h>
int main ()
{
int a[10] ={ 24, 9, 86, 4, 87, 8,2, 14, 36,99};
int i, j, temp;
int seat; /*记录最大数的位置*/
for (i=0;i<9;i++)
{
seat = i; /*设第i轮中,初始最大数的位置为i*/
j =i + 1;
while (j< 10 )
{
if (a[seat]< a[j])
{
seat =j;
}/*找到新的大数,更新大数的位置记录*/
j =j + 1;
}
if ( seat != 1) /*如果最大数不在本轮的初始位置*/
{
temp = a[i];
a[ i ] = a[ seat ];
a[ seat ] = temp;
}
} /*交换数组的两个元素的值*/
printf ( "十个数从大到小排序:\n");
i =0;
do
{
printf ( "%3d", a[i] );
i = i + 1;
}while (i< 10 );
return 0;
}
输出:
简单课后习题
1.运行下面程序,其输出结果是()
#include <stdio.h>
int main ( )
{
int i,j=3;
int a[]={1,2,3,4,5,6,7,8,9,10};
for(i=0;i<5;i=i+1)
a[i]=i*(i+1);
for(i=0;i<4;i=i+1)
j=j+a[i]*3;
printf ("%d",j);
return 0;
}
2.运行下面程序,其输出结果是()
#include <stdio.h>
int main ( )
{
int i;
int a[10]={0,1,2,3,4,5,6,7,8,9};
for(i=1;i<9;i=i+1)
a[i]=a[i-1]+a[i+1];
printf ("%d %d",a[5],a[7]);
return 0;
}
希望对大家的学习有帮助,期待我们共同进步,制作不易,烦请各位王子公主给我点个赞。