C语言 第六章 数组

March 24, 2019

第六章 数组

一维数组

// 定义数组的长度
int a[5];

// 数组也是变量,必须先定义,后使用,不能与其他变量名、数组名重名

// 定义时赋初值
int x[5] = {1,2,3,4,5};

// 常用编程套路,数组与循环结合
for(i=0; i<元素个数; i++)
    对a[i]的操作

一维数组的运用

已知10名同学的考试成绩,请编程统计及格人数,并计算10名同学成绩的平均分。

#inlcude <stdio.h>
#include <stdlib.h>
#define N 5

int main()
{
    float b[N] = {58.0, 69.0, 92.1, 33.3, 50.1, 66.5, 12.5, 63.4, 68.4, 10.1}, sum, avg;
	int i, pass;
	sum = 0; pass=0;
	for(i=0; i<N; i++)
	{
		sum = b[i];
		if(b[i]>= 60)
			pass++;
	}
	avg = sum / N;

	printf("通过考试人数为: %d\n", pass);
	printf("平均分数为: %5.1f", avg);
}
printf("%5.1f", fa);

5表示输出数字长度为五位

1表示输出数字的小数后1位

注意

int a[5];int i=3;
a[i]=1;		引用数组时,下标可以是常量
int x[i];	定义数组时不能用变量表示元素个数
a[i++]=2;	a[3]=2;之后i由3变为4
			下标必须为整数
			不能一次引用整个数组

一位数组的初始化

int a[5] = {5, 10};
// 如果数组长度多于初始化值得时候,数组中未赋值的元素将默认赋值为0,相当于
int a[5] = {5, 10, 0, 0, 0};

// 对字符型数组,后面元素自动赋'\0'实质上仍是赋值0
char s[4] = {'a', 'b'};

// 数组初始化另一种写法,C会自动计算数组长度
int a[] = {1,2,3,4,5};
// 相当于
int a[5] = {1,2,3,4,5};

程序例

1. 编程删除数组b中下标为2的元素
b[5] = {99, 60, 75, 86, 92};
修改后
b[5] = {99, 60, 86, 92, 92};
2. 编程在数组b中的下标为2的元素之前,插入新元素100。
b[10] = {99, 60, 75, 86, 92};
修改后
b[10] = {99, 60, 100, 75, 86, 92};
3. 选择排序,将数组b从小到大排序
b[5] = {99, 60, 75, 86, 92};
排序后
b[5] = {60, 75, 86, 92. 99};

二维数组

二维数组又为特殊的一维数组,它的每个元素又是一维数组

二维数组的定义
数组类型 数组名[行数][列数]
int a[2][3];
int型的变量名为a的数组,2行3列

二维数组在内存中的存储形式

硬件存储器(内存)是连续的和线性的,二维表形式的二维数组在内存中是线性存储和按行排列

注意

任何情况下,都不能省略列数(即不能省略第二个[] 内的数);

在能判断出行数时,可省略行数(即可省略第一个[]内的数);

int a[2][3];
a = {1,2,3,4,5}
// 只有定义时赋初值才能用 ={} 的形式,故上述写法错误