如何用C语言实现输入20个10-100的整数并输出仅出现一次的数值
C语言程序修改方案
原代码存在的问题
- 变量
n未初始化就参与范围判断,属于未定义行为 - 没有存储输入的数值,也没有统计每个数的出现次数,无法实现最终筛选仅出现一次数值的需求
- 范围判断逻辑写在while循环的判断条件里,只要出现一次非法输入就会直接终止输入流程,不符合容错要求
- 错误提示固定输出,无论输入是否合法都会打印,逻辑错误
实现思路
- 利用输入值范围为10~100的特性,定义长度为101的计数数组,数组下标对应输入的数值,元素值对应该数出现的次数,初始全部赋值为0
- 输入环节做合法性校验:输入值不在10~100区间时提示用户重输,不计入20个有效输入的计数
- 所有有效输入收集完成后,遍历10~100的所有数值,打印计数为1的数值即可
修改后完整代码
#include <stdio.h> int main() { // 计数数组,下标对应输入数值,值对应出现次数 int count[101] = {0}; int valid_input_count = 0; int n; printf("请输入20个10~100之间的整数:\n"); // 收集20个有效输入 while (valid_input_count < 20) { scanf("%d", &n); // 校验范围 if (n < 10 || n > 100) { printf("Number is not between 10-100. Try again\n"); continue; } count[n]++; valid_input_count++; } printf("仅出现过一次的整数如下:\n"); // 遍历筛选出现次数为1的数 for (int i = 10; i <= 100; i++) { if (count[i] == 1) { printf("%d ", i); } } printf("\n"); return 0; }
内容的提问来源于stack exchange,提问作者lukn
相关产品推荐
相关产品推荐

