PAT (Basic Level) Practise:1022. D进制的A+B

时间:2023-03-09 09:52:47
PAT (Basic Level) Practise:1022. D进制的A+B

【题目连接】

输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。

输入格式:

输入在一行中依次给出3个整数A、B和D。

输出格式:

输出A+B的D进制数。

输入样例:

123 456 8

输出样例:

1103

提交代码:

 #include <stdio.h>

 int convert(int a, int b, int c, int *d, int len)
{
int cnt, x;
int calc = a + b; cnt = ;
while(calc)
{
x = calc % c;
if(cnt < len)
{
d[cnt] = x;
}
calc /= c;
cnt++;
}
return cnt;
} void reverse(int *d, int len)
{
int i, tmp; for(i = ; i < len / ; i++)
{
tmp = d[i];
d[i] = d[len-i-];
d[len-i-] = tmp;
}
} int main(void)
{
int a, b, c;
int d[];
int i, len; scanf("%d %d %d", &a, &b, &c); len = convert(a, b, c, d, sizeof(d)/sizeof(d[])); if(len == )
{
printf("");
}
else
{
reverse(d, len); for(i = ; i < len; i++)
{
printf("%c", d[i]+'');
}
}
return ;
}