题目描述
实现十进制转num换成R进制数,num和R从键盘读入(假定num为int且-32767 < =num<=32767, R为int且2<=R<=16)。编程可用素材: printf("Input the num, R: ")…、 printf(“Output:\n”)…。
输入
4095 2
输出
111111111111
代码
#include <stdio.h>
#include <string.h>
void fun(char str[40], int num, int rad);
int main()
{
int num, rad;
char str[40];
printf("Input the num, R: ");
scanf("%d%d", &num, &rad);
fun(str, num, rad);
printf("Output:\n");
printf("%s\n", str);
return 0;
}
void fun(char str[40], int num, int rad)
{
int i = 0, j;
int flag = 0;
char str2[40];
char number[17] = "0123456789ABCDEF";
if (num == 0){
strcpy(str, "0");
return ;
}
if (num < 0){
flag = 1;
num = -num;
}
while (num > 0){
str2[i] = number[num % rad];
i++;
num = num / rad;
}
str2[i] = '\0';
j = strlen(str2) - 1;
if (flag == 0){
i = 0;
}else{
str[0] = '-';
i = 1;
}
for (; j >= 0; i++, j--)
{
str[i] = str2[j];
}
str[i] = '\0';
}
要多看看,还是有些不太理解的地方,巧妙的算法