gpt4 book ai didi

c - 十六进制数转换

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:08 24 4
gpt4 key购买 nike

我试图编写一个递归函数来获取十进制数并以十六进制打印该值但我不知道我的代码中有什么问题请帮助我,我在 Recursion 中仍然是新手并且不会完全理解它......

    my code:

void PrintHexadecimalNumber(int n)
{
if (n%16==0)
return ;

PrintHexadecimalNumber(n/16);

switch ((n % 16))// A-F cases
{
case (10):
printf("A");
break;
case (11):
printf("B");
break;
case (12):
printf("C");
break;
case (13):
printf("D");
break;
case (14):
printf("E");
break;
case (15):
printf("F");
break;
}

if ((n%16)<10)
printf(n%16);

}

最佳答案

由于您为停止递归而编写的测试,您的代码将无法运行。

if (n%16==0)

如果您有数字(十六进制)10,该函数将立即停止,因为 n % 16 将为 0。您真正想要测试的是 n 何时为 0。像这样

if (n==0)

您的 switch 语句也应该扩展为包含 0 到 9 的值,而不是在它后面有一个单独的 if 语句。您可以通过省略 break

将它们组合在一起
switch(n % 16)
{
/* existing case statements go here */
case 0:
case 1:
case 2:
...
case 9:
printf("%d",n % 16); // also fixing this as per comments above.
break;
}

或者你可以只使用 printf("%x",n % 16) 并完全取消 switch 如果你想做的是探索递归是如何工作的。

关于c - 十六进制数转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44199313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com