所以我是C的绝对初学者,我必须使十进制到十六进制转换器.
所以我想我需要创建一个循环,循环直到结果为0.
但是如何让它记住所有遗留物?这个数字将用scanf输入,所以我不能为它定制代码.
现在我想做这样的事情
while(number(n)!=0)
{
number0 / 16 = number1
number0 % 16 = remainder0
number1 / 16 = number2
number1 % 16 = remainder1
.....
number(n-1) / 16 = 0
number(n-1) % 16 = lastremainder
}
hex = lastremainder, ..., remainder2, remainder1, remainder0
Run Code Online (Sandbox Code Playgroud)
但是如何让程序在循环期间创建变量?我必须使用完全不同的方法吗?我看了看其他的十进制到十六进制转换器,我不太明白它们是如何工作的.
就像我说我是一个绝对的初学者,如果问题是愚蠢的,那就很抱歉.
感谢您的答复.那么数组是我问题的答案吗?我现在还没有完全理解它们,但是要感谢你们正确的方向.
sprintf说实话,我只是用它:
char hex[10];
sprintf(&hex, "%x", INT_MAX);//INT_MAX macro requires limits.h, though...
printf("%s\n", hex);//prints 7fffffff
Run Code Online (Sandbox Code Playgroud)
完成工作......
完整的,您的代码可能看起来像:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char hex[10];
int input;
scanf("%d", &input);
sprintf(&hex, "%x", input);
printf("The number %d, turned to hexadecimal is: %s\n", input, hex);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
甚至:
int input;
scanf("%d", &input);
printf("The number %d, turned to hexadecimal is: %x\n", input, input);
Run Code Online (Sandbox Code Playgroud)
创建一个数组并将剩余内容写入其中:
int array[50];
int counter=0;
[...]
while(number!=0)
{
[...]
array[counter]=number%16;
number/=16;
++counter;
}
Run Code Online (Sandbox Code Playgroud)
该行array[counter]=number%16;意味着数组中的第一个元素将为 number%16 - 第二个元素将为 (number/16)%16 等。
您需要counter知道数组中有多少个元素(还剩下多少),以便稍后可以向后写入它们。
(这里考虑到你有一个限制 -int array[50];因为,如果你的数量非常大并且你有超过 50 个遗骸,会发生什么?解决方案是动态地编写这个,但我认为你不应该担心这一点这点。)