算法设计:将非负十进制整数转化为二进制整数,用C语言实现
时间: 2024-09-29 22:03:02 浏览: 59
在C语言中,你可以通过循环和除2取余的方式,利用数组来存储每一位的二进制值并将结果转换为字符串形式,从而实现将非负十进制整数转换为二进制整数。下面是一个简单的函数实现:
```c
#include <stdio.h>
#include <string.h>
// Function to convert decimal to binary
void decToBinary(int num, char* binary) {
int i;
if (num == 0) {
binary[0] = '0';
binary[1] = '\0'; // Add null terminator
} else {
for (i = 0; num > 0; ++i) {
binary[i] = (num % 2) + '0'; // Convert remainder to ASCII and store in string
num /= 2; // Shift the number to next digit
}
binary[i] = '\0'; // Add null terminator
}
// Reverse the binary string as C strings are printed from right to left
reverse(binary);
}
// Helper function to reverse a string in-place
void reverse(char* str) {
int start = 0, end = strlen(str) - 1;
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
int main() {
int decimalNum;
printf("Enter a non-negative decimal integer: ");
scanf("%d", &decimalNum);
char binary[32]; // Assuming maximum 31-digit binary number
decToBinary(decimalNum, binary);
printf("Binary representation of %d is: %s\n", decimalNum, binary);
return 0;
}
```
在这个示例中,`decToBinary` 函数接受一个十进制数 `num` 和一个字符数组 `binary`,然后通过不断地除以2并记录余数,生成二进制表示。`reverse` 函数用于反转存储的结果字符串。
阅读全文