一维数组
- 数组的概念:数组是一组相同的数的集合
- 数组中存放的是一个或多个数据,但是数组元素的个数不能为零;
- 数组中存放的多个数据,其类型是相同的;
数组一般分为一维数组和多维数组,多维数组中二维数组比较常见。
- 数组的创建
- 一维数组的创建语法如下:
tepe arr_name[常量值]
存放在数组的值叫做元素,数组在创建的时候可以指定数组的大小和数组元素的类型;
type:指定存放在数组元素的数据类型;
arr_name:数组的名字;
[常量值]中的常量值是用来指定数组的大小的;
- 数组的初始化
//完全初始化
int arr1[5]={1,11,111,1111,11111};
//不完全初始化
int arr2[6]={1};
//错误❌初始化,数组中有三个元素,但是初始化时初始了四个元素
int arr3[3]={1,11,111,1111};
- 数组的类型
数组是一种自定义类型,去掉数组名留下的就是数组的类型。
数组的使用
数组下标:C语言规定数组的下标是从零开始的;
在C语言中数组的访问提供了一个操作符**[ ]** 叫做下标访问操作符。
int arr[10] = {1,2,3,4,5,6,7,8,9,10};

数组元素打印
代码如下:
#include <stdio.h>
int main()
{
int arr1[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;i++)
{
printf("%d",arr[i]);
}
return 0;
}
数组输入
#include <stdio.h>
int main()
{
int ## 标题arr1[10]={1,2,3,4,5,6,7,8,9,10};
int i=0;
for(i=0;i<10;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<10;i++)
{
printf("%d",arr[i]);
}
return 0;
}
一维数组在内存中的存储
#include <stdio.h>
int main()
{
int arr1[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;i++)
{
printf("%d",&arr[i]);
}
return 0;
}

计算数组元素个数
//sizeof中C语⾔是⼀个关键字,是可以计算类型或者变量⼤⼩的,其实 sizeof 也可以计算数组的
⼤⼩
sizeof(arr)/sizeof(arr[0])
二维数组
二维数组的概念:
前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组。

二维数组的创建:
//type arr_name[常量值1][常量值2];
//例如:
int arr[3][5];
double data[2][8];
解释:上述代码中出现的信息
• 3表⽰数组有3行;
• 5表⽰每⼀⾏有5个元素;
• int 表⽰数组的每个元素是整型类型;
• arr 是数组名,可以根据自己的需要指定名字;
data数组意思基本⼀致。
数组练习
二分查找
在⼀个升序的数组中查找指定的数字n,很容易想到的⽅法就是遍历数组,但是这种⽅法效率⽐较低。比如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?你会1,2,3,4…这样猜吗?显然很慢;⼀般你都会猜中间数字,⽐如:150,然后看大了还是小了,这就是⼆分查找,也叫折半查找。
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int left = 0;
int right = sizeof(arr)/sizeof(arr[0])-1;
int key = 7;//要找的数字
int mid = 0;//记录中间元素的下标
int find = 0;
while(left<=right)
{
mid = (left+right)/2;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
{
find = 1;
break;
}
}
if(1 == find )
printf("找到了,下标是%d\n", mid);
else
printf("找不到\n");
}
6383

被折叠的 条评论
为什么被折叠?



