编写一个函数change(x,r),将十进制整数x转换成r(1<r<10)进制数后输出.
答案:3 悬赏:40 手机版
解决时间 2021-12-17 12:16
- 提问者网友:丧钟为谁而鸣
- 2021-12-17 05:55
C语言的,谢谢。
最佳答案
- 五星知识达人网友:长不大的小祖宗
- 2021-12-17 06:41
转成r(1 < r < 10)进制的话直接用内置整数类型表示就够了:
#include
int change(int n, int r)
{
int iresult = 0;
for(int i = 1; n > 0; n /= r, i *= 10)
{
iresult += n % r * i;
}
return iresult;
}
int main()
{
for(int i = 2; i < 10; ++i)
printf("%d 的 %2d 进制: %d\n", 16, i, change(16, i));
}
#include
int change(int n, int r)
{
int iresult = 0;
for(int i = 1; n > 0; n /= r, i *= 10)
{
iresult += n % r * i;
}
return iresult;
}
int main()
{
for(int i = 2; i < 10; ++i)
printf("%d 的 %2d 进制: %d\n", 16, i, change(16, i));
}
全部回答
- 1楼网友:爷是黑户
- 2021-12-17 08:19
这个函数标准库里有,不需要写。你搜下 itoa()函数;
- 2楼网友:我与学霸最萌分数差
- 2021-12-17 06:51
#include <stdio.h>
char *change(int n,int k, char s[]) {
int i = 0,len,t,num = 0;
if(k < 2 || k > 36) return NULL;
while(n) {
t = n % k;
if(t > 9) s[i] = t - 10 + 'A';
else s[i] = t + '0';
n /= k;
++i;
}
s[i] = '\0';
len = i;
for(i = 0; i < len/2; ++i) {
t = s[i];
s[i] = s[len - 1 - i];
s[len - 1 - i] = t;
}
return s;
}
int main() {
int k,num;
char s[33];
printf("num newbase:");
while(scanf("%d%d",&num,&k) == 2) {
if(change(num,k,s)) printf("%s\n",s);
else printf("不能转换到 %d 进制。\n",k);
printf("num newbase(q to quit):");
}
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |