array数组按递增次序存放着8个16位无符号数(例如: array dw 1,1,3,3,3,7,8,11),编写程序把出现次数最多的数及其出现次数分别存放于 AX 和 CX 寄存器中。(注:数组中只存在唯一一个出现次数最多的数据)
时间: 2024-12-21 19:31:41 浏览: 3
为了实现这个功能,我们可以遍历整个数组并使用一个计数器来跟踪出现次数最多的数值。这里是一个简单的C语言程序片段,它假设数组array已经被初始化:
```c
#include <stdio.h>
void findMostFrequent(int array[], int size, unsigned short *mostFrequent, int *frequency) {
int maxCount = 0;
unsigned short mostNum = 0;
for (int i = 0; i < size; ++i) {
if (array[i] == mostNum) {
maxCount++;
} else {
if (maxCount > 0) {
maxCount--;
*mostFrequent = mostNum;
*frequency = maxCount;
}
mostNum = array[i];
maxCount = 1;
}
}
// 如果最后一个元素就是出现次数最多的
if (maxCount > 0) {
*mostFrequent = mostNum;
*frequency = maxCount;
}
}
int main() {
unsigned short array[] = {1, 1, 3, 3, 3, 7, 8, 11};
int arraySize = sizeof(array) / sizeof(array[0]);
unsigned short mostFrequent;
int frequency;
findMostFrequent(array, arraySize, &mostFrequent, &frequency);
printf("出现次数最多的数:%hu\n", mostFrequent);
printf("出现次数:%d\n", frequency);
return 0;
}
```
在这个程序中,`findMostFrequent` 函数遍历数组,当遇到相同的数值时增加计数器,否则更新最大计数和最频繁的数值。最后,函数会将结果存储在`mostFrequent`和`frequency`变量中。
阅读全文