c++:进制转换 十六进制转换为十进制

编程题16:进制转换成绩:100/折扣:0.9编写程序,以字符形式输入一个四位十六进制数(不考虑符号位,即不输入负数),将其变换为一个十进制整数后输出。转换的过程用函数实... 编程题16:进制转换
成绩: 100 / 折扣: 0.9

编写程序,以字符形式输入一个四位十六进制数(不考虑符号位,即不输入负数),将其变换为一个十进制整数后输出。转换的过程用函数实现,函数原型: int change(char *s); 即传入十六进制数串,得到对应地十进制数值返回。

提示:

1. 以字符串方式存储一个四位十六进制数,其中的每一个字符都必须是十六进制数中合法的字符(0~9,a~f或A~F),所以主函数中应当定义一个字符数组长度为5.

2. 字符转为整数的方法:数字字符-48得到对应的数字值,例如:’6’-48得到整数6;字母字符转为对应位数值的方法,大写字母直接减55,小写字母直接减87,例如:’B’-55得到整数11,’b’-87得到整数11。

3. 对读入的字符串要判断,如果出现非十六进制的符号,则不调用转换函数求解, 直接用语句: cout << "Original data error\n"; 给出提示结束程序;否则调用求解,复制输出语句:cout << "The dec data is:"<<…<<endl; (省略号处请以你的转换函数调用来代替)

4. 十六进制度转换为十进制的方法:每一位上的值乘以位权最后相加,例如:2BE的等效十进制数为:2*16*16+11*16+14=702. 十六进制的A~F对应的值为10~15
5.程序中若需要用到其他函数,自行定义并调用

编译正确为何程序无法运行,我觉得思路应该没问题吧,求大神指导
展开
 我来答
243593744
2013-11-23 · 超过12用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:22.4万
展开全部

j被改变了,死循环

追问
请问如何解决,初学C++,用很多不懂,谢谢
追答
for循环内结束循环条件是j>=4;但是for循环内的while循环又把j改变到0了,再执行for循环就又从0开始了,解决方法就是把while循环内不要用j,可以再定义一个临时变量替换j。
休闲小蜗牛
2013-11-23 · TA获得超过376个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:74.2万
展开全部
有可能程序正确运行了,只是闪了一下就没了,速度太快看不到而已;
在main()函数最后加一句话getchar();让程序停下来,避免程序"闪"一下就结束了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式