C语言:输入一个整数,进行2、8、10、16进制的转换。转换计算写在函数里。

代码写出来了,但是有问题,请大家帮我看看撒~#include<stdio.h>#include<stdlib.h>doublebinary(double);//二进制do... 代码写出来了,但是有问题,请大家帮我看看撒~

#include<stdio.h>
#include<stdlib.h>

double binary(double);//二进制
double octal(double);//八进制
double hex(double);//十六进制

void main()
{
int num,temp;
printf("\n请输一个十进制整数入数:");
scanf("%d",&num);
fflush(stdin);
printf("\n请选择要转换的类型:\n");
printf(" 1、十进制——二进制\n");
printf(" 2、十进制——八进制\n");
printf(" 3、十进制——十六进制\n");
printf(" 4、退出\n\n");
printf(" 请输入你的选择:");
scanf("%d",&temp);

switch(temp)
{
case 1:
binary(num);
break;
case 2:
octal(num);
break;
case 3:
hex(num);
break;
case 4:
exit(0);
default:
printf("\n输入错误,重新选择1-4\n");

}
main();
}

double binary(double i)//二进制
{
int a,num,p[10],arr[10],count=0;

while(num>0)
{
p[count]=num%2;
num=num/2;
count++;
}
printf("\n转化为2进制:");
for(a=count-1;a>=0;a--)
printf("%d ",arr[p[a]]);
printf("\n\n");
return i;
}

double octal(double i)//八进制
{
int a,num,p[100],arr[100],count=0;
while(num>8)
{
p[count]=num%8;
num=num/8;
count++;
}
printf("\n转化为8进制:");
for(a=count-1;a>=0;a--)
printf("%d",arr[p[a]]);
printf("\n\n");
return i;
}

double hex(double i)//十六进制
{
int a,num,p[100],arr[100],count=0;
while(num>16)
{
p[count]=num%16;
num=num/16;
count++;
}
printf("\n转化为16进制:");
for(a=count-1;a>=0;a--)
printf("%d",arr[p[a]]);
printf("\n\n");
return i;
}
谢谢楼下的朋友,已经研究好了,代码改好了,可以运行了。
展开
 我来答
feiyingbuaa
2008-04-01 · TA获得超过568个赞
知道小有建树答主
回答量:669
采纳率:0%
帮助的人:314万
展开全部
每个函数都有一个问题:参数是i,但是被处理的却是num。
不会报错的,你传过去一个数,然后做一些无关的操作,再把那个数返回,怎么可能有错?
我是说,你要处理的数是i,但是真正处理的是num,而且num也没有赋初值,是默认值。
我没看你的实现方法,但是我想说,就好比现在你让我蒸一锅馒头给你,你给了我面粉,然后我自己做了一锅米饭,再把面粉给你……
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式