(共21张PPT)
数组
第七章
回顾
for循环
逗号运算符
嵌套循环
while和do-while循环
break和continue语句
exit()函数
目标
理解数组的存储机制
掌握数组的定义和使用
掌握数组的初始化
理解二维和多维数组
数组元素和索引
数组元素由索引或下标标识
数组维数由索引数决定
索引存放从 0 开始的整数
一个包含 11 个元素的数组
player[0] player[1] player[2] … … player[10]
定义数组 2-1
数组的特性必须在使用前定义
存储类型
数据类型
数组名
数组大小
定义数组 2-2
数组名后接一个或多个括在方括号内的表达式,用以指定数组的维数
存储类型 数据类型 数组名[数组长度] ;
int player[11];
数组的规范
所有数组元素具有相同的类型
允许使用变量的地方都可以使用数组元素
可以使用整型表达式引用数组的元素
在C语言中使用数组 2-1
即使两个数组的类型和大小相同,也不能检验其是否相等
不能直接将一个数组赋给另一个数组
不能为数组整体赋值
在C语言中使用数组 2-2
#include
void main() {
int ary[10];
int i, total, high;
for(i=0; i<10; i++) {
scanf("%d",&ary[i]);
}
high = ary[0];
for(i=1; i<10; i++) {
if(ary[i] > high)
high = ary[i];
}
for(i=0,total=0; i<10; i++)
total = total + ary[i];
}
定义
赋值
比较
初始化数组
自动数组中的元素需要分别初始化
extern和static数组元素自动初始化为 0
使用 for 循环为数组元素赋值
#include
void main() {
char alpha[26];
int i, j;
for(i=65,j=0; i<91; i++,j++) {
alpha[j] = i;
printf("The character is %c \n", alpha[j]);
}
getchar();
}
字符串/字符数组 2-1
字符串是以”\0”结尾的字符型数组
字符串中每个字符占一个字节
ary[0] ary[1] ary[2] ary[3] ary[4]
#include
void main()
{
char ary[5];
int i;
printf("\n Enter string : ");
scanf("%s",ary);
printf("\n The string is %s \n\n", ary);
for (i=0; i<5; i++)
printf("\t%d", ary[i]);
}
字符串/字符数组 2-2
演示:
分别输入不用长度的字符串,观察并分析输出结果
字符串函数
在标准头文件 中定义
名称 作用
strcpy(s1,s2) 将s2复制到s1
strcat(s1,s2) 将s2附加到s1的末尾
strlen(s1) 返回s1的长度
strcmp(s1,s2) 判断s1和s2是否相等
strchr(s1,ch) 返回s1中第一次出现字符ch的位置
strstr(s1,s2) 返回s1中第一次出现字符串s2的位置
二维数组
最常用的多维数组
可以看成是由两个一维数组组成的数组
类似于一个由行和列组成的表格
二维数组的声明方式:
int temp[4][3];
二维数组的初始化 3-1
int ary[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
ary 0 1 2 3
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
二维数组的初始化 3-2
int ary[3][4]=
{
{1,2,3},
{4,5,6},
{7,8,9}
};
ary 0 1 2 3
0 1 2 3 0
1 4 5 6 0
2 7 8 9 0
二维数组的初始化 3-3
演示:
分别用不同的初始化方法,观察并分析输出结果
数组示例 2-1
#include
#include
void main ()
{
int i, n = 0;
int item;
char x[10][12];
char temp[12];
clrscr();
printf("Enter string\n\n");
printf("Type 'END' when over\n\n");
do
{
printf("String %d :", n+1);
scanf("%s", x[n]);
} while (strcmp(x[n++], "END"));
n = n - 1;
for(item=0; item{
for(i=item+1; i{
if(strcmp (x[item], x[i]) > 0)
{
strcpy (temp, x[item]);
strcpy (x[item], x[i]);
strcpy (x[i], temp);
}
}
}
printf("Recorded list of strings:\n");
for(i = 0; i < n ; ++i)
{
printf("\nString %d is %s",i+1,x[i]);
}
}
排序
数组示例 2-2
演示:
运行程序,观察并分析输出结果,解释红色语句的作用
总结
定义和使用数组
初始化数组
字符串/字符数组
二维数组的概念