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

一、数组运算

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

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值