C语言 数组

本文深入讲解数组的概念,包括一维数组和二维数组的定义、初始化、访问及应用实例,如查找最大值、求和和排序等操作,以及二维数组的行列互换技巧。

数组的定义

//格式:
//类型说明符   数组名[常量表达式]
//方括号请注意
//如:
int a[10];//它表示定义了一个整形数组,数组名为a,有10个元素,每一个元素都是int类型。***(a[0],a[1],a[2],a[3]……a[9])数组的下标从0开始到10-1。***
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]

***数组的大小无法定义成动态,即数组中的元素个数一旦定义就固定了。(如:int n,a[n]) ***

为什么要用数组

先说一下什么是数组?

数组是一组数目固定、类型相同的元素组成的集合。其中,数目固定指的是元素的个数在程序运行的时候不能更改。
当类型相同的数据比较多的时候就需要用到数组了。
如:储存100个学生的成绩
怎样访问数组里面的元素呢?
我们采用数组名和元素在这个数组中的位置来访问。需要注意的是位置总是从0开始,也称为下标或索引。因此数组中的10个元素分别为:

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

数组的初始化

int a[10]={1,2,3,4,5,6,7,8,9,10};//可以在定义是初始化
//也可以只赋值部分
int b[10]={1,2,3};//b[0]=1,b[1]=2,b[2]=3,之后的b[3]~b[9]默认为0
//甚至可以
int c[10]={};//c[0]~c[9]均等于0
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
12345678910

可以通过循环来进行赋值

int a[10],i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}

数组的应用

例:输出10个数中最大的数

int main()
{
	int max,a[10],i;
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}//赋值
	max=a[0];
	for(i=1;i<10;i++)
	{
		if(max<a[i])
			max=a[i];
	}//比较
	printf("%d",max);
}

例:求10个数的和

int main()
{
	int sum=0,a[10],i;
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}//赋值
	for(i=0;i<10;i++)
	{
		sum=sum+a[i];
	}//求和
	printf("%d",sum);
}

例:10个数排序

int main()
{
	int a[10],i,j,t;
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}//赋值
	for(i=0;i<10;i++)
	{
		for(j=i+1;j<10;j++)
		{
			if(a[i]>a[j])
			{
				t=a[i];
				a[i]=a[j];
				a[j]=t;
			}
		}
	}//排序
	for(i=0;i<10;i++)
	{
		printf("%d",a[i])
	}//输出
}

以上的都是一维数组
下来谈一谈二维数组

二维数组

定义一个二维数组
//数据类型符  数组名[常量表达式][常量表达式]
int a[3][3];
a[0][0]a[0][1]a[0][2]
a[1][0]a[1][1]a[1][2]
a[2][0]a[2][0]a[2][2]
二维数组的初始化:
分行赋值:如   
int  a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
顺序赋值:  
int  a[2][3]={1,2,3,4,5,6};
部分元素赋值: 
int  a[2][3]={{1},{3},{5}};
/*
对于第三个
a[0][0]=1  a[0][1]=0  a[0][2]=0
a[1][0]=3  a[1][1]=0  a[1][2]=0
a[2][0]=5  a[2][1]=0  a[2][2]=0

也可以通过循环来赋值:

int main()
{
	int a[5][6],i,j;
	for(i=0;i<5;i++)
	{
		for(j=0;j<6;j++)
		{
		scanf("%d",&a[i][j]);
		}
	}
}

例:二维数组行列互换

int main()
{
	int a[3][3],b[3][3],i,j;
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
		scanf("%d",&a[i][j]);
		printf("%d",a[i][j]);
		}
	}//赋初值
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			b[j][i]=a[i][j];
		}
	}互换
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
		printf("%d",b[i][j]);
		}
	}//输出b数组
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值