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

二级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=0

while(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();

}带/**/的是有错的地方右边是正确答案,可是我不理解为什么是这样,求大神帮忙解析下整个程序


包小龙虾
浏览 2194回答 1
1回答

修裾欲溯空

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