)
#define _CRT_SECURE_NO_WARNINGS#include stdio.h//第一题 数组逆序输出/*//输入 5 个整数存进数组然后倒着输出。////输入1 2 3 4 5//输出5 4 3 2 1int main(){//输入五个数int arr[5] { 0 };int i 0;for (i 0; i 5; i){scanf(%d,arr[i]);}//倒着输出for (i4;i0;i--){printf(%d ,arr[i]);}return 0;}*///第二题 求最大值和最小值顺便记录下标////输入 10 个数输出最大值、最小值以及它们分别是第几个数。//输入3 7 2 9 5 1 8 4 6 0//输出最大值 9 在第 4 个最小值 0 在第 10 个//考点先把 max a[0] 而不是 max 0否则全是负数就错了这是高频坑。/*int main(){int arr[10] {0};int i 0;for (i 0; i 10; i){scanf(%d,arr[i]);}int max arr[0];int min arr[0];//最大值for (i 0; i 10; i){if(arr[i]max){max arr[i];}}printf(最大值是%d,, max);for(i 0; i 10; i){if (max arr[i]){printf(在第%d位\n, i1);}}//最小值for (i 0; i 10; i){if (arr[i] min){min arr[i];}}printf(最小值是%d,, min);for (i 0; i 10; i){if (min arr[i]){printf(在第%d位\n, i 1);}}return 0;}*///补充/* 在前面可以简化两个循环int maxIndex 0; // 先假设第 0 个最大for (i 1; i 10; i) // 从 1 开始比arr[0] 已经是候选了{if (arr[i] arr[maxIndex]){maxIndex i; // 只记位置值随手就能拿到}}printf(最大值是%d在第%d位\n, arr[maxIndex], maxIndex 1);*///第三题//数组求和与平均值//输入 8 个整数求总和与平均值保留两位小数。//考点double 除法前要转型 sum / 8.0直接 sum / 8 会得到整数。/*int main(){int arr[8] { 0 };int i 0;for (i 0; i 8; i){scanf(%d, arr[i]);}int sum 0;for (i 0; i 8; i){sum arr[i];}printf(%d\n,sum);printf(%.2lf,sum/8.0);return 0;}*///第四题//4. 统计奇偶个数//输入 10 个整数分别统计奇数和偶数各多少个并把奇数、偶数分别输出。//考点a[i] % 2 0以及边遍历边输出。/*int main(){int arr[10] {0};int i 0;int ji 0;int ou 0;for (i 0; i 10; i){scanf(%d,arr[i]);if (arr[i] % 2 0){ou;}else{ji;}}printf(偶数有%d个:, ou);for (i 0; i 10; i) // 第一遍专门捞偶数{if (arr[i] % 2 0)printf(%d , arr[i]);}printf(\n奇数有%d个:, ji);for (i 0; i 10; i) // 第二遍专门捞奇数{if (arr[i] % 2 ! 0)printf(%d , arr[i]);}return 0;}*///5. 查找某个数//输入 10 个数再输入一个目标值问它是否在数组里、在第几个位置只找第一次出现的。//考点设一个标志变量 flag找到就跳出。///*int main(){int arr[10] { 0 };int i 0;int target 0; // 要找的数起个不混淆的名字int found 0; // 标志变量0还没找到1找到了for (i 0; i 10; i){scanf(%d,arr[i]);}printf(请输入flag的数);scanf(%d, target);for (i 0; i 10; i){if (arr[i] target){found 1; // 立个flag找到了printf(%d这个数在数组里在第%d个\n, target, i 1);break; // 只找第一个找到就走}}if (found 0) // 循环走完了found还是0 → 全程没找到{printf(%d不在数组里\n, target);}return 0;}*///三、稍微动脑练交换 双下标//6. 数组元素左移一位//把数组里所有元素整体向前移一位第一个元素移到末尾。////plaintext////输入1 2 3 4 5//输出2 3 4 5 1//考点先存住 a[0]再从前往后挪最后把存的值放末尾。///*int main(){int arr[100];int n 0;int i 0;printf(输入数组的长度:);scanf(%d, n); // \n 删掉for (i 0; i n; i)scanf(%d, arr[i]);int b arr[0]; // 先存第一个for (i 0; i n; i){if (i n - 1)arr[i] arr[i 1]; // 从前往后挪左移正确方向elsearr[n - 1] b; // 存的值补到末尾printf(%d , arr[i]);}return 0;}*///7. 冒泡排序从大到小//输入 10 个数排序后输出从大到小。//考点双重 for 循环 交换 temp这题你后面考试一定会遇到值得现在就啃。/*int main(){int a[10] { 0 };int i 0;for (i 0;i10;i){scanf(%d,a[i]);}int j 0;int temp 0;for (i 0; i 9; i) // 一共跑几趟{for (j 0; j 9-i; j) // 这一趟比几次{if (a[j] a[j 1]){temp a[j]; // 先把 a[j] 存进杯子a[j] a[j 1]; // 后面的倒进前面a[j 1] temp; // 杯子里的倒给后面// 三行交换}}}for (i 0; i 10; i){printf(%d , a[i]);}return 0;}*///四、挑战题做出来不超纲但要想//8. 找出出现次数最多的数//输入 10 个 0~9 之间的整数找出出现次数最多的那个数字。////plaintext////输入1 3 3 5 3 7 3 9 2 0//输出3 出现了 4 次//提示开一个 int count[10] { 0 }; 用输入的数字当下标去计数这叫计数数组非常经典的技巧只用到数组不涉及指针。//#define _CRT_SECURE_NO_WARNINGS#include stdio.hint main(){int count[10] { 0 }; // 10 个计数器count[0]~count[9]全清零int num 0; // 临时存放每次读进来的数字int i 0;int maxIndex 0; // 记录出现次数最多的数字先假设是 0printf(请输入10个0~9之间的整数:\n);// 第一步边读边计数for (i 0; i 10; i){scanf(%d, num); // 读到比如 3count[num]; // count[3] 加 1 —— 核心就这一句}// 第二步在 count 数组里找最大值的位置for (i 1; i 10; i) // 从 1 开始因为 count[0] 已经是候选了{if (count[i] count[maxIndex]){maxIndex i; // 谁出现得多冠军下标搬到谁家}}// 第三步输出// maxIndex 就是那个出现最多的数字因为它同时是下标printf(%d 出现了 %d 次\n, maxIndex, count[maxIndex]);return 0;}