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

C++实现输入关联输出的车辆准入校验程序编写问题

驾驶证核验程序实现方案

现有代码问题梳理

  • 条件分支逻辑互斥:else if(age>=18)分支会拦截所有18岁及以上的输入,后续age>=20、1-17岁的分支永远无法触发
  • 数据类型选择错误:驾驶证号为18位长字符序列,用int类型存储会出现数值溢出,无法正确存储真实证号
  • 未做无输入/非法输入兼容:直接调用cin>>读取内容时,若用户直接回车不输入、输入非约定格式内容,程序会出现卡滞、乱输出问题
  • 语法错误:switch语句未配置任何case分支,仅保留default块,无论年龄值为多少都会触发该块的输出
  • 业务逻辑矛盾:18岁以上分支仅判断输入值是否为1,未做准入权限判断,20岁以上的准入逻辑永远无法执行

核心实现逻辑

要实现「有输入时输出对应关联内容、无输入时输出对应提示」的效果,必须在每次读取输入前先判断输入流状态,读取失败时直接走无输入分支,不要等待有效输入阻塞程序:

  • 读取年龄时,若检测到无输入/输入非数字,直接输出「未检测到有效年龄输入,核验不通过」
  • 年龄核验通过后,读取驾驶证号时,若检测到无输入,直接输出「未检测到驾驶证号输入,核验不通过」
  • 所有合法输入对应匹配核验规则,输出对应的准入/拒绝提示

修正后可运行代码

#include <iostream>
#include <string>
#include <limits>
using namespace std;

int main()
{
    int age;
    string licenseNum;
    // 预置合法驾驶证号示例,实际场景可对接数据库查询
    const string validLicense = "110101199001011234";

    cout << "请输入年龄:" << endl;
    // 先判断年龄输入是否有效
    if (!(cin >> age))
    {
        // 清空输入错误标记,清空缓冲区残留内容
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "未检测到有效年龄输入,禁止进入车辆" << endl;
        return 0;
    }

    // 年龄核验逻辑,按优先级判断无互斥
    if (age < 18)
    {
        cout << "不满18周岁不符合驾驶证申领要求,禁止进入车辆" << endl;
        return 0;
    }

    cout << "请输入驾驶证号:" << endl;
    // 读取前先忽略缓冲区残留的换行符,避免误判为空输入
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    if (!getline(cin, licenseNum) || licenseNum.empty())
    {
        cout << "未检测到驾驶证号输入,禁止进入车辆" << endl;
        return 0;
    }

    // 驾驶证号核验
    if (licenseNum == validLicense)
    {
        cout << "驾驶证核验通过,允许进入车辆" << endl;
    }
    else
    {
        cout << "驾驶证号核验不通过,禁止进入车辆" << endl;
    }

    cout << "以上规则根据交管部门相关规定制定" << endl;
    return 0;
}

代码说明

  • 所有输入环节都做了空输入、非法输入拦截,不会出现程序卡滞问题
  • 修正了原有的分支互斥问题,年龄判断从低到高匹配,不会出现逻辑遗漏
  • 驾驶证号改用字符串存储,适配真实证号格式,后续可直接扩展对接证号数据库
  • 每个输入场景都对应明确的输出提示,无输入、非法输入、核验通过、核验不通过都有对应反馈

内容的提问来源于stack exchange,提问作者Muhammad Arslan Nazir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:24:16