#include<bits/stdc++.h>
using namespace std;
string intToA(int n,int radix)
{
string ans="";
do{
int t=n%radix;
if(t>=0&&t<=9) ans+=t+'0';
else ans+=t-10+'A';
n/=radix;
}while(n!=0);
reverse(ans.begin(),ans.end());
return ans;
}
int main(){
int n=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
int num,k;
scanf("%d %d",&num,&k);
if(num>=0)cout<<num<<" "<<intToA(num,k)<<endl;
else cout<<num<<" -"<<intToA(num*-1,k)<<endl;
}
}
供参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* intToA(int n, int radix)
{
int i = 0, j = 0;
char* ans = (char*)malloc(sizeof(char) * 64), t;
memset(ans, 0, sizeof(char) * 64);
do {
int t = n % radix;
if (t >= 0 && t <= 9)
ans[i++] += t + '0';
else
ans[i++] += t - 10 + 'A';
n /= radix;
} while (n != 0);
ans[i] = '\0';
for (j = 0; j < i / 2; j++) {
t = ans[j]; ans[j] = ans[i - 1 - j]; ans[i - 1 - j] = t;
}
return ans;
}
int main() {
int n = 0;
char* s = NULL;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int num, k;
scanf("%d %d", &num, &k);
if (num >= 0) {
s = intToA(num, k);
printf("%d %s\n", num, s);
}
else {
s = intToA(num * -1, k);
printf("%d -%s\n", num, s);
}
free(s);
}
return 0;
}
#include <stdio.h>
char res[1000] = {0};
int len = 0;
void intToA(int n,int radix)
{
if(n/radix == 0)
{
if(n<=9)
res[len++] = n + '0';
else
res[len++] = n - 10 + 'A';
res[len] = 0;
return;
}
intToA(n/radix,radix);
if(n%radix<=9)
res[len++] = n%radix + '0';
else
res[len++] = n%radix - 10 + 'A';
}
int main()
{
int n=0,num,k;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d %d",&num,&k);
len = 0;
if(num>=0)
{
intToA(num,k);
printf("%d %s\n",num,res);
}
else
{
intToA(num*-1,k);
printf("%d -%s\n",num,res);
}
}
return 0;
}