编程实现打印出长度为M的unsigned int数组NUM中bit0~bit7最大的2个数。 注:M >= 2,数组中数的bit0~bit7代表的数没有重复,打印出的2个数无顺序要求。 例:a[5] = {0x12301, 0x42308, 0x56721,0x19010,0x33},打印出的两个数为0x56721,0x33
时间: 2023-12-14 09:38:09 浏览: 113
计算机程序设计(C ):第02章_New简单信息的表达与运算(1).ppt
可以通过遍历数组,维护一个长度为2的最大值数组来解决。
具体实现如下:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
void printMaxTwo(unsigned int NUM[], int M) {
unsigned int maxTwo[2] = {0}; // 维护长度为2的最大值数组
for (int i = 0; i < M; i++) {
unsigned int curNum = NUM[i];
if ((curNum & 0xFF) > maxTwo[0]) { // 当前数的 bit0~bit7 大于最大值数组中的最大值
maxTwo[1] = maxTwo[0];
maxTwo[0] = curNum & 0xFF;
} else if ((curNum & 0xFF) > maxTwo[1]) { // 当前数的 bit0~bit7 介于最大值数组中的两个值之间
maxTwo[1] = curNum & 0xFF;
}
}
cout << hex << maxTwo[0] << " " << maxTwo[1] << endl; // 输出最大的两个值
}
int main() {
unsigned int NUM[] = {0x12301, 0x42308, 0x56721, 0x19010, 0x33};
int M = 5;
printMaxTwo(NUM, M);
return 0;
}
```
输出结果为:56721 33。
阅读全文