C语言学习笔记(6)数组
数组
数组是为了节约储存空间,并储存相同的数据类型而产生的。
一维数组
定义方式:
类型说明符 数组名 [常量表达式]
eg:
int a [10] //定义了整型数组a,其中有10个整型变量元素
意义:节省了定义各个变量的所需时间
注意:
1.[10]中下标是从0开始即,a中的元素为a[0],a[2],a[3]…a[9]。不存在a[10]。
2.不能对数组的大小进行动态定义,即数组大小不能为程序运行中的变量。
3.不可使用圆括号
4.一维数组是在内存中存放的。
一维数组的引用
数组元素也是变量,表示方式为数组名后跟一个下标。下标表示元素在数组中的顺序号。
数组名[下标]
例:
a[0] = a[5] + a[7] - a[2*3]
a[i+j]
a[i++]
以上皆为合法数组元素
且C语言只能逐个使用下表变量而不能一次引用整个数组
例:
#include <stdio.h>
void main()
{
int i,a[10];
for(i = 0;i <= 9;i++)
{
a[i]=i; //从a[0]到a[9]依次赋值
}
for(i = 9;i >= 0;i--)
{
printf("%d\n",a[i]); //从a[9]到a[0]依次输出
}
}
则输出结果为:
9
8
7
6
5
4
3
2
1
0
Press any key to continue
注:
数组赋值除了赋值语句逐个元素赋值,还可以采用初始化赋值和动态赋值。
值,在编译阶段进行,减少了运行间,提高了效率(赋值语句和输入语句给数组元素赋予初值是在运行时完成的)
一般形式:
类型说明符 数组名[常量表达式]={值,值,...值};
例:
#include <stdio.h>
void main()
{
int i,a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8,9};
for(i = 9;i >= 0;i--)
{
printf("%d\n",a[i]);
}
}
输出结果与用循环语句赋值结果相同。
2.也可以只给数组中的前一部分元素赋值 ,而后边的元素则自动为0
3.使数组中的元素全部为0
int a[10]={0}
4.数组初始化赋值时可以不指定数组长度
int a[5]={1,2,3,4,5}; //该式等价于
int a[ ]={1,2,3,4,5};
动态赋值:
运用for循环语句在循环中对数组中元素依次赋值,格式如下
int i,a[5]
printf("Please input a[5]'s element");
for(i = 0;i <= 4;i++)
{
scanf("%5d",&a[i]);
}
例:
编程实现将输入的5个整数由大到小进行排序
#include <stdio.h>
void main()
{
int i, k, j, a[5];
printf("Please input 5 data:\n");
for(i = 0;i <= 4;i++)
{
scanf("%d",&a[i]);
}
for(i = 0;i <= 4;i++)
{
for(k = i + 1;k <= 4;k++)
{
if(a[i] < a[k])
{
j = a[i];
a[i] = a[k];
a[k] = j;
}
}
}
printf("After sorted :\n");
for(i = 0;i <= 4;i++)
{
printf("%5d\n",a[i]);
}
}
二维数组
数组元素有两个下标的数组成为二维数组
一般格式为:
类型储存 数据类型 数组名[一维整型常量表达式][二维整型常量表达式]
如:int a[2][3] //表示一个2*3的矩阵,有2*3=6个元素
二维数组的引用
引用格式:
数组名[行下标][列下标]
//使用方法与一维数组相似
需注意的是
1.二维数组行,列下标的有效范围也是由0开始
2.引用数组中的元素要防止超界,区分好行与列的区别
二维数组的初始化
1.分行赋初值
int a[2][3] = {{1,2,3},{4,5,6}} //输入的矩阵为 1 2 3
4 5 6
2.按内存顺序赋初值
int a[2][3] = {1,2,3,4,5,6}; // 结果与①相同
3.对部分元素赋值
int a[2][3] = {{1},{4}}; // 输入的矩阵为 1 0 0
4 0 0
但绝不可以越过前面的元素对后面元素赋值,如果前面是0必须赋予0值
例:编程实现将M*M的矩阵倒置
#include <stdio.h>
#define M 4
void main()
{
int i,j,k;
int a[M][M] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
printf("The old mateix is :\n");
for(i = 0;i <= M - 1;i++)
{
for(j = 0;j <= M - 1;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
for(i = 0;i <= M - 1;i++)
{
for(j = i;j <= M - 1;j++)
{
k = a[i][j];
a[i][j] = a[j][i];
a[j][i] = k;
}
}
printf("The new matrix is :\n");
for(i = 0;i <= M - 1;i++)
{
for(j = 0;j <= M - 1;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}
上一篇: C语言学习--数组学习笔记
下一篇: java URL下载网络资源