一维数组
如何定义一个数组:
1.相同数据类型
2.地址空间连续
for循环给数组赋值
#include<stdio.h>
int main()
{
int a[10];
int data;
for(data=0;data<10;data++)
{
scanf("%d",&a[data]);
}
return 0;
}
部分赋值:未被赋值默认值为0
int a[5]={1,2,3,4,5};
可以写成
int a[]={1,2,3,4,5}
size=sizeof(a);//sizeof(a)为a[]数组的总大小
sizeof(a)/sizeof(a[0])为数组元素的个数(整个数组的大小除以数组中单个元素的大小等于元素的个数)
-
2. 斐波那契数列
#include<stdio.h>
int main()
{
int a[30];
a[0]=0;
a[1]=1;
int i;
for(i=2;i<30;i++)
{
a[i]=a[i-1]+a[i-2];
}
for(i=0;i<30;i++)
printf("%d ",a[i]);
}
冒泡排序(for循环的嵌套)
横为i为大循环,j为竖为小循环。 i=len-1 j=len-1-i 例如i=0时,j=4-1-0。
#include<stdio.h>
int main()
{
int array[]={8,12,9,13};
int i,j,tmp;
int len=sizeof(array)/sizeof(array[0]);
for(i=0;i<3;i++)
{
for(j=0;j<len-i-1;j++)
if(array[j]>array[j+1])
{
tmp=array[j];
array[j]=array[j+1];
array[j+1]=tmp;
}
}
for(i=0;i<len;i++)
printf("%d ",array[i]);
}
简单选择排序法
i=比较轮数 (i<len-1)
j能访问到数组的最后一位数 (j<len)
每一轮的第一个数与几个数相比较,大的调换位置
#include<stdio.h>
int main()
{
int array[]={8,12,9,13};
int i,j,tmp;
int len=sizeof(array)/sizeof(array[0]);
for(i=0;i<len-1;i++)
{
for(j=i+1;j<len;j++)
if(array[i]<array[j])
{
tmp=array[j];
array[j]=array[i];
array[i]=tmp;
}
}
for(i=0;i<len;i++)
printf("%d ",array[i]);
}
二维数组
二维数组的遍历
#include<stdio.h>
int main()
{
int array[2][3]={{222,333,444},{777,888,999}};
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
printf("%d\n",array[i][j]);
}
a[3][4]二维数组中定义时行可以省略,列不可以省略
#include<stdio.h>
int main()
{
int array[3][4]={1,12,23,84,15,116,347,68,99,110,131,121};
int max=array[0][0];//找出身高最高的那个汉子,先记录第一个来挑战汉子的身高在纸上
int i,j,hang,lie;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(max<array[i][j])
{
max=array[i][j];//如果纸上记录的身高比当前记录的小鬼的身高矮,则重新写入新的身高
hang=i;
lie=j;
}
}
}
printf("其中在%d行%d列的数%d最大\n",hang+1,lie+1,max);
return 0;
}