一、数组运算
1.初始化数组的方式
方式1
for(i = 0; i < number;i++) //
{
count[i] = 0; //初始化数组
}
方式2
int count[number] = {0};
2.集成初始化时的定位
only c99;
3.数组的大小
- sizeof给出整个数组所占据的内容的大小,单位是字节
- sizeof(a[0])给出数组中单个元素的大小,于是相除就得到了数组的单元个数
- 这样的代码,一旦修改数组中初始的数据,不需要修改遍历的代码
4.数组的赋值
- 素组变量本身不能被赋值
- 要把一个数组的所以元素交给另一个数组,必须采用遍历
一些例子
- 通常都是使用for循环,让循环变量i从0到<数组的长度,这样循环体内最大的i正好是数组最大的有效下标
- 常见错误是:
-循环结束条件是<=数组长度,或;
-离开循环后,继续用i的值做数组元素的下标!
-数组作为函数参数时,往往必须再用另一个参数来传入数组的大小
小套路
加黄处的意思是 将 i 加到prime这个数组里count当前的位置 再把数组的位置向后走一格
5、数组例子——判断素数
素数表 把素组内所有数标记为1
将2、3、4、乘以由i=2开始 i++的所有数 即数的倍数说明本身素数定义为0
最后所有剩下的1就是素数
//素数表
#include<stdio.h>
int main()
{
const int maxNumber = 300;
int isPrime[maxNumber];
int i, x;
for(i=0;i<maxNumber;i++){
isPrime[i] = 1;
}
for (x = 2; x < maxNumber; x++) {
if (isPrime[x]) {
for (i = 2; i * x < maxNumber; i++) {
isPrime[i*x] = 0;
}
}
}
for (i = 2; i < maxNumber; i++) {
if (isPrime[i]) {
printf("%d\t", i);
}
}
printf("\n");
return 0;
}
二、搜索
搜索例子
key 要找的数
在 int a[] 这个数组里找
数组的长度len
二分搜索
#include<stdio.h>
int search(int key, int a[], int len) {
int ret = -1;
int left = 0;
int right = len - 1;
while (left<right) {
int mid = (right + left) / 2;
if (a[mid] == key) {
ret = mid;
break;
}else if(a[mid]>key){
right = mid-1;
}
else {
left = mid + 1;
}
}
return ret;
}
int main(){
int a[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,15,20 };
int r = search(10,a, sizeof(a) / sizeof(a[0]));
printf("%d", r);
}