问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言出错数制转换输出格式不对

发布网友 发布时间:2022-07-25 17:19

我来回答

2个回答

热心网友 时间:2023-10-14 07:09

#include<stdio.h>

#define MAXCHAR 101

int char_to_num(char ch);

char num_to_char(int num);

long source_to_decimal(char temp[],int source);

int decimal_to_object(char temp[],long decimal_num,int object);

void output(char temp[],int length);

int main()

{

int source;

int object;

int length;

long decimal_num;

char temp[MAXCHAR];

int flag=1;

while(flag){

printf("转换前的数是:");

scanf("%s",temp);

printf("转换前的数制是:");

scanf("%d",&source);

printf("转换后的数制是:");

scanf("%d",&object);

printf("转换后的数是:");

decimal_num=source_to_decimal(temp,source);

length=decimal_to_object(temp,decimal_num,object);

output(temp,length);

printf("请继续输入1,否则输入0:\n");

scanf("%d",&flag);

}

return 0;

}

int char_to_num(char ch)

{

if(ch>='0' && ch<='9')

return ch-'0';

else

return ch-'A'+10;

}

char num_to_char(int num)

{

if(num>=0 && num<=9)

return (char)('0'+num-0);

else

return (char)('A'+num-10);

}

long source_to_decimal(char temp[],int source)

{

long decimal_num=0;

int i;

for(i=0;temp[i];i++)

decimal_num=(decimal_num*source)+char_to_num(temp[i]);

return decimal_num;

}

int decimal_to_object(char temp[],long decimal_num,int object)

{

int i=0;

while(decimal_num)

{

temp[i]=num_to_char(decimal_num%object);

decimal_num=decimal_num/object;

i++;

}

temp[i]='0';

return i;

}

void output(char temp[],int length)

{

int i;

for(i=length-1;i>=0;i--)

printf("%c",temp[i]);

printf("\n");

}

追问直到今天才看到了

热心网友 时间:2023-10-14 07:10

说说你的问题不知道是不是你复制少了错误问题:1你的Change函数缺少括号最后添加一个大括号2main里面调用Change缺少参数改为Change(a,s);3Change函数中q为存储字符的值改为*(q+i)4Judge中判断问题只判断了一个然后是规范的问题:1Judge函数中的p[i]最好用指针改为*(p+i)2判断条件p[i]='0'||p[i]='a'||p[i]='A'添加括号改为(p[i]='0')||(p[i]='a')||(p[i]='A')然后是可以优化的问题:1乘法很消耗资源对于一个数乘以2^n可以替换为左移n位前提是不会溢出2可以把Judge放到Change里面你其实Change里面判断时候就隐含了字符的判断下面是我写的,运行测试无问题:#include"stdio.h"int hex2Dec(char *c,int len){int n=0,i,sum=0;for(i=0;i='0'&&*(c+i)='a'&&*(c+i)='A'&&*(c+i)<='F'){n=*(c+i)-'A'+10;}else{printf("input illegal!");exit(-1);}sum=sum<<4;sum=sum+n;}return sum;}int main(){char c[5];scanf("%s",c);printf("the hex:%s conver to dec is %d\n",c,hex2Dec(c,4));return 1;}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
墨兰烂根是怎么回事 墨兰烂根后如何养护 谢绝推销参观拍照摄影看房预约 看房子为什么不让拍照 执业药师各科考试时间分配 执业药师考试倒计时100天,怎样备考最有效 中药执业药师怎么备考? 手机拒绝所有来电了怎么设置回来 美国狼人在伦敦演职员表 美国狼人在伦敦幕后制作 美国狼人在伦敦制作发行 请问大佬有不愉快的果实2016年由 栗山千明主演的高清视频在线观看资源吗 求 昨日的果实 百度云免费在线观看资源 《昨日的果实》免费在线观看完整版高清,求百度网盘资源 爱的果实 老人经常头晕呕吐是什么原因造成的 服装店销售员如何站位排序 服装店带有大字可以吗 联想250g移动硬盘接好后有嘟嘟的声音,但电脑不显示盘符 服装商标吊牌印刷有哪些工序? 只有35类商标,可以做服装品牌及其吊牌吗 印刷吊牌都有哪些步骤 苹果手机接时的提示音是什么,如何下载? 雅思写作出题有规律吗 丹丁力诗属于什么档次? 改签票可以刷身份证吗 手机屏幕开了可以用胶吗? 如何在excel中对年月日时间的自定义单元格中截取时间,按时间排序 1256789猜一个成语,是什么? 1256789打一成语 大家一起来学习吧 当你在工作中发生不良事件你应如何处理? 晟洛曼瓷砖厂址- 问一问 国家有哪些具体行动,在实施扩张性的财政*和货币*的时候 外地移动号码可以转回本地吗,不想换号? 天水市麦积区圆通快递在哪 具体位置+电话号码 圆通快递 甘肃天水有没??我是麦积的 扁桃体炎吃什么药,有治疗效果好的口喷推荐吗? 如何变更用于购买工商银行理财产品的银行卡 内存条能混搭吗 求绿色征途 情侣名字。 要好看有内涵的,急需~~ 谢谢啦。另外去绿色征途风雨三区的朋友IS3456 找半烟, 怎么用姜片艾灸肚脐 厕所铺地暖好?还是装小背篓好呢 厕所小背篓开关方向 卫生间的小背篓有必要安装吗? 阿尔伯特威斯克的角色简介 威斯克要在生化危机4中登场了? 生化危机5电影为什么红皇后说威斯克是叛徒呢? 生化危机 到底讲述的是怎样的一个故事? 好听的圣骑士名字大全 透亮清澈的最红的圣骑士名字 贵州天恩母婴健康护理服务有限责任公司怎么样? 金茂观山湖属于什么档次