快捷导航

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

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

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员1

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

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP