所以我是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
但是如何让程序在循环期间创建变量?我必须使用完全不同的方法吗?我看了看其他的十进制到十六进制转换器,我不太明白它们是如何工作的。
就像我说我是一个绝对的初学者,如果这个问题很愚蠢,那就很抱歉。
感谢您的回复。那么数组是我问题的答案吗?我现在还不完全理解他们,但是谢谢你们正确的方向。
答案 0 :(得分:7)
说实话,我只是简单地使用sprintf
:
char hex[10];
sprintf(&hex, "%x", INT_MAX);//INT_MAX macro requires limits.h, though...
printf("%s\n", hex);//prints 7fffffff
完成工作......
完整的,您的代码可能类似于:
#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;
}
甚至:
int input;
scanf("%d", &input);
printf("The number %d, turned to hexadecimal is: %x\n", input, input);
答案 1 :(得分:2)
制作一个数组并在其中写下遗骸:
int array[50];
int counter=0;
[...]
while(number!=0)
{
[...]
array[counter]=number%16;
number/=16;
++counter;
}
行array[counter]=number%16;
表示数组中的第一个元素是数字%16 - 第二个元素是(数字/ 16)%16等。
您需要counter
知道数组中有多少元素(剩余多少),以便稍后可以向后写入它们。
(在这里考虑一下你有一个限制 - int array[50];
因为,如果你的号码真的很大并且剩下50个以上,会发生什么?解决方案是动态写这个,但我不知道我认为你现在应该担心这一点。)
答案 2 :(得分:-1)
如果您希望能够获得无限大小的数量,则需要使用动态数组。 首先通过循环获取输入长度,然后根据需要分配数组。 你需要增加循环中的索引并将当前值放在array [index]中。
答案 3 :(得分:-1)
试试这个:
char hex = [], finalHex = [];
while(num != 0) {
num = num/16;
rem = num%16;
switch(rem) {
case 0 :
hex = '0';
break;
case 1 :
hex = '1';
break;
case 2 :
hex = '2';
break;
case 3 :
hex = '3';
break;
case 4 :
hex = '4';
break;
case 5 :
hex = '5';
break;
case 6 :
hex = '6';
break;
case 7 :
hex = '7';
break;
case 8 :
hex = '8';
break;
case 9 :
hex = '9';
break;
case 10 :
hex = 'A';
break;
case 11 :
hex = 'B';
break;
case 12 :
hex = 'C';
break;
case 13 :
hex = 'D';
break;
case 14 :
hex = 'E';
break;
case 15 :
hex = 'F';
break;
}
strcat(hex, finalHex);
finalHex = hex;
}
printf("%s", finalHex);
答案 4 :(得分:-1)
Add-ADGroupMember ... 2>> 'C:\error.log'