C语言:编程实现将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符形式输出。

编程实现将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符形式输出。例如:输入十进制数79,将输出十六进制数4f。改下列代码,谢谢咯。#includ... 编程实现将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符形式输出。例如:输入十进制数79,将输出十六进制数4f。改下列代码,谢谢咯。
#include<stdio.h>
#include<string.h>
char trans(int x)
{ if(x<10)
return '0'+x;
else
return 'a'+x;
}
int DtoH(int n,char *str)
{ int i=0;
while(n!=0)
{ str[i]=trans(n%16);
n%=16;
i++;}
return i-1;
}
void main(void)
{ int i,k,n;
char *str;
scanf("%d",&n);
k=DtoH(n,str);
for(i=0;i<=k;i++)
printf("%d",str[k-i]);
}
展开
 我来答
niluanxy
2012-05-13 · 超过26用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:78万
展开全部
问题不少,首先,10进制不能直接转化为16进制,应该先转为2进制然后再转16进制,其次,char *str 用法错误,只分配了一个字符指针,你却当字符数组使用了,把这两处改了去。
追问
10进制能直接转16,谢谢!!
追答
那见识浅薄了,一直以为不能直接转换的。
少年游h
推荐于2016-11-01 · TA获得超过1503个赞
知道小有建树答主
回答量:509
采纳率:0%
帮助的人:441万
展开全部
#include<stdio.h>

void DtoH(int x)
{
char digitstr[]="0123456789ABCDEF";
int conv[32],subs,i=0;
do{
conv[i]=x%16;
x /= 16;
i++;
}while(x!=0);
for(--i;i>=0;--i)
{
subs=conv[i];
printf("%c",digitstr[subs]);
}
}

void main()
{
int n;
while(scanf("%d",&n))
{
DtoH(n);
printf("\n");
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
半杯茶12
2012-05-13
知道答主
回答量:69
采纳率:0%
帮助的人:36.8万
展开全部
C语言是不是,是不是一种编辑网络程序语言,这样的代码,你可以向北大青鸟的老师和学员问问,
广州北大青鸟是一个很专业的IT培训机构,我也有这样的想法去北大青鸟学校,我现在在广州,我想去北大青鸟广州俊星越秀校区!
追问
你个打广告的,走远点!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式