优化这段代码,让逻辑更清晰
时间: 2024-12-01 21:29:49 浏览: 17
为了优化这段代码使其逻辑更清晰,我们可以采用以下几种改进措施:
1. **函数分解**:将输入验证、符号处理、数值翻转和结果输出分别封装到独立的函数中,以便每个任务都有明确的目的,如 `validate_input()`, `handle_sign()`, `flip_bits()`, 和 `output_result()`。
```c
void validate_input(char* binary_str) {
int length = strlen(binary_str);
if (length != 8) {
printf("输入错误!请重新输入!");
return;
}
if (!is_valid_binary(binary_str)) {
printf("非法输入!");
return;
}
}
bool is_valid_binary(const char* str) {
for (int i = 0; i < 8; ++i) {
if (str[i] != '0' && str[i] != '1') {
return false;
}
}
return true;
}
void handle_sign(char* binary_str) {
if (strcmp(binary_str, "-10000000") == 0) {
*binary_str = '1'; // 将 '-1' 变为 '1'
} else {
// ... 按照正负号处理
}
}
void flip_bits_if_negative(char* binary_str) {
int first_one_index = find_first_one(binary_str);
for (int i = 0; i < first_one_index; ++i) {
flip_char(binary_str, i);
}
}
void flip_char(char* binary_str, int index) {
if (binary_str[index] == '0') {
binary_str[index] = '1';
} else {
binary_str[index] = '0';
}
}
void output_result(const char* binary_str) {
printf("%s\n", binary_str);
}
// 主函数
void convert_to_buma(char* input) {
validate_input(input);
handle_sign(input);
flip_bits_if_negative(input);
output_result(input);
}
```
2. **增加注释**:对关键逻辑部分添加注释,解释每一步的作用,使读者更容易理解。
3. **命名规范**:使用更具描述性的函数名和变量名,比如 `is_all_digits_zero()` 替代 `if(flag)`。
通过这些优化,代码的结构变得更清晰,逻辑也更易于理解和维护。同时,模块化的设计使得未来如果有变动或扩展需求,也能更好地应对。
阅读全文