原码转反码程序的改进与优化
### 🔍 代码改进思路 原代码实现了将原码转换为反码的功能,但可以从以下几个方面进行改进: 1. **输入验证**:原代码没有对用户输入进行验证,用户可能输入非二进制字符串,需要添加输入验证逻辑。 2. **代码可读性**:可以添加更多注释,使代码更易理解。 3. **错误处理**:当输入不符合要求时,给出明确的错误信息。 ### 💻 改进后的代码 ```cpp #include <iostream> #include <string> #include <cctype> // 函数用于验证输入是否为有效的二进制字符串 bool isValidBinary(const std::string& input) { // 遍历字符串中的每一个字符 for (char c : input) { // 检查字符是否为 '0' 或 '1' if (c != '0' && c != '1') { return false; } } // 如果所有字符都是 '0' 或 '1',则返回 true return true; } // 函数用于将原码转换为反码 std::string originalToComplement(const std::string& originalCode) { std::string complementCode = originalCode; // 遍历除符号位外的每一位 for (size_t i = 1; i < complementCode.length(); ++i) { // 如果当前位是 '0',则将其转换为 '1' if (complementCode[i] == '0') { complementCode[i] = '1'; } // 如果当前位是 '1',则将其转换为 '0' else { complementCode[i] = '0'; } } return complementCode; } int main() { std::string originalCode; // 提示用户输入原码 std::cout << "请输入一个二进制原码: "; std::cin >> originalCode; // 验证输入是否为有效的二进制字符串 if (!isValidBinary(originalCode)) { // 若输入无效,输出错误信息 std::cout << "输入无效,请输入有效的二进制字符串。" << std::endl; return 1; } // 调用函数将原码转换为反码 std::string complementCode = originalToComplement(originalCode); // 输出反码 std::cout << "对应的反码是: " << complementCode << std::endl; return 0; } ``` ### 📝 代码解释 1. **isValidBinary 函数**:该函数用于验证用户输入的字符串是否为有效的二进制字符串。它遍历字符串中的每一个字符,检查是否为 '0' 或 '1',如果有其他字符则返回 `false`,否则返回 `true`。 2. **originalToComplement 函数**:该函数用于将原码转换为反码。它遍历除符号位外的每一位,将 '0' 转换为 '1',将 '1' 转换为 '0'。 3. **main 函数**:首先提示用户输入原码,然后调用 `isValidBinary` 函数验证输入是否有效。如果输入无效,输出错误信息并返回 1;如果输入有效,调用 `originalToComplement` 函数将原码转换为反码,并输出结果。 ######[AI问答 | 790点数解答 | 2026-05-23 20:42:04]
- 揭秘正整数变长编码:Python 实现及代码详解(字节豆包 | 490点数解答 | 2026-01-02 19:51:12)51
- Python 实现正整数变长编码转换(字节豆包 | 465点数解答 | 2026-05-23 19:18:59)2
- 解析React 15与Vue 2:从O(n^3)到O(n),Diff算法时间复杂度计算及性能对比 (阿里通义 | 379点数解答 | 2023-11-09 01:49:19)363
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)284
- 精准优化:明确需求,开启高效提升之旅! (字节豆包 | 52点数解答 | 2026-02-09 16:44:46)77
- 代码再升级:优化版“获取dump”代码,多机制保障数据读取与保存(字节豆包 | 734点数解答 | 2026-02-10 01:23:31)92
- 代码深度优化:全面检查异常、灵活读取内存,提升可读性与可维护性(字节豆包 | 959点数解答 | 2026-02-10 01:24:14)65
- 不用VS!C#工程师必知的命令行编译方法(百度文心 | 19点数解答 | 2023-11-09 17:47:59)265
- C++实现单门课程成绩管理系统:教师学生双身份操作全解析(GPT | 6361点数解答 | 2024-05-24 02:01:02)583
- C++实现:功能完备的单门课程成绩管理系统(GPT | 4293点数解答 | 2024-05-24 10:20:03)400
- C++ 实现:轻松将键盘输入字符串大写字母转小写并输出(讯飞星火 | 191点数解答 | 2024-06-06 20:27:13)230
- C++ 实现:根据人员行为记录计算同学间好感度(字节豆包 | 252点数解答 | 2024-10-17 15:50:40)347