1.打印闰年
1.确定变量的数量,只有年份year一个变量;
2.变量范围:输出1000~2000之间的闰年,则1000<=year<=2000;
3.判断year为闰年需要满足两种条件组合中的任意一种:1、year能被4整除且year不能被100整除 2、year能被400整除。
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int year = 0; for (year = 1000; year <= 2000; year++) { if (year % 4 == 0 && year % 100 != 0) printf("%d ", year); else if (year % 400 == 0) printf("%d ", year); } return 0; }
2.求十个数中的最大值
1、首先需要定义一个整型数组空间,因为这里需要输入十个数,所以数组空间为10个。
2、接着定义一个最大值Max,初始默认值为0,这个用于后续值的比较。
3、接着使用for循环,来连续接收10个数字的输入。
4、再使用一个for循环来循环数组,求得最大值Max。
5、循环结束后,输出最终的结果,也就是我们需要的10个数中的最大值。
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int arr[10]; int Max = 0; for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); } for (int i = 0; i < 10; i++) { if (arr[i] >= Max) { Max = arr[i]; } } printf("十个数中最大的是:%d", Max); return 0; }
3.二分查找
二分查找算法的目标可以分为三个:
1、查找目标值,若存在返回下标;不存在,返回-1
2、查找目标值的左边界,若序列所有元素大于目标值,返回-1
3、查找目标值的右边界,若序列所有元素小于目标值,返回序列长度
实现思路
1.right的初始化取值为序列的长度-1,则初始化判断区间为[0,len-1],左闭右闭区间,后续判断区间为[left,right]。所以while循环的结束条件为left>right,判断条件为left<=right。
2.在每次进行区间拆半操作时,即对[left,right]进行拆半,中位元素arr[mid]已经搜索完毕,使得下次搜索区间仍然为左闭右闭区间,则左半区间为[left,mid-1],右半区间为[mid+1,right]。所以right=mid-1。
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int sz = sizeof(arr) / sizeof(arr[1]); int k = 0; scanf("%d", &k); int left = 0; int right = sz-1; int flag = 0; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] < k) mid = left + 1; else if (arr[mid] > k) mid = right - 1; else { printf("找到了,下标是:%d\n", mid); flag = 1; break; } } if (flag == 0) printf("找不到了"); return 0; }
4.将数组A中的内容和数组B中的内容进行交换。(数组一样大)
不管使用哪种方法(创建临时变量还是不创建),如果交换数值写成函数的形式,一定要传地址。
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> void temp(int* x, int* y) { *x = *x ^ *y; *y = *x ^ *y; *x = *x ^ *y; } int main() { int arr1[] = { 1, 2, 3, 4, 5 }; int arr2[] = { 6, 7, 8, 9, 10 }; int sz = sizeof(arr1) / sizeof(arr1[0]); for (int i = 0; i < sz; i++) { temp(&arr1[i], &arr2[i]); } printf("交换后数组arr1的值:"); for (int i = 0; i < sz; i++) { printf("%d ", arr1[i]); } printf("\n"); printf("交换后数组arr2的值:"); for (int i = 0; i < sz; i++) { printf("%d ", arr2[i]); } }
今天的分享就到这里了,感谢烙铁们的阅读。