进制转换相关的多组输入与负数转换

img


这道前两个例样都没有问题,但是第三个负数的输出的话就没有负号了,这个该怎么解决啊,【嘀嘀咕咕】


#include <stdio.h>

int main() {
    int num, n, i, j, sum = 0;
    int s[1000] = {0};
    while (scanf("%d%d", &num, &n) != EOF) {
        for (i = 0; num != 0; i++) {
            if (n < 0) {
                n = -n;
            }
            sum = num % n;
            num = num / n;
            s[i] = sum;
        }
        for (j = i - 1; j >= 0; j--) {
            if (s[j] >= 10)
                printf("%c", s[j] + 55);
            else
                printf("%d", s[j]);
        }
        printf("\n");
    }
    return 0;

}

你要先判断是否为负数,然后记住正负标志。再将收入值转换为正数进行转换。输出的时候如果是负数,先输出负号

#include <stdio.h>
int main() {
    int num, n, i, j, sum = 0;
    int s[1000] = {0};
    while (scanf("%d%d", &num, &n) != EOF) {
        if(num<0)
        {
            printf("-");
            num = -num;
        }
        for (i = 0; num != 0; i++) {
            sum = num % n;
            num = num / n;
            s[i] = sum;
        }
        for (j = i - 1; j >= 0; j--) {
            if (s[j] >= 10)
                printf("%c", s[j] + 55);
            else
                printf("%d", s[j]);
        }
        printf("\n");
    }
    return 0;
}