键盘输入一个整数,计算该数的二进制、八进制、十六进制状态,使用数组实现。不得使用%%,% x
时间: 2025-02-03 20:14:48 浏览: 20
好的,我理解您的要求。我会使用C语言来实现这个功能,不使用%,%x等格式化输出,而是通过数组来存储和显示结果。以下是实现代码:
#include <stdio.h>
#include <stdlib.h>
void convert(int num, int base, char* result) {
int i = 0;
int isNegative = 0;
if (num == 0) {
result[i++] = '0';
result[i] = '\0';
return;
}
if (num < 0) {
isNegative = 1;
num = -num;
}
while (num != 0) {
int rem = num % base;
result[i++] = (rem > 9) ? (rem - 10 + 'A') : (rem + '0');
num /= base;
}
if (isNegative) {
result[i++] = '-';
}
result[i] = '\0';
// 反转字符串
int start = 0;
int end = i - 1;
while (start < end) {
char temp = result[start];
result[start] = result[end];
result[end] = temp;
start++;
end--;
}
}
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
char binary[65], octal[65], hexadecimal[65];
convert(num, 2, binary);
convert(num, 8, octal);
convert(num, 16, hexadecimal);
printf("二进制: %s\n", binary);
printf("八进制: %s\n", octal);
printf("十六进制: %s\n", hexadecimal);
return 0;
}
这个程序的工作原理如下:
我们定义了一个
convert
函数,它接受一个整数、一个基数(2, 8, 16)和结果存储数组作为参数。在
convert
函数中,我们首先处理0和负数的情况。然后,我们使用除基取余的方法来转换数字。我们将余数转换为字符并存储在结果数组中。
转换完成后,我们反转字符串,因为我们是从最低位开始计算的。
在
main
函数中,我们从用户那里读取输入,然后调用convert
函数三次,分别得到二进制、八进制和十六进制的结果。最后,我们打印出结果。
这个程序不使用%,%x等格式化输出,而是手动进行转换和输出。它使用数组来存储每个结果,然后打印出来。
相关推荐



















