数组的使用

目录

  • 前言
  • 一、数组的定义
  • 二、数组的使用
  • 三、一维数组的推广
  • 总结

前言

当我们需要一次定义很多相同类型的变量时,可以用int a,b……。但是如果需要定义的变量比较多,那这个方法就不适用了,这时就需要用到数组了。


一、数组的定义

定义:数组是有序的元素序列,且可以用于储存多个相同数据类型的集合。

简单来说数组就是一种可以放各种相同数据的容器

数组的形式:<类型>变量名称[元素数量]                  (元素数量必须为整数

元素数量也叫下标或索引

例如:int a[10]  ,  double see[10]

以int a[10]为例

a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]

这里面就放了10个int类型的数据

特点:(1)所有的元素都具有相同的数据类型

           (2)数组一旦创建就不能改变大小

           (3)数组中的元素在内存中是连续依次排列的

数组的赋值:数组变量本身不能被赋值,要把一个数组的所有元素交给另一个数组,必须采用遍历

int a[]=0,1,2,3,4,5,6,7,8,9;
int b[]=a;
//这样的赋值方式是错误的

//正确的赋值方法————遍历
for(i=0;i<10;i++)
{
    b[i]=a[i];
}

数组的赋值还有a[2]=a[1]+6

对于这个赋值是把a[1]里面的元素先+6,然后赋值给a[2]


二、数组的使用

在了解数组的定义之后,我们就知道了对于要定义多个变量可以使用数组来简化代码

例如求平均数,在学习数组之前

#include<stdio.h>
int main()
{
	int x;
	double sum = 0;
	int cnt = 0;              //定义变量
	scanf_s("%d", &x);        //接收用户输入的数字
	while (x != -1)
	{
		sum += x;
		cnt++;
		scanf("%d", &x);
	}                          //求出总和和个数
	if (cnt > 0)
	{
		printf("%f\n", sum / cnt);
	}                           //输出平均数
	return 0;
}

但是当需要输出大于平均数的数,那么这个代码就不能再使用了,这时候就需要用到数组来记录用户输出的值

#include<stdio.h>
int main()
{
	int x;
	int i;
	double sum = 0;
	int cnt = 0;
	int number[100];                        //定义数组
	for(a=0;a<100;a++)
    {
    number[a]=0;
    }                                       //遍历数组
    scanf_s("%d", &x);
	while (x != -1)
	{
		number[cnt] = x;                    //对数组赋值
		sum += x;
		cnt++;
		scanf("%d", &x);
	}
	if (cnt > 0)
	{
		printf("%f\n", sum / cnt);
		for (i = 0; i < cnt; i++)
		{
			if (number[i] > sum / cnt)
			{
				printf("%d\n", number[i]);   //输出大于平均数的值
			}
		}
	}
	return 0;
}

还可以用数组来进行简单的两数,三数求和

#include<stdio.h>
int main()
{
    int i=0;
    int x;
    int sum;
    int nums[] = { 2,7,11,15 };
    int target = 9;
    while(i<4)
    {
        for (x = 0; x < 4; x++)
        {
            sum = nums[i] + nums[x];
            if (sum == target)
            {
                printf("%d ",i);
            }
        }
        
        i++;
    }
    return 0;
}

三、一维数组的推广——二维数组

在前面我们使用的都是一维数组,即数组只有一行,从a[0]到a[9]依次排列。既然有了一维数组,那么就肯定有二维数组,三维数组……这里用二维数组为例来对一维数组进行推广

数组形式:<类型>变量名称[元素数量][元素数量]

例如:

a[0][0]a[0][1]a[0][2]a[0][3]a[0][4]
a[1][0]a[1][1]a[1][2]a[1][3]a[1][4]
a[2][0]a[2][1]a[2][2]a[2][3]a[2][4]
a[3][0]a[3][1]a[3][2]a[3][3]a[3][4]
a[4][0]a[4][1]a[4][2]a[4][3]a[4][4]

这个矩阵可以用数组理解为int a[5][5],一个5行5列的矩阵

对于二维数组有以下这些特点

(1)列数是必须给出的,行数可由编译器来数

(2)每行一个{},逗号分隔

(3)最后的逗号可以存在也可以不存在

(4)如果省略,表示补零

int a[][5]={

        {0,1,2,3,4},

        {2,3,4,5,6},

};

 二维数组也需要进行遍历,它的遍历与一维数组类似但又有些不同,它需要对行列都进行遍历

for(i=0;i<5;i++)
{
    for(j=0;j<5;j++)
    {
    a[i][j]=i*j;
    }
}

 二维数组的使用也和一维数组一样,在需要使用二维数组的时候使用


总结

通过数组的学习,我们解决问题的能力变强了,但也需要我们能熟练运用数组,在需要使用数组时使用它,当需要更高维度的数组时,也可以通过一维数组去进行推导了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值