c语⾔数组元素的⼀般形式,C语⾔中的数组
数组是⼀种构造类型,他是具有相同类型的若⼲变量按有序的形式组合爱来的集合叫做数组。塔筒数组名标识,每个数组可以分成多个数组元素,这些元素可以是基本数据类型或是构造类型,每个数组元素可以通过数组名和元素的相对位置(即下标)来应⽤。
⼀维数组
定义
⼀位数组的所有元素都不是数组。在C语⾔中使⽤数组必须先定义数组。⼀位数组的定义⽅式为:类型说明符 数组名[常量表达式];
类型说明符可以是任意⼀种基本数据类型或构造数据类型。数组名是⽤户⾃定义的数组标识符,⽅括号中的常量表⽰数据元素的个数,也叫做数组长度。例:int a[10] //整型数组a中有10个元素。
引⽤
数组元素是组成数组的基本单元。数组元素也是⼀种变量,表⽰⽅式为数组名后跟⼀个下标。下标表⽰元素在数组中的顺序号。数组元素的⼀般形式为:数组名 [下标]
下标只能为整型常量或整型表达式。
下标表⽰数组元素与数组中最开头元素之间的相对位置。最⼩值为0,最⼤值为数组元素个数减⼀。例:a[5],a[i++],a[i+j]
必须先定义数组,才可以使⽤下标变量。在C语⾔中只能诸葛的使⽤下标变量,不能⼀次引⽤整个数组。
例:⽤⼀位数组处理斐波那契数列,存储并输出斐波那契数列数列的前20项。
#include
int main()
{
int i;
long f[20];
f[0]=1;f[1]=1; //
for(i=2;i<20;i++)
f[i]=f[i-1]+f[i-2];
for(i=1;i<21;i++)
{
printf("%10d",f[i-1]);
if(i%5==0)
printf("\n"); //每输出5项,换⼀⾏
}
return 0;
}
初始化
除了利⽤赋值语句对数组元素逐个赋值外,还可以进⾏初始化复制和动态赋值。
初始化赋值指在定义时给数组元素赋初值。他在编译阶段运⾏可以减少运⾏时间,提⾼效益。⼀维数组初始化赋值的⼀般形式为:数组类型 数组名[常量表达式]={值,值····值};例:int a[5]={1,2,3,4,5};
除了初始化复制也可以利⽤scanf进⾏动态赋值。例:
int i,a[5];
for(i=0;i<5;I++)
scanf("%d",&[i]);
例:输⼊是个数字求它的最⼤值和他的下标
#include
int main()
{
int a,b[10],max,p=o;
printf("input ten nimbers:");
for(a=0;a<10;a++)
scanf("%d",&b[a]);
max=b[0];
for(a=0;a<10;a++)
{
if(b[a]>max)
{
max=b[a]
p=i
printf("maxnum=%d,index=%d\n",max,p);
return 0;
}
⼆维数组
定义
若⼲个同⼀类型有序变量的集合。通常⽤于存放矩阵形式的数据,如⼆维表格等数据定义形式:类型说明符 数组名[常量表达式1][常量表达式2];
例:int a[3][4]; //3*4的矩阵,共12个元素
排列顺序:a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[0][3]
a[2][0] a[2][1] a[2][2] a[2][3]
在C语⾔中,⼆维数组按⾏排列。
引⽤
⼆维数组元素的表⽰形式为:数组名 [下标][下标];
例:处理学⽣成绩,求平均成绩与各门课的平均成绩
学⽣
英语
数学
C语⾔
stu1
80
77
76
stu2
67
stu3
56
75
70
stu4
89
90
85
stu5
85
67
73
#include
int main()
{
int a[5][3],i,j,s=0,b[3];
printf("input score:");
for(j=0;j<3;j++)
{
for(i=0;i<5;i++)
{
scanf("%d",&a[i][j]);
s=s+a[i][j];
}
c语言二维数组表示方法b[j]=s/5;
}
average=(b[0]+b[1]+b[2])/3;
printf("English:%d,Math:%d,C languag:%d",b[0],b[1],b[2]); printf("total:%d",average);
return 0;
}
初始化
完全初始化:int[2][3]={1,2,3,4,5,6};
省略⾏的完全初始化:int [][3]={1,2,3,4,5,6};
分⾏完全初始化:int [2][3]={(1,2,3),(4,5,6)};
部分初始化:int [2][3]={{1},{2},{3}};
例:打印杨辉三⾓
分析:1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
由图可得:杨辉三⾓第⼀个数字与最后⼀个数字的总是为1.;中间的数字是上⼀⾏同列元素与前⼀列元素的和. #include
int main()
{
int s[10][10];
int i,j;
for(i=0;i<10;i++}{
s[i][i]=1;s[i][0]=1;
}
for(i=2;i<10;i++)
for(j=1;j
s[i][j]=s[i-1][j-1]+s[i-1][j];
for(i=0;i<10;i++)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论