c语言输入一串数字,统计重复数字的重复次数
时间: 2024-11-17 12:29:10 浏览: 23
在C语言中,你可以通过遍历数组并使用哈希表(如`unordered_map`或`std::map`)来统计一串数字中每个数字的重复次数。下面是一个简单的示例,假设我们有一个整数数组:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unordered_map>
int main() {
int arr[] = {1, 2, 3, 4, 5, 3, 2, 1, 6};
int n = sizeof(arr) / sizeof(arr[0]);
// 创建一个无序映射,键是数字,值是该数字的计数
std::unordered_map<int, int> countMap;
for (int i = 0; i < n; ++i) {
// 如果数字已经在映射中,增加计数;否则添加新的条目,计数为1
countMap[arr[i]] += 1;
}
// 遍历映射并打印结果
for (const auto& pair : countMap) {
printf("数字 %d 的重复次数: %d\n", pair.first, pair.second);
}
return 0;
}
```
在这个例子中,程序会输出每个重复数字及其对应的计数。如果你想要用户输入一串数字,你需要先读取用户的输入,并稍作修改上述代码。
相关问题
C语言编写程序,输入一串数字,展示出这一串数字中是否有重复的数字,如果有,展示出重复的数字是什么及该数字重复次数;如果没有出现重复数字,输出-1并且退出程序。
```c
#include <stdio.h>
int main() {
int count[10] = {0}; // 统计数字出现次数
char num[100]; // 存储输入的数字串
int i, index; // 循环计数器和数字索引
int flag = 0; // 是否存在重复数字的标志
printf("请输入一串数字(不超过100个):");
scanf("%s", num);
for (i = 0; num[i] != '\0'; i++) {
index = num[i] - '0'; // 将字符转换为数字索引
count[index]++; // 统计数字出现次数
if (count[index] > 1) { // 如果数字出现次数大于1,则存在重复数字
flag = 1;
}
}
if (flag) { // 存在重复数字
printf("重复数字如下:\n");
for (i = 0; i < 10; i++) {
if (count[i] > 1) { // 输出重复数字及其出现次数
printf("%d:%d次\n", i, count[i]);
}
}
} else { // 不存在重复数字
printf("-1\n");
}
return 0;
}
```
C语言编写程序,输入一串数字,展示出这一串数字中是否有重复的数字,如果有,展示出重复数字的个数;如果没有,输出-1并且退出程序。
```c
#include <stdio.h>
int main() {
int count[10] = {0}; // 计数数组,用来统计每个数字出现的次数
char num[100]; // 存储输入的数字串
printf("请输入数字串:");
scanf("%s", num);
int i = 0;
while (num[i] != '\0') {
int n = num[i] - '0'; // 将字符转换成数字
count[n]++;
i++;
}
int flag = 0; // 标记是否有重复数字
int repeat = 0; // 记录重复数字的个数
for (i = 0; i < 10; i++) {
if (count[i] > 1) {
flag = 1;
repeat++;
}
}
if (flag) {
printf("重复数字的个数为:%d\n", repeat);
} else {
printf("-1\n");
}
return 0;
}
```
阅读全文