目录
第四章 数组
一维数组
如何定义一个数组
- 相同数据类型——[]的解释 ——定义的时候表示数组中元素——从a[0]开始计数
- 地址空间连续
数组如何编译
结合循环控制语句
下标注法访问
地址连续的
初始化方式
- 全部赋值
- 部分赋值——int a[10]={3,5,2,5}
- 初始化为0 ——int a[]={2,435,543,654}
- sizeof不是函数
计算数组大小
size=sizeof(array)/sizeof(array[0])
sizeof能计算括号中对应数据的内存空间的大小
Tips:sizeof不是函数
案例
- 数组初始化及逆序输出
#include<stdio.h> int main() { int arr[10]; int i; for(i=0;i<10;i++) { arr[i]=i; } puts("当前数组是\n"); for(i=0;i<10;i++) { printf("%d ",arr[i]); } puts("\n逆序输出后是\n"); for(i=9;i>=0;i--) { printf("%d ",arr[i]); } return 0; }
- 斐波那契数列
#include<stdio.h>
int main()
{
int arr[30];
int i;
int arrsize;
arrsize=sizeof(arr)/sizeof(arr[0]);
arr[0]=0;
arr[1]=1;
for(i=2;i<arrsize;i++)
{
arr[i]=arr[i-1]+arr[i-2];
}
for(i=2;i<arrsize;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
冒泡排序法
#include<stdio.h>
int main()
{
int array[]={12,8,13,9};
int i,j;
int len;
int tmp;
len=sizeof(array)/sizeof(array[0]);
for(i=0;i<len-1;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]);
}
return 0;
}
简单选择排序法
#include<stdio.h>
int main()
{
int array[]={12,8,13,9};
int i,j;
int len;
int tmp;
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[i];
array[i]=array[j];
array[j]=tmp;
}
}
}
for(i=0;i<len;i++)
{
printf("%d ",array[i]);
}
return 0;
}
二维数组
如何定义二维数组
int[a][b] a行b列
赋值方式
- 每行赋值
- 某个特定元素赋值
- 只对某几行元素赋值
- 全部赋值(行可以不写,列必须要写)
编译方式
循环嵌套
案例
#include<stdio.h>
int main()
{
int array[3][4]={1,12,34,45,32,4325,654,76,32,54,655,76};
int max;
int i;
int j;
int tmp;
max=array[0][0];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if (max<array[i][j])
{
tmp=max;
max=array[i][j];
array[i][j]=max;
}
}
}
printf("max=%d",max);
return 0;
}
}