数组
一次性定义多个相同类型的数据
1.数组定义和使用格式
类型 数组名[数组大小];
数组大小不写 定义的时候必须给初值 数组大小由给的元素个数撑开
数组[下标] []下标运算符
int brr[]={1,2,3,4,5,6};//
赋值方式
直接赋值:
int brr[10]={1,2,3,4,5,6};//超出的长度用0来补齐
//错误写法
crr[20]={1,2,3,45}; 20是数组的下标 下标为20的数组不存在 使用这样的数组越界
间接赋值:
for(int j=0;j<20;++j)
scanf("%d",brr[i]);
数组名[下标]; 下标 就是给数组元素的编号(从0开始)
存放100个分数 --->float
float score[100];
score可以存放100个float类型的值
下标从0开始 第20个score[20]
案例一:斐波那契数列
1 1 2 3 5 8
每个数字是前两个数字之和
1 int Fa[20]={1,1};//计算数列的值 2 int m; 3 for(m=2;m<20;m++) 4 { 5 Fa[m]=Fa[m-1]+Fa[m-2]; 6 printf("%d ",Fa[m]); 7 }
一维数组和二维数组
int arr[10];
int doubArr[4][10];
前面的下标是行 后面的下标是列
4行10列的二维数组
存放4行 每行存10个int 总共40行
doubArr[2][3] 行下标是2 列下标是3的这个元素
有四名学生 每个学生有三门成绩
float stuScore[4][3]; int i,j; for(i=0;i<4;++i) { for(j=0;j<3;j++) { printf("%f",stuScore[i][j]); } printf(" "); }
数组和循环的搭配
一维数组 一重循环
二维数组 二重循环(外圈是行 内圈是列)
不建议定义数组的时候省略数组大小
数组大小定义的时候 必须是整型常量
数组大小不可以包含变量
案列二:杨辉三角
第几行就有几个数组
最左和最右的数字都是1
中间的数字是斜上方两个数字之和
m*n的二维数组
每一行都是n个元素
1 int map[10][10]; 2 int i,j; 3 for(i=0;i<10;++i) 4 { 5 for(j=0;j<=i;++j) 6 { 7 if(j==0||j==i) 8 { 9 map[i][j]=1; 10 } 11 else 12 { 13 map[i][j]=map[i-1][j]+map[i-1][j-1]; 14 } 15 } 16 } 17 18 for(i=0;i<10;++i) 19 { 20 for(j=0;j<10-i;++j) 21 { 22 printf(" "); 23 } 24 for(j=0;j<=i;++j) 25 { 26 printf("%3d ",map[i][j]); 27 } 28 printf(" "); 29 }