c语言数组统计数字出现次数
时间: 2023-06-20 14:09:16 浏览: 674
可以通过循环遍历数组并计数的方式来统计数字出现的次数,具体实现如下:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5, 1, 2, 3, 4, 1};
int size = sizeof(arr) / sizeof(int);
int cnt[10] = {0}; // 初始化每个数字出现的次数为0
for (int i = 0; i < size; i++) {
cnt[arr[i]]++; // 数组下标为数字,值为出现的次数
}
for (int i = 0; i < 10; i++) {
if (cnt[i] > 0) {
printf("%d出现了%d次\n", i, cnt[i]);
}
}
return 0;
}
```
输出结果:
```
1出现了3次
2出现了2次
3出现了2次
4出现了2次
5出现了1次
```
上述代码中,先定义了一个整型数组 `arr`,然后通过 `sizeof` 运算符计算出数组的大小(即元素个数),再定义一个整型数组 `cnt` 来记录每个数字出现的次数,初始值设为0。
接着使用 `for` 循环遍历数组 `arr`,对于每个元素,将其值作为下标,然后将对应的计数值加1。
最后再次使用 `for` 循环遍历 `cnt` 数组,输出出现次数大于0的数字和对应的次数。
相关问题
c语言数组中出现次数超过一半的数字剑指offer
题目:b'c\xe8\xaf\xad\xe8\xa8\x80\xe6\x95\xb0\xe7\xbb\x84\xe4\xb8\xad\xe5\x87\xba\xe7\x8e\xb0\xe6\xac\xa1\xe6\x95\xb0\xe8\xb6\x85\xe8\xbf\x87\xe4\xb8\x80\xe5\x8d\x8a\xe7\x9a\x84\xe6\x95\xb0\xe5\xad\x97\xe5\x89\x91\xe6\x8c\x87offer'
翻译:在一个C语言数组中找出出现次数超过一半的数字的面试题目。
回答:此题考察的是对数组中的数字出现次数的统计和判断能力。我们可以先对数组进行遍历,然后使用一个map等数据结构统计每个数字出现的次数。然后再对所有数字的出现次数进行判断,如果某个数字的出现次数超过了数组长度的一半,那么就是答案,否则就没有答案。该题目有多种解法,可以通过排序、快速选择或摩尔投票法等方式,具体需要根据面试题目的要求来选择不同的方法。
如何用C语言统计数组中出现次数最多的数字,需要使用二分法
首先,我们需要按照升序排列数组元素。然后,我们可以使用二分法来查找数组中每个数字出现的次数。我们可以通过维护一个计数器来记录每个数字出现的次数。在查找数字出现次数时,我们可以使用两个指针来确定数字的边界。
以下是示例代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target)
return mid;
else if (arr[mid] < target)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
int main() {
int arr[] = {1, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int maxCount = 0, maxNum = arr[0], count = 1;
int i = 1;
while (i < n) {
if (arr[i] == arr[i - 1])
count++;
else {
if (count > maxCount) {
maxCount = count;
maxNum = arr[i - 1];
}
count = 1;
}
i++;
}
if (count > maxCount) {
maxCount = count;
maxNum = arr[n - 1];
}
printf("出现次数最多的数字是 %d,出现次数为 %d\n", maxNum, maxCount);
return 0;
}
```
输出:
```
出现次数最多的数字是 5,出现次数为 4
```
在上面的代码中,我们首先按照升序对数组进行排序。然后,我们使用 while 循环遍历整个数组。在循环中,我们使用一个计数器 count 来记录相邻元素的相同次数。当我们遇到不同的元素时,我们比较 count 和 maxCount,如果 count 大于 maxCount,则更新 maxCount 和 maxNum。最后,我们输出出现次数最多的数字和它的出现次数。
阅读全文
相关推荐














