数组以及数组应用(一)

在C语言中,数组是一种存储相同类型数据元素的集合。每个元素在数组中都有一个唯一的索引,通过索引可以访问数组中的元素。数组的声明格式为"数据类型 数组名[数组大小]",例如"int arr[5]"表示声明了一个包含5个整数的数组。

 

在C语言中,数组的下标是从0开始的,也就是第一个元素的下标是0,第二个元素的下标是1,依此类推。我们可以通过下标来访问数组中的元素,比如"arr[0]"表示访问数组"arr"中的第一个元素。另外,C语言中的数组在内存中是连续存储的,这也是数组在访问和操作上效率高的原因之一。以下是数组的一些使用方式:

 

 1. 数组的声明和初始化

在C语言中,声明数组的语法格式为"数据类型 数组名[数组大小]",例如:

int numbers[5]; // 声明了一个包含5个整数的数组

当然了,我们也可以在声明数组的同时进行初始化,例如:

int numbers[5] = {1, 2, 3, 4, 5}; // 初始化一个包含5个整数的数组

也允许只对数组前面若干个连续的元素赋初值,这时后面的元素将自动赋0值,例如:

int x[7]={1,2,3,4};//这是后面的3个元素都是0

 

 2. 访问数组元素

数组的元素可以通过下标来访问,下标从0开始,例如:

int firstElement = numbers[0]; // 访问数组中的第一个元素

int thirdElement = numbers[2]; // 访问数组中的第三个元素

 

3. 数组的遍历

可以使用循环结构来遍历数组中的所有元素,例如:

for (int i = 0; i < 5; i++)

 { printf("%d ", numbers[i]);}

 

 

4. 多维数组

C语言支持多维数组,例如二维数组的声明和访问方式如下:

int matrix[3][3]; // 声明了一个3行3列的二维数组

matrix[0][0] = 1; // 访问二维数组中的元素

 

 5. 数组名和指针

数组名实际上是数组第一个元素的地址,在很多情况下可以被当作指向数组的指针使用,例如:

int *ptr = numbers; // 数组名被当作指针使用

 

以下是一些关于在使用数组时的注意事项:

 

1. 数组的大小是固定的:在C语言中,一旦数组被创建,其大小就不能改变。如果你需要动态改变数组的大小,你可能需要使用动态内存分配(如malloc,realloc等)。

2. 数组名是一个指针:在C语言中,数组名实际上是指向数组第一个元素的指针。然而,这个指针是常量,不能被修改。也就是说,你不能让数组名指向另一个数组或者内存区域。

3. 数组越界:C语言不会进行数组越界的检查。如果你试图访问数组的边界之外的元素,编译器不会报错,但是结果可能是未定义的,这可能会导致程序崩溃或数据错误。

4. 初始化数组:在C语言中,你可以在声明数组的同时初始化它。如果你没有初始化数组,那么数组的内容将是不确定的,取决于数组在内存中的位置。

5. 多维数组:多维数组在C语言中是以行优先的方式存储的。也就是说,对于一个二维数组a[m][n],a[i][j]的内存地址实际上是a[0][0]的内存地址加上i*n+j的偏移量。

6. 字符串和字符数组:在C语言中,字符串实际上是字符数组的一种。字符串的结束是由'\0'字符标记的。因此,当你为字符串分配内存时,需要确保有足够的空间来存储'\0'字符。

7. 数组和指针的关系:数组和指针在C语言中有密切的关系。你可以使用指针来操作数组,反之亦然。然而,你需要清楚地理解这两者之间的区别和联系,以避免出现错误。

 

下面我们来介绍数组的一些基本应用:

 

一、数据统计

 

1.统计不同分数段的人数

我们首先将分数段分为11档:0—9、10—19、20—29、……90—99、100然后用一个int整型数组来存放 这11个分数段的人数。我们又发现,当x/10对应的得数刚好为数组a的下标,所以我们可以用a[x/10]+=1来实现计数操作。

00110e38c09f4ad0bf73ef69ef4e686c.png

 随便普及一下:在C语言中,"%5d",这是一种格式化输出整数的格式化字符串。"%5d"的作用是在输出整数时,如果整数字符数小于5,会在整数前面添加一定数量的空格,使得整个输出的宽度至少为5个字符。这样做的目的是为了对齐输出,使得数据在视觉上更加整齐。例如,当使用"printf("%5d", 4)时,会输出"00004",其中前面的"0000"是用于填充的空格。在本例中是为了使数据和上面的分数段对齐。

2. 找最大最小值

以从小到大为例,我们可以先暂定第一个数为最小值,然后让它和第二个数进行比较,如果第二个数比第一个数小,则把最小值储存在第二个数的数组地址中,再与后面的元素逐一比较,以此类推,我们便可以得到最小值的排列顺序。

9676074c9fef47fe94eba2c2a3d32860.png

 我们输出的是数组的下标,为了实现精准到哪一行哪一列,你可以对maxrow等+1

d3230854c7b748bcb75cdbb4f3b4d47e.png

 

好啦,今天的分享就到这里了。再次声明:作者水平有限,如有失偏颇,还请各位不吝赐教!

 

 

 

 

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值