用C语言编程实现打印出长度为M的unsignedint数组NUM中bit0~bit7最大的2个数,注: M>2,数组中数的bit0~bit7代表的数没有重复,打印出的2个数无顺序要求
时间: 2024-05-14 21:18:56 浏览: 53
2级c语言上机编程题
以下是用C语言实现的代码:
```c
#include <stdio.h>
#define M 5 // 数组长度
void max_two(unsigned int* nums, int len, unsigned int* max1, unsigned int* max2);
int main() {
unsigned int nums[M] = { 12, 34, 56, 78, 90 };
unsigned int max1, max2;
max_two(nums, M, &max1, &max2);
printf("Max1: %u\nMax2: %u\n", max1, max2);
return 0;
}
void max_two(unsigned int* nums, int len, unsigned int* max1, unsigned int* max2) {
*max1 = *max2 = 0;
for (int i = 0; i < len; i++) {
if (nums[i] & 0xff > *max1) {
*max2 = *max1;
*max1 = nums[i] & 0xff;
} else if (nums[i] & 0xff > *max2) {
*max2 = nums[i] & 0xff;
}
}
}
```
首先定义了一个 `max_two` 函数来计算数组中最大的两个数。在该函数中,我们使用两个变量 `max1` 和 `max2` 来保存最大的两个数。我们将这两个变量初始化为 0。
接下来,我们遍历数组中的每个元素,并比较它的低 8 位与当前的最大值。如果它比最大值大,则将最大值更新为该元素的低 8 位。如果它比第二大的值大,则将第二大的值更新为该元素的低 8 位。最后,我们将 `max1` 和 `max2` 的值传递回主函数。
阅读全文