c++如何巧妙变为c,青高收捷达

img

#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;
}