C语言数组

数组

  • 一维数组
  1. 定义

<类型关键字><数组名>[<常量表达式>];

  • <类型关键字>为已存在的一种数据类型。
  • <数组名>为用户定义的一个标识符。
  • <常量表达式>为一常量表达式(常量或符号常量数组的长度,元素个数)

注意:两边的中括号是语法所要求的符号;不是可选项而是用的符号。

例:① int a[20];  //定义了一个有20个元素的一维int型数组a。

② double b[MS];  //假定MS为已定义的整型常量

名字一致,类型一致,个数确定。

  1. 一维数组元素的访问

C语言规定:对于数值型数组,只能逐个引用数组中的元素,而不能一次引用(例如输入输出或赋值)整个数组全部元素的值。

访问格式:<数组名>[<下标>]    [ ]:为下标运算符

  • [<下标>]与变量定义中的不同,那里是数组元素个数,这里是某个元素。
  • 对于有n个元素的数组,下标依次为0,1,2,3,……,n-1,所以n个元素依次为:a[0],a[1],a[2],a[3],……,a[n-1]
  • 下标可以是常量,也可以是变量或表达式,但其值必须是整数。
  • 有下标可唯一确定某一元素,所以,数组元素又称为下标元素。
  • C对数组元素的下标值不做有效性检查。
  1. 一维数组的初始化
  • 在定义数组时,对数组元素赋予初值。

例如:int a[10]={0,1,2,3,4,5,6,7,8,9};

  • 可以只对一部分元素赋初值0

例如: int a[10]={0,1,2,3,4};

前五个元素由用户赋予了初值,后五个元素系统赋值为0

  • 若希望对所有元素赋初值0

例如:int a[10]={0};

第一个元素用户赋值为0,系统对后面9个元素赋值为0

  • 若对全部元素进行初始化,可以省略数组长度。

例如: int a[5]={1,2,3,4,5};可以写成 int a[ ]={1,2,3,4,5}

  1. 一维数组数据存储空间的分配
  • 定义一维数组后,系统分配一块连续的存储空间,空间大小为:n*sizeof(<元素类型>)
  • C中,数组名表示该数组存储空间的首地址。
  1. 一维数组的应用
  • 定义一个含有10个元素的整型数组分别给a[0]~a[9]赋值为0~9然后按逆序输出。
#include<stdio.h>
int main()
{
	int i,a[10];
	for(i=0;i<=9;i++)
		a[i]=i;
	for(i=9;i>=0;i--)
	    printf("%d",a[i]);
	printf("\n");
	return 0;
}
  • 输出斐波那契数列
#include<stdio.h>
#define M 10
int main()
{
	int a[M+1],i;
	a[0]=1;
	a[1]=2;
	for(i=2;i<=M;++i)
	    a[i]=a[i-1]+a[i-2];
	for(i=0;i<M;i++)
	    printf("%d",a[i]);
	printf("%d\n",a[M]);
	return 0;
}
  • 选择排序
#include<stdio.h>
int main()
{
	int i,j,k,x,n=10;
	int a[10]={4,6,8,7,3,1,2,5,9,10};
	for(i=1;i<n;i++)
	{
		k=i-1;
		for(j=i;j<n;j++)
		{
		    if(a[j]<a[k])
		        k=j;
	    }
	    x=a[i-1];
	    a[i-1]=a[k];
	    a[k]=x;
	}
	for(i=0;i<n;i++)
	    printf("%d",a[i]);
	return 0;
}
  • 直接插入排序
#include<stdio.h>
int main()
{
	int i,j,k,x,n=10;
	int a[10]={4,6,8,7,3,1,2,5,9,10};
	for(i=1;i<n;i++)
	{
		x=a[i];
		for(j=i-1;j>=0;j--)
		    if(x<a[j])
		        a[j+1]=a[j];
		    else
		        break;
		    a[j+1]=x;	    
	}
	for(i=0;i<n;i++)
	    printf("%d",a[i]);
	return 0;
}
  • 二维数组
  1. 定义格式:<类型关键字><数组名>[<常量表达式1>][<常量表达式2>]
  • <常量表达式1>,<常量表达式2>两边的括号也是语法要求。
  • <常量表达式1>为第一维元素个数(行),

<常量表达式2>为第二维元素个数(列);

元素总个数=<常量表达式1>*<常量表达式2>

  1. 二维数组元素的访问格式

<数组名>[<行下标>][<列下标>]

  • [ ]与变量定义语句中的不同
  • 下标可以是常量,也可以是变量或表达式,但其值必须是整数。
  • 二维数组元素又称为双下标变量
  • c对数组元素的下标值不做有效性检查
  1. 二维数组的初始化
  • 定义二维数组的同时为数组元素赋值
  • 分行给二维数组赋初值
  • 可以把所有数据写在一个花括号内
  • 可以对部分元素赋初值
  • 全部元素赋初值为0
  1. 二维数组数组存储单元的分配
  • 定义二维数组后,系统分配一块连续的存储空间,该存储空间大小为m*n*sizeof(<元素类型>),m和n分别为一维和二维的下标个数。

给二维数组元素分配存储空间时,行优先

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值