week 7 c语言入门——数组运算

一、数组运算

1.初始化数组的方式

方式1

	for(i = 0; i < number;i++)   //
{
     
		count[i] = 0;           //初始化数组
}

方式2

int count[number] = {
     0};

2.集成初始化时的定位

only c99;
week 7 c语言入门——数组运算_第1张图片

3.数组的大小

  • sizeof给出整个数组所占据的内容的大小,单位是字节
    在这里插入图片描述
  • sizeof(a[0])给出数组中单个元素的大小,于是相除就得到了数组的单元个数
  • 这样的代码,一旦修改数组中初始的数据,不需要修改遍历的代码

4.数组的赋值

  • 素组变量本身不能被赋值
  • 要把一个数组的所以元素交给另一个数组,必须采用遍历
    一些例子
  • 在这里插入图片描述
  • 在这里插入图片描述
    在这里插入图片描述
    week 7 c语言入门——数组运算_第2张图片
  • 通常都是使用for循环,让循环变量i从0到<数组的长度,这样循环体内最大的i正好是数组最大的有效下标
  • 常见错误是:
    -循环结束条件是<=数组长度,或;
    -离开循环后,继续用i的值做数组元素的下标!
    -数组作为函数参数时,往往必须再用另一个参数来传入数组的大小

小套路
week 7 c语言入门——数组运算_第3张图片
加黄处的意思是 将 i 加到prime这个数组里count当前的位置 再把数组的位置向后走一格
week 7 c语言入门——数组运算_第4张图片

5、数组例子——判断素数

素数表 把素组内所有数标记为1
将2、3、4、乘以由i=2开始 i++的所有数 即数的倍数说明本身素数定义为0
最后所有剩下的1就是素数

//素数表

#include
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
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);
}

week 7 c语言入门——数组运算_第5张图片

你可能感兴趣的:(week 7 c语言入门——数组运算)