以下是使用C语言实现十进制转二进制的完整程序代码,包含多种实现方法供参考:
一、除2取余法(逆序输出)
这是最常见的方法,通过不断除以2并记录余数,最后将余数逆序输出。
```c
include
int main() {
int n, len;
int a = {0}; // 存储余数
printf("请输入一个十进制数: ");
scanf("%d", &n);
while (n > 0) {
a[len++] = n % 2; // 记录余数
n = n / 2;// 更新商
}
printf("二进制结果为: ");
for (int i = len - 1; i >= 0; i--) {
printf("%d", a[i]);
}
printf("n");
return 0;
}
```
二、位运算法
利用位运算符(如`&`和`>>`)实现转换,效率较高。
```c
include
int main() {
int n;
printf("请输入一个十进制数: ");
scanf("%d", &n);
printf("二进制结果为: ");
while (n > 0) {
printf("%d", n & 1); // 输出最低位
n = n >> 1;// 右移一位
}
printf("n");
return 0;
}
```
三、字符串拼接法
将余数转换为字符('0'或'1')后拼接成字符串输出。
```c
include include include int main() { int n; printf("请输入一个十进制数: "); scanf("%d", &n); char binary = "0"; // 存储二进制字符串 int index = 0; while (n > 0) { binary[index++] = (n % 2) + '0'; // 将余数转换为字符 n = n / 2; } // 去除前导零 while (index > 0 && binary[index - 1] == '0') { index--; } // 反转字符串 for (int i = 0; i < index / 2; i++) { char temp = binary[i]; binary[i] = binary[index - i - 1]; binary[index - i - 1] = temp; } printf("二进制结果为: %sn", binary); return 0; } ``` 四、函数封装法 将转换逻辑封装成函数,提高代码复用性。 ```c include // 函数声明 void decimalToBinary(int n, char *binary); int main() { int n; printf("请输入一个十进制数: "); scanf("%d", &n); char binary = "0"; // 存储二进制字符串 decimalToBinary(n, binary); printf("二进制结果为: %sn", binary); return 0; } void decimalToBinary(int n, char *binary) { int index = 0; while (n > 0) { binary[index++] = (n % 2) + '0'; n = n / 2; } // 去除前导零 while (index > 0 && binary[index - 1] == '0') { index--; } // 反转字符串 for (int i = 0; i < index / 2; i++) { char temp = binary[i]; binary[i] = binary[index - i - 1]; binary[index - i - 1] = temp; } } ``` 注意事项
数组大小:
上述代码中数组`a`或`binary`的大小固定为20或33,实际使用时应根据输入范围调整,避免溢出。
负数处理:
以上代码仅处理非负整数,若需处理负数,需采用补码表示法。
输入验证:
建议添加输入验证,确保输入为有效整数。
通过以上方法,您可以根据需求选择适合的实现方式。