c语言从键盘输入一个非负整数并转换成二进制
时间: 2024-11-05 15:28:15 浏览: 31
在C语言中,你可以使用标准库函数`scanf`从键盘读取用户输入的非负整数,并通过位运算将其转换为二进制表示。以下是一个简单的示例程序:
```c
#include <stdio.h>
// 函数来将十进制转为二进制字符串
void decimalToBinary(int num, char binary[]) {
int i = 0;
while (num > 0) {
binary[i] = num % 2 + '0'; // 用余数加 '0' 转换为字符
num /= 2; // 右移一位
i++;
}
binary[i] = '\0'; // 添加字符串结束符
// 输出反转结果,因为数组是从右向左存储的
for (int j = i - 1; j >= 0; j--) {
printf("%c", binary[j]);
}
}
int main() {
int decimal;
char binary[32]; // 为了容纳最多31位的二进制数(包括前导零)
printf("请输入一个非负整数: ");
scanf("%d", &decimal);
if (decimal >= 0) { // 检查是否是非负整数
decimalToBinary(decimal, binary);
printf("\n该数字的二进制形式是: %s\n", binary);
} else {
printf("输入错误! 请输入一个非负整数。\n");
}
return 0;
}
```
在这个程序里,我们首先获取用户的输入,然后检查它是否是非负数。如果是,我们就调用`decimalToBinary`函数将这个数转换为二进制字符串。请注意,对于大整数,你可能需要动态分配内存以避免溢出。
阅读全文