关于#c语言#的问题:语言进制转换

这提交为什么一直wrong answer啊?

img


#include
#include
int main()
{
    int a, n, r, b[1000], k;
    scanf_s("%d", &a);
    while(a--)
    {
        k = 0;
        scanf_s("%d %d", &n, &r);
        if (n < 0)
        {
            printf("-");
            n = abs(n);
        }
        while (n)
        {
            b[k] = n % r;
            n = n / r;
            k++;
        }
        for (int j = k-1; j >= 0; j--)
        {
            if (b[j] == 10)
            {
                printf("A");
            }
            else if (b[j] == 11)
            {
                printf("B");
            }
            else if (b[j] == 12)
            {
                printf("C");
            }
            else if (b[j] == 13)
            {
                printf("D");
            }
            else if (b[j] == 14)
            {
                printf("E");
            }
            else if (b[j] == 15)
            {
                printf("F");
            }
            else
            {
                printf("%d", b[j]);
            }
        }
        printf("\n");
    }
}

已解决 忘记考虑n==0的情况了

是不是最后一行最后不需要换行?

if (b[j] == 10)
...
这里写得有点呆,这么多判断只要2行就可以了。
if (b[j] >= 10)
printf("%c" b[j] - 10 + 'A');

好好看报错信息,大概率是scanf_s报错了
这个只在vs里必须这样写
其他库里要么没这个函数,要么需要改个头文件

参考GPT和自己的思路:

这段代码的逻辑基本正确,但可能出现 wrong answer 的原因有以下几个可能:

  1. 输入格式错误:输入方式应该是每行两个整数,用空格隔开。如果输入格式不符合要求,程序会出错。

  2. 输出格式错误:输出结果应该是每行一个进制转换后的数字,如果与题目要求的输出格式不一致,程序会出错。

  3. 原本准确的输出结果被误判为错误的结果:根据题目的要求,每行输出一个进制转换后的数字,如果有多余的空格或换行,会被判定为错误。

  4. 程序中的 bug:程序中可能存在一些逻辑错误,导致计算结果与预期不符合。

建议你可以认真检查输入输出格式是否符合要求,以及对每个测试用例进行单独的检查,同时注意程序中可能存在的逻辑错误。