C语言学习笔记—数组的定义、引用、初始化、应用

数组
数组是最基本的构造类型,用于存储一组类型相同的数据的有序集合,在内存中连续存放,用数组名和下标唯一确定数组元素。

下面我们引入一个计算1-100的和的例子:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int i;
    int sum = 0;
	int arry[100];
    
    for(i=0;i<=100;i++)
    {
		arry[i] = i;	
        
        }
        
	for(i=0;i<100;i++)
    {
		sum+=arry[i];
    }
    printf("1到100的和为:%d\n",sum);
	system("pause");
	return 0;
}

数组的定义

定义数组学要明确数组的变量名,数组元素类型,数组大小。
一般形式为:

类型名 数组名 [数组长度];
//例:
int a[100];//数组元素类型:整型;长度:100;数组名:a;
float b[200];//数组元素类型:浮点型;长度:200;数组名:b;
double c[300];//数组元素类型:双精度;长度:300;数组名:c;
  1. 数组长度是一个常量
  2. 数组名是一个地址常量 ,存放数组内存空间的首地址。

数组的引用

数组的引用,C语言规定,只能引用单个数组元素,不能一次引用整个数组。数组元素的引用通过下标引用。
形式:

数组名 [下标];
a[10];

关于数组下标需要注意的是:

  1. 数组下标从0开始,也就是说它的合理取值范围是[0,数组长度-1]。
  2. 下标可以是表达式。

数组的初始化

和简单的变量初始化一样,在定义数组时也可以对数组元素赋初值,其一般形式为:

类型名 数组名 [数组长度] = {初值表}

这里需要知道的是:

  1. 静态存储的数组如果没有初始化,系统自动给所有的数组元素赋值为0;
  2. 数组的初始化可以只针对部分元素。
  3. 数组长度可以省略,前提是对所有元素都进行了赋值,系统会根据初值的个数自动给出数组长度。

详见下例:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	//1.数组是数据的集合
    
    //2.数组内的数据是同一类型的
    
    //3.数组地址是连续的
    int c[] = {1,2,3,4,6,7,8,9};
    int i;
    int arry[100];//未初始化的数组
    int arry2[3] = {1,2,3};//有初始化的数组,完整初始化;申请了三个整数空间并赋值
    int arry3[100] = {1,2,3};//s初始化数组,不完整初始化;申请了100个内存地址空间,但只赋值了1.2.3三个数并放在了前三个位置
    printf("%d\n",arry2[2]);//数组中的中括号[]只有在定义一个数组的时候才表示数组大小,其他任何情况下都表示用下标访问数组元素
    for(i=1;i<=100;i++)
        {
			arry3[i-1] = i;
        }
    for(i=0;i<100;i++)
        {
			printf("该数组的第%d个元素为:%d\n",i+1,arry3[i]);
        
        }
	system("pause");
	return 0;
}

数组的应用

提示用户输入十个数,找到最大值找到最小值,计算是个数的平均值

#include <stdio.h>
#include <stdlib.h>

/*提示用户输入十个数,找到最大值找到最小值,计算是个数的平均值*/
int main()
{	
    int i;
    int sum = 0;
    int max;
    int min;
    float avg;
    //1.定义一个10个数的整型数组
    int arry[10];
    //2.提示输入第几个数,获取输入
    for(i=0;i<10;i++){
		printf("请输入第%d个值:\n",i+1);
        scanf("%d",&arry[i]);
        sum = sum + arry[i];
    }
    //遍历
    for(i=0;i<10;i++)
        {
			printf("第%d个数为:%d\n",i+1,arry[i]);
        }
    //3.寻找最大值和最小值
		max = arry[0];
        min = arry[0];
    for(i=0;i<10;i++)
    {
		
		if(max<arry[i])
        {
			max =arry[i];
        }
        if(min>arry[i])
        {
			min = arry[i];
        }
    }
    //4.求平均值
	avg = sum / 10.0;
    //5.输出结果
    printf("Max = %d;\nMin = %d;\nAvg = %.2f\n",max,min,avg);
	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值