c语言完成:题目:用户输入一系列人名,个数不定(个数小于整数有效范围),以Ending结束。最多有10个不同的人名。 请统计每个人名的得票数,人名以及得票数,按照出现先后顺序输出,不用排序。 输入、输出描述与样例: 比如输入Alice Bob Tom Alice Bob Tom Alice Bob Tom Alice Bob Tom Ending 输出 Alice 4 Bob 4 Tom 4 备注:此例中,不同的人名有3个,即Alice,Bob,和Tom,他们都出现4次。
时间: 2023-02-06 12:58:25 浏览: 152
可以使用一个字符串数组来存储人名,然后使用一个整型数组来存储每个人名的票数。
首先,需要初始化这两个数组,并使用一个循环不断地读入人名,直到遇到"Ending"为止。在每一次读入人名之后,遍历人名数组,如果发现该人名已经存在,就将对应的票数加1;如果该人名是新的,就在人名数组的最后一个位置添加该人名,并在票数数组的最后一个位置添加1。
最后,遍历人名数组和票数数组,输出人名以及对应的票数。
以下是参考代码:
```
#include <stdio.h>
#include <string.h>
#define MAX_NAME_COUNT 10
int main(void)
{
char names[MAX_NAME_COUNT][100]; // 存储人名的数组
int votes[MAX_NAME_COUNT]; // 存储票数的数组
int name_count = 0; // 人名的个数
// 初始化数组
memset(names, 0, sizeof(names));
memset(votes, 0, sizeof(votes));
// 读入人名
char name[100];
while (1)
{
scanf("%s", name);
if (strcmp(name, "Ending") == 0)
{
break;
}
// 查找人名是否已经存在
int found = 0;
for (int i = 0; i < name_count; i++)
{
if (strcmp(name, names[i]) == 0)
{
// 如果已经存在,将票数加1
votes[i]++;
found = 1;
break;
}
}
// 如果人名不
阅读全文