永发信息网

C语言。将输入的十进制数转为b进制数。

答案:5  悬赏:70  手机版
解决时间 2021-03-09 20:59
  • 提问者网友:情歌越听越心酸
  • 2021-03-09 07:19
转换方法:除b取余法。

#include"stdio.h"
tran(int m,int k)
{
int a[20],i;
for(i=0;m;i++)
{
a[i]=—————;
m/=k;

}
for(;i>=0;i--)
printf("%d",a[i]);
}
main()
{
int b,n;
scanf("%d%d",&b,&n);
printf("\n%d",tran(b,n));
}
各位大哥,小弟我提问时是出了点问题,在 main函数里有点问题的,各位都行,我不知道取哪个答案了啊,晕
最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-03-09 07:31
你这个程序有些错误 我修改了一下
tran(int m,int k) 此函数无返回类型
printf("\n%d",tran(b,n)); 这里不需要输出了 因为函数里面有输出

我也同样Zss2003的观点
正确程序如下
#include"stdio.h"
void tran(int m,int k)
{
int a[20],i;
for(i=0;m;i++)
{
a[i]=m%k;
m/=k;

}
for(i--;i>=0;i--)
printf("%d",a[i]);
}
void main()
{
int b,n;
scanf("%d%d",&b,&n);
tran(b,n);
}
另外如果是转换成大于10的十进制数 此程序就不行
例如把11转换成16进制数的话应该是B
但这个程序根本不能实现
全部回答
  • 1楼网友:洒脱疯子
  • 2021-03-09 12:41
填空是m%k for(;i>=0;i--)这行语句要改下,改成 for(i--;i>=0;i--) 因为上面for循环多加了1,这里打印不减的话会多打出一个垃圾数。
  • 2楼网友:三千妖杀
  • 2021-03-09 11:02
这个应该是求n进制吧。。。 我帮你做了一下,代码如下 #include"stdio.h" tran(int m,int k) { int a[20],i; for(i=0;m;i++) { a[i]=m%k; m/=k; } for(;i>=0;i--) printf("%d",a[i]); } main() { int b,n; scanf("%d,%d",&b,&n); printf("\n%d",tran(b,n)); } 修改的地方有 a[i]=—————; 改成 a[i]=m%k; scanf("%d%d",&b,&n); 改成 scanf("%d,%d",&b,&n);%d%d中间加了个","方便输入
  • 3楼网友:冷風如刀
  • 2021-03-09 10:35
你的程序是转换成n进制数.不是b进制. 如果是b制: for(i=0;k;i++) { a[i]=k%m; k/=m; 否则就是转换成n进制数: for(i=0;m;i++) { a[i]=m%k; m/=k;此时,你在主函数里面输入的b为待转换的10进制数,而n为进制数.
  • 4楼网友:北城痞子
  • 2021-03-09 08:58
你好! 你的程序是转换成n进制数.不是b进制. 如果是b制: for(i=0;k;i++) { a[i]=k%m; k/=m; 否则就是转换成n进制数: for(i=0;m;i++) { a[i]=m%k; m/=k;此时,你在主函数里面输入的b为待转换的10进制数,而n为进制数. 打字不易,采纳哦!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯