You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:54:05