将十进制整数转换成N进制(C语言设计题)送分,快来呀

maxuan 2003-05-31 03:19:39
下面的是一道C语言程序题,里面用括号标示的1,2,3是要填写的。

将十进制整数转换成N进制。
main()
{int i=0,base,n,j,num[20];
printf ("Enter data that will be converted\n");
scanf ("%d",& n");
printf ("Enter base\n");
scanf ("%d", &base);
do
{i++;
num[i]=[1]base;
n=n[2] base;
}while (n!=0);
printf ("The data %d has been converted in to the %d_ _base data :\n", n, base);
for ( [3] )
printf ("%d", num[i] );
}

题目中的[1],[2],[3]是要填写的内容!

这是一MM的C语言毕业设计题,我没学过C,我已经将这个论坛里的相关贴子都搜过了,第一个空,我想应该是取模,填“n%”,第二个填“/”,第三个应该是放到数组中,填“;i>0;i-- ”,但这样有问题,一是数字大了转换十六进制不对,其它的进制也出现问题,二是显示输出的数字“data”总为0,请大家帮我看看,在线等,加分!!
...全文
2100 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dragonlw 2003-05-31
  • 打赏
  • 举报
回复
#include <cstdio>
#include <cstdlib>
#include <string>
using namespace std;

void main(void)
{

long i=0,base,n,j,num[20];
printf ("Enter data that will be converted\n");
scanf ("%d",&n);
printf ("Enter base\n");
scanf ("%d", &base);
do
{ i++;
num[i]=n%base;
n=n/ base;
}while (n!=0);
printf ("The data %d has been converted in to the %d_ _base data :\n", n, base);
for (j=i;j>0;j--)
printf ("%d ", num[j] );
printf("\n");
system("pause");



}
我得看法呢这个东东不好弄,你转换成20进制得数,你如何去定义呢?
16进制得我们这么定义得,10-A,11-B,....15-F
所以在输出得时候,加几个空格如何?
oneonone 2003-05-31
  • 打赏
  • 举报
回复
:)
maxuan 2003-05-31
  • 打赏
  • 举报
回复
今天实在是多谢oneonone(yankey) 了,多谢你热心的帮助!!
oneonone 2003-05-31
  • 打赏
  • 举报
回复
你可以使用long 来申明n
oneonone 2003-05-31
  • 打赏
  • 举报
回复
答案是,INT型的变量最大值为32767
50000已经溢出。
maxuan 2003-05-31
  • 打赏
  • 举报
回复
你调试出来的是这个结果吗?可惜我的就是上面的那种显示,另外,我看了看,在试题中开始定义的J,这个J没有用到呀,它是想来做什么的???
oneonone 2003-05-31
  • 打赏
  • 举报
回复
正确的结果应该是:11 0000 110 101 0000
maxuan 2003-05-31
  • 打赏
  • 举报
回复
非常感谢上面仁兄的指点,我在调试这个程序时,也就是按上面我说的方法填的运行时,当把50000这个数转换为2进制时,出现的结果就是-1-1-1-100-10-1-10000,为何,再次多谢你的回复!!!
oneonone 2003-05-31
  • 打赏
  • 举报
回复
另外如果我填的是50000这个数,显示出来的是-1-1-1-100-10-1-10000.??
这句话我不明白。
oneonone 2003-05-31
  • 打赏
  • 举报
回复
就是这么
do
{i++;
num[i]=[1]base;
n=n[2] base;
}while (n!=0); //你看这里,直到N等于0这个循环才会退出
printf ("The data %d has been converted in to the %d_ _base data :\n", n, base); //在这里你又接着进行了打印,所以我认为无论[2]怎么填,都只会输出0
maxuan 2003-05-31
  • 打赏
  • 举报
回复
不好意思,回得快了点,没看到第二位朋友的回复,而且我无法删除自己的回复!!不好意思!
那就是那位老师出的题有问题啦??
另外如果我填的是50000这个数,显示出来的是-1-1-1-100-10-1-10000.??希望得到您的回复!!
maxuan 2003-05-31
  • 打赏
  • 举报
回复
先谢谢楼上的回复,你的和我写的是一样的,我上面已经说过,这种写法有问题,我在TC2.0中调试,比如我输入500这个十位数,转换为16位应该是1F4,而这里显示的是1154,另外,最后printf ("The data %d has been converted in to the %d_ _base data :\n", 这里前一个%d应该为输入被转换的数字,但是却总为0,是不是前面有一个"n="重新赋值的原因,那里所填的就没这么简单了,希望大家再多帮帮忙!!在线等
oneonone 2003-05-31
  • 打赏
  • 举报
回复
#include <stdlib.h>

中有void _cdecl itoa(int value, char *string, int radix);
这样一个函数,你正常情况下可心用这个函数的,根本不用自己编。

至于这样一道考试题:
显示输出的数字“data”总为0,
这个问题可以再声明一个变量把n的初始值保存下来。
一是数字大了转换十六进制不对:
十六进制大于10的数最好用“ABCDEF”来表示,在你这个程序里面:某位数字10和两位数字1和0无法区分。可能就是这个错误,这是这个程序的问题,不是你填的问题,它不可能转化10进制成以上的数字,如果想转化16进制的数,你就得加很多代码。

do
{i++;

num[i]=[1]base;
switch (num[i])
case 10:
num="a"
break;
case 11:
num="b"
break;
case 12:
.........................
.........................
n=n[2] base;
}while (n!=0);
snipersu 2003-05-31
  • 打赏
  • 举报
回复

void main()
{int i=0,base,n,j,num[20];
printf ("Enter data that will be converted\n");
scanf ("%d",& n);
printf ("Enter base\n");
scanf ("%d", &base);
do
{i++;
num[i]=n%base;
n=n/base;
}while (n!=0);
printf ("The data %d has been converted in to the %d_ _base data :\n", n, base);
for (i;i>0;i-- )
printf ("%d", num[i] );
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧