最近出差回来了,继续把基础夯实。
一维数组
数组的作用:
如果你有一组类似的数据,一个个起名字麻烦也没意义,用个数组保存它们,用起来省事又方便。
定义:
类型名 数组名[常量表达式];
如:
int a[8];
它定义了一个有8个元素的数组,下标从0-7
初始化:int a[8]={0,1,2,3,4,5,6,7};
8个元素分别初始化成0,1,2,3,4,5,6,7
也可以:int a[8]={3};
它只把a[0]初始化成3,后面的a[1]到a[7]系统默认初始化为0
程序1
求任意5个数中的最大数
// 8_1 求任意五个数中的最大数 #include <stdio.h> int main() { int a[5], i, max; //定义含五个元素数组的整形数组,i 是下标,max 是最大数。 //从键盘输入五个数 for (i = 0;i<5;i++) { scanf_s("%d", &a[i]); } //找出最大的数 max = a[0]; for (i = 1;i<5;i++) { if (max < a[i])max = a[i]; //比max值大就赋值给 max } printf("%d\n", max); }
一般在数组前面有类型说明符的,如double a[5]就是“定义”数组。反之,前面没有类型说明符的,如n=a[5]、a[5]=n就是使用数组。
定义数组时,方括号里只允许使用常量,不允许出现变量。如:
int n=5;
int a[n];
这是非法的数组定义。
数组在使用时就不允许使用 a[8]={0} 这样的方式来给数组赋值,只有使用循环来给数组元素一个一个地赋值。
定义数组时,方括号中可以是空的,如:
int a[]={1,2,3};
这时电脑会自动计算出a数组有3个元素,会把这行代码翻译成int a[3]={1,2,3};再执行。
这种数组一定要用花括号初始化,比如
int a[];
这是非法的定义。
程序2
将数组中的值按逆序重新存放。例如,原来顺序为5、8、9、4、6,调整以后为6、4、9、8、5。
//程序2 //将数组中的值按逆序重新存放。例如,原来顺序为5、8、9、4、6,调整以后为6、4、9、8、5。 #include <stdio.h> int main() { int a[5] = { 5,8,9,4,6 }; int b,c; //交换用的临时变量 for (int i=0;i<= 5/2;i++) //数组执行两次互换 { b = a[i]; a[i] = a[5 - i - 1]; a[5 - i - 1] = b; } for (int i = 0; i < 5; i++) //遍历输出 { printf("%d\t", a[i]); } }
程序3
求某数列的前40个数:1,1,2,3,5,8,13,21…
//8-3:求某数列的前40个数:1,1,2,3,5,8,13,21… #include <stdio.h> main() { int i, a[40]; //循环变量,数组 a[0] = a[1] = 1; //前两项不需要计算,直接初始化为1 for (i = 2; i < 40; i++) { a[i] = a[i - 2] + a[i - 1]; } for (i = 0; i < 40; i++) { printf("%d\t", a[i]); } }