用C语言编写程序本题要求统计一个整型序列中出现次数最多的整数及其出现次数。 输入格式: 输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。 输出格式: 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。 输入样例: 10 3 2 -1 5 3 4 3 0 3 2 输出样例: 3 4
时间: 2023-06-12 16:07:45 浏览: 43
```c
#include <stdio.h>
#define MAX_N 1000
int main()
{
int n;
int a[MAX_N];
int count[MAX_N] = {0}; //记录每个数出现的次数
int max_pos = 0; //出现次数最多的数的下标
int max_count = 0; //出现次数最多的数的出现次数
//读入数据
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
//统计每个数出现的次数
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (a[j] == a[i])
count[i]++;
//找出出现次数最多的数及其出现次数
for (int i = 0; i < n; i++)
if (count[i] > max_count) {
max_count = count[i];
max_pos = i;
}
//输出结果
printf("%d %d\n", a[max_pos], max_count);
return 0;
}
```
相关问题
用C语言编写要求统计一个整型序列中出现次数最多的整数及其出现次数,试编写相应程序
以下是用C语言编写统计一个整型序列中出现次数最多的整数及其出现次数的程序:
```c
#include <stdio.h>
#define MAX_SIZE 100
int main()
{
int arr[MAX_SIZE], freq[MAX_SIZE];
int n, i, j, maxCount, maxFreq;
printf("请输入整数序列的长度:");
scanf("%d", &n);
printf("请输入整数序列:\n");
for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
freq[i] = -1;
}
for(i=0; i<n; i++)
{
maxCount = 1;
for(j=i+1; j<n; j++)
{
if(arr[i] == arr[j])
{
maxCount++; freq[j] = 0;
}
}
if(freq[i] != 0)
{
freq[i] = maxCount;
}
}
maxFreq = freq[0];
for(i=0; i<n; i++)
{
if(freq[i] > maxFreq)
{
maxFreq = freq[i];
}
}
printf("出现次数最多的整数是:");
for(i=0; i<n; i++)
{
if(freq[i] == maxFreq)
{
printf("%d ", arr[i]);
}
}
printf("\n出现次数为:%d", maxFreq);
return 0;
}
```
用c语言编写程序实现:统计一个整型序列中出现次数最多的整数及其出现次数。
可以使用一个哈希表来实现统计整数出现次数的功能,具体步骤如下:
1. 定义一个哈希表结构体,包含两个成员,一个是整数值,一个是出现次数。
```c
typedef struct {
int val;
int count;
} HashNode;
```
2. 定义一个哈希表数组,用来存储哈希表结构体。数组的大小可以根据实际情况进行调整,这里假设整数值的范围在[0, 100]之间。
```c
#define HASH_SIZE 101
HashNode hashTable[HASH_SIZE];
```
3. 初始化哈希表,将每个哈希表结构体的出现次数初始化为0。
```c
void initHashTable() {
for (int i = 0; i < HASH_SIZE; i++) {
hashTable[i].val = i;
hashTable[i].count = 0;
}
}
```
4. 遍历整型序列,将每个整数对应的哈希表结构体的出现次数加1。
```c
void count(int *arr, int len) {
for (int i = 0; i < len; i++) {
hashTable[arr[i]].count++;
}
}
```
5. 找到出现次数最多的整数及其出现次数。
```c
void findMaxCount() {
int maxCount = 0;
int maxVal = 0;
for (int i = 0; i < HASH_SIZE; i++) {
if (hashTable[i].count > maxCount) {
maxCount = hashTable[i].count;
maxVal = hashTable[i].val;
}
}
printf("出现次数最多的整数是%d,出现次数为%d\n", maxVal, maxCount);
}
```
完整代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define HASH_SIZE 101
typedef struct {
int val;
int count;
} HashNode;
HashNode hashTable[HASH_SIZE];
void initHashTable() {
for (int i = 0; i < HASH_SIZE; i++) {
hashTable[i].val = i;
hashTable[i].count = 0;
}
}
void count(int *arr, int len) {
for (int i = 0; i < len; i++) {
hashTable[arr[i]].count++;
}
}
void findMaxCount() {
int maxCount = 0;
int maxVal = 0;
for (int i = 0; i < HASH_SIZE; i++) {
if (hashTable[i].count > maxCount) {
maxCount = hashTable[i].count;
maxVal = hashTable[i].val;
}
}
printf("出现次数最多的整数是%d,出现次数为%d\n", maxVal, maxCount);
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 3, 2, 1, 2, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7};
int len = sizeof(arr) / sizeof(int);
initHashTable();
count(arr, len);
findMaxCount();
return 0;
}
```