输入100个姓名(可能有相同的姓名),输出一共出现了多少种姓名。 输入格式: 输入100行字符串。 输出格式: 输出一个整数。c语言
时间: 2024-12-20 18:24:44 浏览: 30
在 C 语言中,你可以使用哈希表(如`unordered_set`或`std::set`)来实现这个功能,因为哈希表的特点是不会包含重复元素。以下是简单的步骤:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
// 创建一个结构体表示姓名
typedef struct {
char name[50];
} Name;
// 使用哈希表存储姓名并计数
int count_unique_names() {
// 初始化一个无序集合来存储名字
std::unordered_set<std::string> names;
int unique_count = 0;
// 读取100个姓名
for (int i = 1; i <= 100; ++i) {
// 从输入中获取姓名
char input_name[60];
scanf("%s", input_name);
Name name = {input_name};
// 将姓名转换为字符串并添加到集合中
std::string str_name = name.name;
names.insert(str_name);
// 如果名字第一次出现,增加计数
if (names.find(str_name) == names.begin()) {
unique_count++;
}
}
return unique_count;
}
int main() {
int unique_names = count_unique_names();
printf("共出现了%d种不同的姓名。\n", unique_names);
return 0;
}
```
在这个程序中,我们首先创建了一个`Name`结构来存储姓名,然后用`std::unordered_set`来存储唯一的姓名。通过遍历100次输入,并将每个姓名插入集合,我们可以跟踪有多少独特的姓名。当名字首次插入集合时,我们会增加独特计数。
阅读全文
相关推荐



















