为了账号安全,请及时绑定邮箱和手机立即绑定

二级C语言改错题,题目:将输入的十进制正整数转换为十六进制数,且用字符串存放该十六进制数

二级C语言改错题,题目:将输入的十进制正整数转换为十六进制数,且用字符串存放该十六进制数

C
包小龙虾 2018-08-08 15:38:18
二级C语言改错题,题目:将输入的十进制正整数转换为十六进制数,且用字符串存放该十六进制数#include <math.h>#include <string.h>#include <stdio.h>题目:将输入的十进制正整数转换为十六进制数,且用字符串存放该十六进制数void main(){int x,b,i,j;char s[5];printf("Input a number(Dec): ");scanf("%d",&x);/**/ i=1; /**/ i=0while(x>0){b=x%16;if(b>9)s[i]=b-10+'A';else/**/ s[i]=b /**/;s[i]=b+’0’x=x/16;i++;}printf("\nHex number is: ");for(j=i-1;j>=0;j--)putchar(/**/ s[i] /**/); s[j]getch();}带/**/的是有错的地方右边是正确答案,可是我不理解为什么是这样,求大神帮忙解析下整个程序
查看完整描述

1 回答

已采纳
?
修裾欲溯空

TA贡献34条经验 获得超4个赞

第一个,数组的第一个元素从零开始;
第二个,如果之前单单复制b,此时b是一个数字,如果转换成字符,就是按那个阿克塞斯码来来转换的,如果转换过去就不是b这个数字内容了,可能是标点啊什么的,为什么是加'0'呢?你想一下,'0'+1='1',以此类推,懂?
第三个,不用说了吧?for循环里是j在变,i在里面是不变的,所以了?。
懂了就采纳一下

查看完整回答
反对 回复 2018-08-09
点击展开后面1
  • 1 回答
  • 0 关注
  • 2088 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信