从键盘上输入四个短整型数,求这四个数中最大的无符号数和最小无符号数及对应的输入值,并输出最大的无符号数和最小无符号数的差
#include <stdio.h>
#include <limits.h>
int main() {
unsigned short a, b, c, d;
printf("请输入四个短整型数:");
scanf("%hu %hu %hu %hu", &a, &b, &c, &d);
unsigned short max = 0, min = USHRT_MAX;
unsigned short arr[4] = {a, b, c, d};
for(int i = 0; i < 4; i++) {
if(arr[i] > max) {
max = arr[i];
}
if(arr[i] < min) {
min = arr[i];
}
}
printf("最大无符号数为%hu,对应的输入值为", max);
for(int i = 0; i < 4; i++) {
if(arr[i] == max) {
printf("%hu ", arr[i]);
}
}
printf("\n");
printf("最小无符号数为%hu,对应的输入值为", min);
for(int i = 0; i < 4; i++) {
if(arr[i] == min) {
printf("%hu ", arr[i]);
}
}
printf("\n");
printf("最大无符号数和最小无符号数的差为%hu\n", max - min);
return 0;
}
使用了无符号短整型(unsigned short)来存储输入的四个数,这样可以处理无符号数。程序使用了两个变量max和min来分别记录最大和最小的无符号数,使用了一个数组来存储输入的四个数。程序使用了for循环来遍历数组中的每个数,找出最大和最小的无符号数,然后再次遍历数组,找出对应的输入值。最后计算最大无符号数和最小无符号数的差并输出即可。
不知道你这个问题是否已经解决, 如果还没有解决的话:先将数字用补码表示出来,然后转化为原码
无符号数转化为有符号数:将第一个数字当成符号位
有符号位转化为无符号数:将符号位当成数字