Code Bye

大一c++,求指导释步骤

下面的函数itoh(n,s)完成将无符号十进制整数转换成十六进制表示,并存入字符串组S中。程序中用到的函数reverse(char s[ ])是一个将字符串置逆的函数
itoh(unsighed n,char s[])
{int h,i=0;
do{h=%16;
s[i++]=(h<=9)?h+”0″:”a”+h-10;
}while((n/=16)!0);
s[i]=”\0″;
reverse(s);
}每一步怎么解释,本人实在看不懂,越详细越好
解决方案

40

以n=30为例,也就是0x1E
do{
h=n%16;  // 最后一位,也就是n除以16的余数。第一次循环是0xE,第二次是0x1。
s[i++]=(h<=9)?h+”0″:”a”+h-10;// 对于数字(h<=9),加上”0″;其他(a~f),减去10加上”a”。第一次循环是”e”,第二次是‘1’。
}while((n/=16)!=0); // 每次循环把n除以16,直到n变成0结束
s[i]=”\0″; // 字符串结束符。循环结束后s的内容是”e1″
reverse(s); // 反序,得到结果”1e”
转十进制的字符串也可以用相似的算法,稍做修改即可
do{h=n%10;
s[i++]=h+”0″;
}while((n/=10)!=0);

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明大一c++,求指导释步骤