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

C++如何限制用户输入仅含ATGC字符的核苷酸DNA序列?

C++ DNA序列输入合法性校验实现

你可以在原有代码基础上新增字符遍历校验逻辑,实现仅允许输入A/T/G/C字符的要求,修改后的完整代码如下:

#include <iostream>
#include <string>
// 如需支持小写字符自动识别可引入下面的头文件
// #include <cctype>

using namespace std;

int main ()
{
    string DNAsequence;
    cout<<"Enter the DNA sequence : ";
    cin>> DNAsequence;

    // 新增输入合法性校验
    for (char c : DNAsequence) {
        // 如需支持小写atgc可将c替换为toupper(c)
        if (c != 'A' && c != 'T' && c != 'G' && c != 'C') {
            cout << "错误:输入内容包含非法字符,DNA序列仅允许由A、T、G、C四个字符组成" << endl;
            // 异常退出程序
            return 1;
        }
    }

    cout<< "Your 5 to 3 DNA sequence is "<<DNAsequence << endl;
    return 0;
}

改动说明

  • 新增了全字符遍历校验逻辑,逐个判断输入的每个字符是否属于合法DNA字符集合
  • 加入了错误提示分支:只要检测到1个非法字符就立刻抛出错误提示,终止程序运行
  • 预留了小写字符兼容的优化方案,引入<cctype>头文件后调用toupper()方法即可兼容用户输入小写atgc的场景
  • 如需全中文交互,可直接替换对应输出内容,比如将输入提示改为cout<<"请输入DNA序列:";

旧标准兼容方案

如果你需要兼容C++11之前的编译环境,可以将范围for循环替换为普通下标遍历逻辑:

for (int i = 0; i < DNAsequence.length(); i++) {
    char c = DNAsequence[i];
    if (c != 'A' && c != 'T' && c != 'G' && c != 'C') {
        cout << "错误:输入内容包含非法字符,DNA序列仅允许由A、T、G、C四个字符组成" << endl;
        return 1;
    }
}

内容的提问来源于stack exchange,提问作者waleed shoaib bajwa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:36:03