【c语言】复习无止境,day2--数组&函数篇

本文深入探讨了C语言中的数组、函数及其使用技巧,包括数组的定义、初始化、遍历及越界风险。详细介绍了二维数组、变长数组的概念,并提供了相关练习。此外,文章还涵盖了函数的使用、自定义函数的设计原则以及函数传参的注意事项,强调了函数在代码组织中的重要性。
摘要由CSDN通过智能技术生成

数组:
什么是数组: 变量的组合,是一种批量定义变量的方式
定义: 类型 数组名[数量];
int num1,num2,num3,num4,num5;
int arr[5];
使用:数组名[下标];
下标:从零开始 范围:0~数量-1
遍历:与for循环配合使用,使用循环变量i作为数组的下标
初始化: 类型 数组名[数量] = {1,2,3,4,5,…};
1、数组与普通变量一样默认值是随机的,为了安全要对数组进行初始化
2、这种初始化语法只能在定义语句时使用,而且只能逐个赋值,不能整体赋值
3、初始化数据过多,编译器会产生警告并丢弃多余的数据
4、初始化数据不够,编译器会自动补0
5、初始化时数据可以省略,只写大括号,相当于给所有成员初始化为0
6、初始化时数组的长度可以省略,编译器会自动统计数组元素的个数并告诉数组
sizeof(arr)/sizeof(arr[0]) = 数组的元素个数
数组的总字节数/数组元素的字节数 = 数组的元素个数

练习1:定义一个长度10的数组并初始化,计算出该数组中的最大值、最小值、平均值
练习2:定义一个长度10的数组并初始化,进行升序排序
for(int i=0;i<l-1;i++)
{
for(int j=i+1;j<l;j++)
{
if
}
}

数组的越界:C语言为了程序的运行效率是不会检查数组的下标是否越界
数组越界的后果:
1、一切正常
2、段错误
3、脏数据

练习3: 定义一个长度10的数组并初始化,找出数组中的第二大的值,不允许排序

二维数组
一维数组相当于把变量排成一排,通过编号来访问
二维数组相当于把变量排成矩阵,通过行号和列号来访问

定义: 类型 数组名[行数][列数];
int arr[3][5];
[0,0][0,1][0,2][0,3][0,4]
[1,0][1,1][1,2][1,3][1,4]
[2,0][2,1][2,2][2,3][2,4]
使用:数组名[行下标][列下标]; arr[1][2]
行下标: 0~行数-1
列下标: 0~列数-1
遍历:需要与双层for循环配合,外层一般负责遍历行,内层一般负责遍历列
for(int i=0; i<行数; i++)
{
for(int j=0; j<列数; j++)
{
printf("%d “,arr[i][j]);
}
printf(”\n");
}
初始化:
类型 数组名[行数][列数] = { {第一行},{第二行},{第三行},…};

练习4:定义一个5*5的二维数组并初始化,找出数组中最大值的坐标

练习5:定义一个5*5的二维数组并初始化,找出最小值的坐标,计算该位置周围的数的和是多少?

变长数组:
定义数组时使用变量来作为它的长度,在代码编译期间数组的长度是不确定,当执行到数组定义语句时它的长度才确定下来,一旦确定就无法改变
优点:可以根据实际情况来确定数组的长度,达到节约内存的目的
缺点:因为初始化在编译时完成,而此时变长数组的长度并不确定,因此不能初始化

练习6:输入两个整数m,n(1<=m<=6,1<=n<=6),输入数组arr[m][n]的各个元素的值,然后计算各个元素之和,统计数组中非零元素的个数,计算所有元素的平均值,计算大于平均值元素的个数

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值