弹出网站代码,网站运营托管咨询,珠宝行网站建设方案,网站规划与建设 ppt数组 数组名代表的是数组在内存中的起始位置#xff0c;即首元素的地址#xff0c;而下表表示的则是该元素相对数组起始位置的偏移量 一维数组 1.定义
类型名 数组名[数组长度]
int a[100]; //整型数组长度为101#xff0c;数组名为a
char b[100];//字符型数组长度为101即首元素的地址而下表表示的则是该元素相对数组起始位置的偏移量 一维数组 1.定义
类型名 数组名[数组长度]
int a[100]; //整型数组长度为101数组名为a
char b[100];//字符型数组长度为101数组名为b
double c[100];//实型数组长度为101数组名为c 类型名在简单的c程序设计已经提到
2.数组名
数组名整个数组的标识符数组名可以看作一种特殊的变量名需要遵循变量名的命名规则
3.数组长度
数组长度指出数组中可以包含元素的个数数组长度通常是一个整型或者常量表达式
4.数组名[下标]
下标可以使用整型常量、变量、表达式
下标的取值范围为[0数组长度-1] 一维数组的初始化 1.数组声明的两种类型
若数组声明为静态储存类型则数组所有元素被初始化为0
static int a[100];
若数组声明为自动储存类型则数组所有元素为垃圾值
int a[100];
2.初始化格式
类型名 数组名[数组长度]{初值表}
int a[100]{0};//全部元素都为0
如果初值表中的数据个数比数组长度少那么数组中剩余元素赋值为0
int b[100]{1,2,3};//b[0]为1b[1]为2b[2]为其余元素为0
若对全部元素赋值则省略数组长度
int c[2]{0,1,2};
//可以改为
int c[2]{0,1,2};
当数组作为函数参数时
因为数组名即代表数组首元素的地址因此使用数组名作形参即可传递
若定义函数时声明了数组的长度则表示只能把固定长度的数组传入
若定义函数时未声明数组的长度则表示可以把任意长度的数组传入
int a[100];
void convert(int a[]);//函数的定义(未表明数组长度)
convert(a);//调用数组a
int a[100];
void convert(int a[100]);//函数的定义(表明数组长度)
convert(a);//调用数组a 二分法查找元素 若在较大的数组中快速的查找元素使用for循环语句逐个查找是非常耗时的
那么使用二分法查找则可以大大节约查找时间避免时间超限
二分法原理
比如数组a[n]中查找元素x,并返回其下角标
则可以将数组分为两大部分
定义low为最小下角标high为最大下角标
mid(lowhigh)/2;
判断x是否等于a[n/2]
如果xa[n/2]则结束查找返回mid值
如果xa[n/2]
lowmid1;
mid(lowhigh)/2;
继续查找
如果xa[n/2]
highmid-1;
mid(highlow)/2;
继续查找
可以编一个递归函数来实现二分查找
int search(int a[],int x,int low,int high)
{if(lowhigh){return -1;//数据错误 } else//若数据正确 {int mid(lowhigh)/2;{if(a[mid]x)//查找到x {return mid;} else if(a[mid]x)//在mid左边查找 {return search(a,x,low,mid-1);}else if(a[mid]x)//在mid右边查找 {return search(a,x,mid1,high);}}}
} 二维数组 1.定义
类型名 数组名[行数][列数]
int a[10][10];
//创建一个10*10的矩阵
从a[0][0]-------------a[0][9]| || || || || || || || |a[9][0]--------------a[9][9]
在二维数组中
行数下标的取值范围为[0,行数-1]
列数下标的取值范围为[0,列数-1]
2.二位数组的初始化
分行初始化
int a[3][3]{{1,2,3},{4,5,6},{7,8,9}};输出数组
1 2 3
4 5 6
7 8 9
也可以部分元素赋值不赋值的元素为0
int a[3][3]{{1,2},{4},{7,8,9}};
输出结果
1 2 0
4 0 0
7 8 9
顺序初始化
int a[3][3]{1,2,3,4,5,6,7,8,9};
输出结果
1 2 3
4 5 6
7 8 9
也可以省略行数进行初始化编译器会根据元素的个数自动分配元素
int a[][3]{1,2,3,4,5,6,7,8,9};
输出结果同上 数组做函数参数 1.一维数组做函数参数数组长度可以省略
2.二维数组做函数参数只有第一维数组长度可省略第二位不可省略 字符数组 1.定义
char 数组名[数组长度]
char a[100];定义一个长度为101的字符型数组 2.初始化
逐个
char a[5]{H,e,l,l,o};
整体
char a[]{Hello}; 在进行初始化时系统会自动加上\0
因此在输入字符串char a[]{Hello};后其实际长度为6
3.输入与输出
可以利用for循环进行逐个输入利用%c
char a[100];
for(int i0;a[i]!\0;i)
{scanf(%c,a[i]);
}
也可以用%s进行整个字符串的输入
char a[100];
scanf(%s,a);//注意此时后面所跟为数组名不必再加
在使用%s进行输入时遇到\0 会自动截断只能用于输入连续的字符串
那么输入不连续的字符串该怎么办呢使用gets
char a[100];
gets(a);
输出呢对应的有
for循环逐个输出
for(int i0;a[i]!\0;i)
{printf(%c,a[i]);
} %s直接输出字符串
printf(%s,a); 直接输出字符串
puts(a);