一 、数组是什么?
1.数组就是用来存储一组数据的,用来描述同一类性质的数据
2.一维数组:是数组中最简单的,它的元素只需要用数组名加一个下标就能唯一地确定
3.二维数组:二维数组是一个特殊的一维数组:它的元素是一维数组
4.字符数组:用来存放字符数据的数组
二 、数组有什么用?
1.管理同名同属性的数据,同时反映这些数据内在关系
三 、数组怎么用?
1.定义和引用一维数组
定义:元素类型 数组名[元素个数];
比如:int ages[3];
ages[0]=1;//引用
2.定义和引用二维数组
定义:元素类型 数组名[元素个数][元素个数];
比如:int ages[3][2];
ages[0][0]=1;//引用
四 、使用数组要注意什么?
1.数组名的命名规则和变量名相同,遵循标识符命名规则
2.在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度
3.常量表达式中可以包括常量和符合常量如“int a[3+5]”是合法的。
4.C语言不允许对数组的大小作动态定义
5.只能存放一种类型的数据,比如int类型的数组、float类型的数组
6.里面存放的数据称为“元素”
五 、数组代码举例
- 例1 一维数组:处理斐波那契数列问题
#include<stdio.h>
int main(){
int i;
int f[20]={1,1};//对最前面两个元素f[0]和f[1]初始化为1
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];//先后求出f[2]~f[19]的值
for(i=0;i<20;i++)
{
if(i%5==0) printf("\n");//控制每输出5个数后换行
printf("%12d",f[i]);//遍历输出
}
printf("\n");
return 0;
}
- 例2 二维数组:将一个二维数组行和列的元素互换,存到另一个二维数组中
#include<stdio.h>
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("数组a:\n");
for(i=0;i<=1;i++)//处理a数组中的一行中各元素
{
for(j=0;j<=2;j++)//处理a数组中某一列元素
{
printf("%5d",a[i][j]);//输出a数组各元素
b[j][i]=a[i][j];//将a数组元素的值赋给b数组相应元素
}
printf("\n");
}
printf("数组 b:\n");//输出b数组各元素
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
return 0;
}
- 例3 字符数组:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开
#include<stdio.h>
int main(){
char string[81];
int i,num=0,word=0;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)//输入一个字符串给字符数组string
if(c==' ') word=0;//只要字符不是‘\0’就继续执行循环
else if(word==0){//如果不是空格字符且word原值为0
word=1;//是word置1
num++;//num 累加1,表示增加一个单词
}
printf("这行一共有%d个单词. \n" ,num);//输出单词数
return 0;
}
六 、数组总结
主题 1:利用数组批量处理数据
1.数组和循环的结合 2.数组的定义 2.1一维数组:类型符 数组名[常量表达式] 2.2定义是为了通知计算机为其划分相应的内存 3.数组元素的引用 3.1表示形式:数组名[下标] 4.一维数组的初始化 如果在定义数值型数组时,指定了数组的长度并对之初始化,凡未被“初始化列表”指定初始化的数组元素,系统会自动把它们初始化为0 (如果是字符型数组,则初始化为‘\0’,如果是指针型数组,则初始化为null,即空指针)
主题 2:怎么定义和引用二维数组
1.定义的一般形式 类型说明符 数组名[常量表达式][常量表达式] 2.float a[3][4] 相当于 flaot a[0][4], a[1][4], a[2][4];a[0],a[1],a[2]可以看做数组名 3.C语言中,二维数组中元素排列的顺序是按行存放的 4.二维数组的引用 4.1表示形式:数组名[下标][下标] 5.字符型数据是以字符的ASCII代码存储在存储单元中的,一般占一个字节。 由于ASCII也属于整数形式,因此在C99标准中,把字符类型归纳为整型类型中的一种 6.C语言中没有字符串类型,字符串是存放在字符型数组中的 7.怎么定义字符数组同上 8.由5知可以用整型数组存放字符数据 9.如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的 10.C系统在用字符数组想内存中存储字符串常量时会自动加一个空操作符‘\0’作为结束符。 这样在输出一个字符时,会检查是否为结束符,以此判断停止输出 11.除了用常规方法对数组进行初始化,还可以用字符串常量来进行初始化 12.一个字符占一个字节。字符数组的长度指的是:所有字符所占的字节数,包括结束字符 13.字符数组的输出 13.1逐个字符输入输出 :%c 13.2输出整个字符串:%s,此时输出项应该是字符数组名,而不是数组元素 13.3scanf("%s",c);//向一个已定义的数组c中 输入一个字符串 回车结束 13.4scanf("%s%s",c1,c2);//向已定义的数组c1,c2中 输入多个字符串 以空格字符分隔 回车结束 14.在C语言中数组名代表数组的起始地址 15.字符串处理函数 15.1puts(数组名) 输出字符串的函数 15.2gets(数组名) 输入字符串的函数 15.3strcat(数组名1,数组名2)字符串连接函数 15.4strcpy(数组名1,数组名2)字符串的复制函数 15.5strncpy(数组名1,数组名2,2)将数组2中最前面2个字符复制到数组1中,取代数组1中原有的最前面2个字符 15.6strmp(数组名1,数组名2)返回0相等 负值是小于 正值是大于 15.7strlen(数组名1)测字符串长度的函数,不包括结束符。 15.8的执行:首先按照字符数组名c找到其数组起始地址,然后逐个输出其中的字符,直到遇到‘\0'为止 16.使用字符串处理函数,要将其响应的库函数包含进来;即#include<string.h>