C语言——数组(附练习)

一,数组的定义

数组的定义格式,

        数组类型 数组名[数组长度]

#include<studio.h>
void main(){
//	数组的定义 
//数组的定义格式:
//		数组类型 数组名{数组长度}
//定义整数类型数组:
	 
int arr1[2];

} 

这里我们定义了一个整形数组,arr1长度为2.

二,数组的初始化

初始化:数组第一次赋值

数组类型 数组名 【数组个数】={ 数据值,数据值.....}

1,如果数组的长度设有写,数据值的个数就是数组的长度

                int arr1 [ ] = {1,2,2,3,4}     此时,数据值的个数就是数组的长度

2,如果数组的长度已经写上,数据值的个数<=长度

                int arr [3] = {1,2}

上面定义了三个长度,却只有两赋值了,未赋值的部分有默认值:

整数:0        小数:0.0        字符:‘\0’        字符串:null

未赋值的部分就是默认值,0

三,数组中的元素

1,索引就是数组的一个编号,索引是从0开始的,第一个数据值的索引就是0.

2,数组的获取:  获取索引一般会用一个变量接收

变量 = 数组名 【索引】  例如:abc =   arr[5];  这样变量abc就获取到了数组里的数据

3,修改数组的值

数组名 【索引】= 数据值             arr[2] = 3;    这就表示索引为2的值改成了3.

4,遍历数组

用for循环来遍历数组

可以看到我们的每一个数据值都拿到了。

五,习题(找最大值)

1,求最值

已知数组元素{33,5,22,44,55}  找出最大的数并打印

思路:我们先用int len = sizeof(arr) / sizeof(int);获取到数组的长度,以便利于我们写循环,我们要求最值 就要先定义一个变量来保存我们的最值,然后用循环来比较从数组的第一个数开始于我们定义最值的变量开始比较,如果比max大,就把这个数赋值给max,如果比max小,那就什么也不干,比较下一个数,直到把所有数组中的值比完为止。

代码示例:

int main() {
	//求最值 已知数组元素{33,5,22,44,55}
	//找出最大的数并打印
	int arr[] = { 33,77,22,44,55 };
		int max = arr[0];
	int len = sizeof(arr) / sizeof(int);
	for (int i = 0; i < len; i++)
	{
		if (arr[i] >max) {
			max = arr[i];
		}
	}
	printf("%d\n", max);

2,数组求和

已知数组元素{33,5,22,44,55,45,86,15,32,57}

1,求他们的和

思路:我们也是要先定义一个变量,num,然后再获取数组的长度,最后用for循环一个个相加,最后得出最终结果并打印。

int main() {
	int arr[] = { 33,5,22,44,55,45,86,15,32,57 };
		int num = 0;
	int len = sizeof(arr) / sizeof(int);
	printf("len = %d\n", len);
	for (int i = 0; i < len; i++)
	{
		num += arr[i];
	}
	printf("num = %d\n", num);	

2,求平均数

思路:每个数相加再除以数组的长度。

int main() {
	int arr[] = { 33,11,22,44,55,45,86,15,32,57 };
		int num = 0;
		
	int len = sizeof(arr) / sizeof(int);
	printf("len = %d\n", len);
	for (int i = 0; i < len; i++)
	{
		num += arr[i];
	}
	num = num / len;
	//平均数
	printf("num = %d\n", num);	

3,求小于平均数的个数

思路:用一个变量small来保存,在循环里判断每一个数是不是小于平均数,如果小于平均数,那么small加一。

int main() {
	int arr[] = { 33,11,22,44,55,45,86,15,32,57 };
		int small = 0;
		int num = 40;
	int len = sizeof(arr) / sizeof(int);
	
	for (int i = 0; i < len; i++)
	{
		if (arr[i]<num)
		{
			small++;
		}
	}
	
	//小于平均数的数
	printf("num = %d\n", small);	

3,数组反转

已知数组值{55,44,33,22,11}

要求把数组的位置反转,就是11到最前面,55到最后面

思路:这里我们要定义两个变量,i、j,需要我们用到双重循环,把第一个与最后一个交换,然后i++,j--,表示第二个与倒数第二个交换,这样就实现了我们的数组反转。

#include <stdio.h>

int main() {
	int arr[] = { 55,44,33,22,11};
	int	len = sizeof(arr) / sizeof(int);
	int i = 0;
	int j = len - 1;
	int temp = 0;
	while (i < j) {
		temp= arr[i];
		arr[i] = arr[j];
		arr[j] = temp;
		i++;
		j--;
	}

	//遍历数组
	for (int i = 0; i < len; i++)
	{
		printf("%d,", arr[i]);
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值