导读
什么是数组?数组有什么用?有哪些数组?如何使用数组?🤔🤔🤔
文章目录
数组的定义
数组是一组具有相同数据类型的数据的有序集合
用了一个数组名和下标来确定唯一数组中的元素
数组中的每一个元素都属于同一个数据类型
数组的作用
数组可以用来处理具有相同的数据类型,使用过程中需要保留原始数据的数据
数组的类型
一维数组
数组的定义:
类型说明符 数组名[常量表达式]
注
常量表达式可以为数字可以为字符,但必须大于零
常量应大于零
应使用[]而非()
初始化
在定义数组是对数组元素赋予初值
将数组元素的初值依次放在一对花括号内
例如
int a[9]={1,2,3,4,5,6,7,8,9}
若输入的个数小于数组中元素个数,则其余元素为零
也可以不设置元素的个数,如下所示
int a[]={1,2,3,4,5,6,7,8,9}//与上式等价
赋予初值时个数不能超过总元素的个数
引用
只能引用数组中的某一元素,不能引用整个数组
引用形式:数组名 [下标]
下标为几就是数组中的第几个元素
下标可以说整型常量,整型变量,整形表达式
第一个的下标为0
输入输出
与循环相结合
输入
#include <stdio.h>
int main()
{int m[9],a;
for(a=0;a<9;a++);
scanf("%d",&m[i]);
return 0;
}
输出
#include <stdio.h>
int main()
{int m[9],a;
for(a=0;a<9;a++);
printf("%d",m[i]);
return 0;
}
冒泡法
每次将相邻两个比较,将较小的数排到前面
有n个元素就需要n-1次比较
int main()
{
int m[10],a,b,c;
for(a=0;a<10;a++);
scanf("%d",&m[10]);//输入数组中的元素
printf("\n");
for(b=0;b<9;b++);//十个元素,进行九次循环
for(a=0;a<9-b;a++);//每次循环进行9-b次比较
if(m[a]>m[a+1])//进行比较
{
c=m[a]
m[a]=m[a+1]
m[a+1]=c
}//替换
for(a=0;a<10;a++);
printf("%d",a[i]);//输出
return 0;
}
二维数组
数组的定义:
类型说明符 数组名[常量表达式][常量表达式]
注
一个方括号内不能写两个下标
元素个数必须是常量表达式,不能用变量
常量表达式为大于零的正整数
初始化
分行给二维数组赋予初值
例如
int a[3][2]={1,2},{3,4},{5,6}
将所有数值放入一个花括号内
int a[3][2]={1,2,3,4,5,6}//与上式等价
可以对部分元素赋值,不过其余元素皆为0
int a[3][2]={{1},{2},{3}}//与上式等价
赋予初值时个数不能超过总元素的个数
引用
只能引用数组中的某一元素,不能引用整个数组
引用形式:数组名 [下标1][下标2]
下标为几就是数组中的第几行第几个元素
下标可以说整型常量,整型变量,整形表达式
下标从零开始
输入输出
与一维数组相似,但需要两个循环
输入
#include <stdio.h>
int main()
{int m[2][3],a,b;//a行下标,b列下标
for(a=0;a<2;a++);
for(b=0;b<3;b++)
scanf("%d",&m[a][b]);
return 0;
}
输出
#include <stdio.h>
int main()
{int m[2][3],a,b;//a行下标,b列下标
for(a=0;a<2;a++);
for(b=0;b<3;b++)
printf("%d",m[a][b]);
return 0;
}
字符数组
字符数组用于存放字符串,数组中的各元素为字符串中各字符
定义
char 数组名[常量表达式]
注
存放的数组应该小于等于常量表达式-1(因为最后还有一个结束符占一个位置)
故定义时元素数应+1
初始化
用单个字符对字符数组进行初始化
char a[5]={'g','o','o','d','\0'}
若输入的个数小于数组中元素个数,则其余元素为空字符(‘\0’)
用字符串常量对字符数组初始化
char a[5]={"good"}
char a[5]="good"//省略{}
char a[]={"good"}//省略元素个数
输入输出
单个字符输入(用格式符%c或字符输入函数)
#include <stdio.h>
int main()
{int c[9],a;
for(a=0;a<9;a++);
scanf("%c",&c[a]);
return 0;
}
单个字符输出(用格式符%c或字符输入函数)
#include <stdio.h>
int main()
{int c[9],a;
for(a=0;a<9;a++);
printf("%c",c[a]);
return 0;
}
字符串整体或部分输入输出(用格式符%s)
char c[9];
scanf("%s",c)
注
以字符串的地址形式出现
不包括空格,\t,\n
输入空格使用gets函数
数组名前不需要&
用%s时,结束使用空格,跳格,回车
字符串处理函数
种类
puts输出字符串
gets输入字符串
(#include<stdio.h>)
strcat字符串连接
strcpy字符串复制
strcmp字符串比较
strlen字符串长度
strlwr将字符串中大写字母换成小写字母
strupr将字符串中小写字母换成大写字母
(#include<string.h>)
puts
形式: puts(字符数组)
作用:将一个字符串(以’\0’结束)输出
gets
形式:gets(字符数组)
作用:可以输出带空格的字符串(scanf的%s格式不行)
strcat
形式:strcat(字符数组1,字符数组2)
作用:将字符串2接到字符串1后面,并将结果放入字符串1中。
strcpy
形式:strcpy(字符数组1,字符串2)
作用:将字符串2,复制到字符数组1中去
注:不能用赋值运算符(=),字符数组1长度应大于字符串2,复制时连同字符串后面的‘\0’一起复制
strcmp
形式:strcmp(字符串1,字符串2)
作用:按照字符的ASCII码值比较
1=2 结果为零
1>2结果为正
1<2结果为负
strlen
形式:strlen(字符数组)
作用:测试字符串长度(不包括’\0’)
strlwr
形式:strlwr(字符串)
作用:将字符串中大写字母换成小写字母
strupr
形式:strupr(字符串)
作用:将字符串中小写字母换成大写字母