优化下面代码#include <stdio.h> #include <string.h> #include <math.h> int main(){ char binary[32]=""; fgets(binary, 32, stdin); binary[strlen(binary)-1] = 0; // 110 len=2 int len=strlen(binary); int n=0; 优化代码: 使用左移 int i=0; while(binary[i]){ n += (binary[i]-48)<<(len-1); i++; len--; } printf("%s 十进制: %d\n", binary, n); return 0; }
时间: 2024-04-10 12:27:46 浏览: 135
C语言程序设计常见上机实验题目汇总.docx
下面是对你提供的代码进行优化的改进版本:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int main() {
char binary[32] = "";
fgets(binary, sizeof(binary), stdin);
binary[strcspn(binary, "\n")] = '\0';
int len = strlen(binary);
int n = 0;
for (int i = 0; i < len; i++) {
n += (binary[i] - '0') << (len - i - 1);
}
printf("%s 十进制: %d\n", binary, n);
return 0;
}
```
对比你之前的代码,主要做了以下优化:
1. 使用`strcspn`函数替代`strlen`函数来获取输入字符串的长度。这样可以避免多次调用`strlen`函数,提高效率。
2. 使用`'\0'`替代`0`来表示字符串结束符。
3. 使用`for`循环替代`while`循环,并使用直接的索引方式访问字符数组,避免使用额外的变量。
4. 在计算二进制转换为十进制时,使用`(binary[i] - '0')`来代替`(binary[i] - 48)`,使代码更加清晰易懂。
这些改进可以提高代码的可读性和性能。
阅读全文