写出一段将一个长度最多为 30 位数字的十进制非负整数转换为二进制数输出的c语言代
时间: 2024-01-18 19:43:31 浏览: 119
码:
`
#include <stdio.h>
int main() {
char decimal[31];
scanf("%s", decimal); // 输入十进制数
int binary[120] = {0}; // 二进制数最多占 120 位,初始化为 0
int len = 0; // 记录二进制数的位数
int i = 0;
while (decimal[i] != '\0') {
int bit = decimal[i] - '0'; // 将字符转换为数字
for (int j = len; j >= 0; j--) {
binary[j + 1] += binary[j] / 2; // 进位
binary[j] = (binary[j] % 2) * 10 + bit; // 计算当前位的值
}
len++; // 位数加 1
i++; // 处理下一位
}
if (binary[len] == 0) len--; // 去掉前导零
for (int j = len; j >= 0; j--) {
printf("%d", binary[j]); // 从高位到低位输出二进制数
}
printf("\n");
return 0;
}
```
该程序使用字符数组存储输入的十进制数,使用 int 数组存储转换后的二进制数。处理每一位时,先将字符转换为数字,然后从低位到高位依次计算出二进制数的每一位。在计算过程中,需要进行进位操作。最后,从高位到低位输出二进制数,并去掉前导零。
阅读全文