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

如何编写C语言程序实现1-20输入验证及非法输入判定

C语言选举系统输入验证实现

核心实现思路

要完成1-20整数的输入验证,需要同时处理三类无效输入:

  • 负数或0
  • 字符、字符串等非整数输入
  • 大于20的整数
    关键在于利用scanf的返回值判断输入是否为有效整数,同时清空输入缓冲区避免错误输入残留,干扰后续操作。

完整代码

#include <stdio.h>

int main() {
    int input;
    int read_result;

    printf("请输入1-20之间的整数:");
    // 尝试读取整数,scanf返回成功读取的变量个数
    read_result = scanf("%d", &input);

    // 处理非整数输入:scanf返回0表示未读取到有效整数
    if (read_result == 0) {
        printf("invalid input\n");
        // 清空输入缓冲区的残留字符,避免影响后续操作
        while (getchar() != '\n');
    } else {
        // 处理负数、0或超出20的情况
        if (input < 1 || input > 20) {
            printf("invalid input\n");
        } else {
            // 输入有效时的处理逻辑,可替换为选举系统业务代码
            printf("输入有效:%d\n", input);
        }
    }

    return 0;
}

代码详细解释

  1. scanf返回值判断

    • scanf("%d", &input)尝试从输入流读取整数,成功读取时返回1;若输入字符、字符串等非整数,返回0。通过该返回值可直接识别非整数输入。
  2. 清空输入缓冲区

    • 非整数输入会残留字符在缓冲区,若不清理,后续输入操作会直接读取这些残留内容,导致逻辑混乱。用while (getchar() != '\n')循环读取缓冲区直到换行符,彻底清空残留内容。
  3. 范围与负数判断

    • 当scanf成功读取整数后,直接判断input是否在1-20区间内,负数、0或大于20的数均判定为无效输入。
  4. 可扩展性

    • 代码中“输入有效”的分支可直接替换为选举系统的业务逻辑,比如候选人票数统计、菜单跳转等。

内容的提问来源于stack exchange,提问作者Md_Adnan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:01:11