|
发表于 2024-9-12 18:34:24
|
显示全部楼层
当然可以,下面是这个投票程序的具体思路和代码实现:
### 代码思路:
1. 用一个字典(哈希表)来存储每个同学的名字和对应的票数。
2. 用户输入一个姓名,将其与字典中的已有姓名进行比较。
3. 如果字典中已经有该姓名,则该姓名的票数加1。
4. 如果字典中没有该姓名,则将该姓名添加到字典,票数设为1。
5. 最后输出每个得票人的姓名和得票数。
### 代码实现(C语言):
- #include <stdio.h>
- #include <string.h>
- #define MAX_NAME_LEN 50
- #define MAX_STUDENTS 100
- // 定义一个结构体来存储每个学生的姓名和得票数
- typedef struct {
- char name[MAX_NAME_LEN];
- int votes;
- } Student;
- Student students[MAX_STUDENTS];
- int student_count = 0;
- void add_vote(char* name) {
- for (int i = 0; i < student_count; i++) {
- if (strcmp(students[i].name, name) == 0) {
- students[i].votes++;
- return;
- }
- }
- // 新增学生
- strcpy(students[student_count].name, name);
- students[student_count].votes = 1;
- student_count++;
- }
- void print_results() {
- for (int i = 0; i < student_count; i++) {
- printf("%s: %d\n", students[i].name, students[i].votes);
- }
- }
- int main() {
- char name[MAX_NAME_LEN];
- int num_votes;
- printf("请输入投票人数:");
- scanf("%d", &num_votes);
- for (int i = 0; i < num_votes; i++) {
- printf("请输入投票的姓名:");
- scanf("%s", name);
- add_vote(name);
- }
- printf("投票结果如下:\n");
- print_results();
- return 0;
- }
复制代码
### 代码解释:
1. **结构体定义**:
- `Student`结构体包含每个学生的姓名和得票数。
2. **添加投票**:
- `add_vote`函数检查输入的姓名是否已经存在于数组`students`中。如果存在,相应的得票数加1;如果不存在,则将新学生添加到数组中。
3. **打印结果**:
- `print_results`函数遍历存储学生信息的数组,并打印每个学生的姓名和得票数。
4. **主函数**:
- `main`函数中,询问用户输入总投票人数,然后逐一输入投票的姓名,调用`add_vote`函数处理,最后调用`print_results`函数输出结果。
通过这个程序,我们可以方便地统计并输出每个学生的得票情况。如果有进一步的问题,请随时提问~
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|