1.数组的初始化
只是定义数组:
int a[100];
数组的集成初始化:
int a[] = {2,4,6,7,1,3,5,9,13,23,14,32};
- 直接用大括号给出数组所有元素的初始值
- 不需要给出数组的大小,编译器会运算
- 0的补位:
int a[4] = {5};
for(int i = 0;i < 13;i++)
{printf("%d\t",a[i]);
}
//这段代码的输出会是:5 0 0 0
- 所以,将数组初始化为0的操作:
int a[5] = {0};
或者
int a[5];
for(int i = 0;i < 5;i++)
{a[i] = 0;
}
- 初始化时的定位:
2.数组的大小(长度)计算
- size of()
单位是字节byte,一个整数int类型大小是4字节 - 因为数组内的数据类型都是一样的,所以a[0]所占的大小和其他元素的大小相同
int a[] = {1,2,5,7,6,4,32};
int size_a = sizeof(a) / sizeof(a[0]);
3.数组的赋值
- 把一个数组赋值给另一个数组的唯一方式:使用遍历循环一 一赋值。
4.遍历数组的应用
- 对数组进行赋值
- 初始化数组为0
- 检查是否存在某一值
- 找出符合条件的值
- 对应打印值
5.搜寻 key的程序
- 数组作为函数的参数时,不能利用sizeof()来计算数组的大小!同时在形式参数a[]的方框中传入数组的大小也是没有意义的。
- 所以在函数传入的数组参数中,通常再用一个参数来传入数组的大小。
6.判断素数
- 解法一 之前的程序:
循环的次数可以反应程序的效率。
- 解法二 因为所有的偶数不是素数,就从3开始的奇数开始循环:
- 解法三 循环到算数平方根即可:
sqrt()函数,在数学库中可用。求平方根的函数。
- 解法四 只要拿比x小的素数来测试就好
注意prime[count++] = i是先执行再递增,完成了两件事。可以来个大括号做调试
- 解法五 构造素数表
原理:素数的倍数全都是 非素数
// maxNumber表示要区分开在它范围之内的素数;
赋值为0表示为非素数,赋值为1表示为素数;
将数组全部赋值(标记)为1;
从2开始,将2的倍数(在范围内)全部标记为0;
标记为0的数直接跳过,只是循环标记为1的数;
接下来打印数组中标记为1的数,剩下的即为范围内的素数。
- 关于数组中的子数组
1 int a[][3] = {{0},{1},{2}};
表示三行三列的二维数组,
没有初始化的值使用0补上。
实际上可以将他看做:
int a[][3] = {{0, 0, 0},{1, 0, 0},{2, 0, 0}
};//每个子数组单独占一行。
2 例如,
int a[][4] = {{0},{1},{2}};
他就表示3行4列的二维数组;
nt a[][4] = {{0},{1},{2}{3}};
就表示4行4列的二维数组。