gpt4 book ai didi

c - 十六进制的问题

转载 作者:太空狗 更新时间:2023-10-29 17:12:31 24 4
gpt4 key购买 nike

我有一些作业,但我堆在里面。也许你可以帮助我。下面的任务。

Read the keyboard integer in the decimal system and establishment of a new system of numbers.

Output in the console number written in the new notation.

我只制作了 2 到 10 个系统,我不能制作 10 到 36 个系统。我试图在第二个循环中制作这样的东西:

if ( result > 9 ) {
printf("%c", 55+number);
} else {
printf("%d", result);
}

我的代码:

#include <stdio.h>

int main() {
int number, base;
int i, result;

scanf("%d %d", &number, &base);

if ( number < base ) {
printf("%d\n", number);
} else {
for ( i = base; i <= number / base; i *= base );
for ( int j = i; j >= base; j /= base ) {
result = number / j;
printf("%d", result);
number = number % j;
}
printf("%d\n", number%base);
}
return 0;
}

最佳答案

else条件需要一些改变:
1. 值到数字的转换需要应用到内部循环到最后的printf("%d\n", number % base) .不要在两个地方都添加,只需让你的循环运行到 j > 0 , 而不是 j >= base并且只使用最后一个 printf()对于 \n .
2. 而不是使用魔数(Magic Number)55使用 result - 10 + 'A' .它更容易理解并且不依赖于 ASCII -(依赖于 A、B、C ... 是连续的)。
3. 其他都OK。

[编辑]@nos 指出了 if() 的问题条件。
所以删除 if ( number < base ) { ... else {并更改 for (i = base;for (i = 1;制定更简单的解决方案。

  // } else {
for (i = 1; i <= number / base; i *= base)
;
int j;
// for (j = i; j >= base; j /= base) {
for (j = i; j > 0; j /= base) {
result = number / j;
#if 1
if (result > 9) {
// printf("%c", 55 + result);
printf("%c", result - 10 + 'A');
} else {
printf("%d", result);
}
#else
printf("%d", result);
#endif
number = number % j;
}
printf("\n");
// }

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

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