在DOSBOX上实现从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并在屏幕上显示出来。
时间: 2023-12-18 07:05:37 浏览: 103
以下是实现代码,需要在DOSBOX环境下编译运行:
```c
#include <stdio.h>
int main() {
unsigned char num[10];
unsigned char max = 0;
unsigned char i, j, bit;
printf("Please enter 10 unsigned decimal numbers (less than 256):\n");
for (i = 0; i < 10; i++) {
scanf("%hhu", &num[i]);
if (num[i] > max) {
max = num[i];
}
}
printf("The binary representation of the maximum number is: ");
for (i = 7; i < 255; i--) { // 从高位到低位依次检查
bit = 1 << i;
for (j = 0; j < 10; j++) {
if (num[j] & bit) {
printf("1");
} else {
printf("0");
}
}
printf(" ");
if (max & bit) {
printf("1\n");
} else {
printf("0\n");
}
}
return 0;
}
```
解释一下上面的代码:
- `num` 数组存储输入的十进制数;
- `max` 变量初始值为0,用于存储最大值;
- `i` 和 `j` 变量用于遍历位数和数组元素;
- `bit` 变量用于表示当前检查的位,初始值为最高位(第7位);
- `scanf` 函数读入十进制数;
- `if` 判断是否为最大值,如果是则更新 `max` 变量;
- 从最高位开始依次检查每一位,并在屏幕上输出二进制表示和是否为最大值。
阅读全文