c语言中将16进制负整数以输入形式输出

问题遇到的现象和发生背景

我在我的教材后面练习题中有个问题中迷糊了,需要帮忙。

img

问题相关代码,请勿粘贴截图
#include 
int main () {
    int a;
    printf("请输入16进制数:");
    scanf("%X", &a);
    printf("您输入的16进制数:%X\n", a);
    return 0;
}

你用字符串格式输入不就行了吗
没要求必须用整型吧?

#include <stdio.h>
int main () {
    int a[1000];
    printf("请输入16进制数:");
    scanf("%s", &a);
    printf("您输入的16进制数:%s\n", a);
    return 0;
}
 

#include <stdio.h>

int main()
{
short int a;
scanf("%X",&a);
printf("-%hX",-a);
return 0;
}