如何实现具体讲解一下思路代码
某班正在投票竞选班长,请设计一个程序进行票数统计题目要求:要求输入某人姓名,即为某人加一票,最后输出每个得票人和得票数
假设班上一共有N名同学,每人只能投1票
提示:
char name;//黑板
int Num;
char tempname;
1)请投票输入姓名存在 tempname 2)拿tempname与当前黑板上的名字去进行比较,
如果找到了对应的名字票数+1如果没找到就把名字新增上去并且票数为1票
将用到strcmp strcpy函数 当然可以,下面是这个投票程序的具体思路和代码实现:
### 代码思路:
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;
int votes;
} Student;
Student students;
int student_count = 0;
void add_vote(char* name) {
for (int i = 0; i < student_count; i++) {
if (strcmp(students.name, name) == 0) {
students.votes++;
return;
}
}
// 新增学生
strcpy(students.name, name);
students.votes = 1;
student_count++;
}
void print_results() {
for (int i = 0; i < student_count; i++) {
printf("%s: %d\n", students.name, students.votes);
}
}
int main() {
char name;
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 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-9-12 18:34
当然可以,下面是这个投票程序的具体思路和代码实现:
### 代码思路:
用以下的数组名示实现具体代码呢,你这个我有些看不懂
某班正在投票竞选班长,请设计一个程序进行票数统计
题目要求:要求输入某人姓名,即为某人加一票,最后输出每个得票人和得票数
假设班上一共有N名同学,每人只能投1票
提示:
char name;//黑板
int Num;
char tempname;
1)请投票输入姓名存在 tempname 2)拿tempname与当前黑板上的名字去进行比较,
如果找到了对应的名字票数+1如果没找到就把名字新增上去并且票数为1票
将用到strcmp strcpy函数 轻语远歌 发表于 2024-09-12 18:41
用以下的数组名示实现具体代码呢,你这个我有些看不懂 ...
好的,我理解你的要求。以下是基于你提供的数组名来实现具体代码:
### 代码:
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
#define MAX_NAME_LEN 50
char name;// 黑板上的名字
int Num;// 票数数组
char tempname;// 临时存放输入的名字
int student_count = 0;// 学生总数
// 添加一票
void add_vote(char* tempname) {
for (int i = 0; i < student_count; i++) {
if (strcmp(name, tempname) == 0) {
Num++;
return;
}
}
// 新增学生
strcpy(name, tempname);
Num = 1;
student_count++;
}
// 打印结果
void print_results() {
for (int i = 0; i < student_count; i++) {
printf("%s: %d\n", name, Num);
}
}
int main() {
int total_votes;// 总投票人数
printf("请输入总投票人数:");
scanf("%d", &total_votes);
for (int i = 0; i < total_votes; i++) {
printf("请输入投票的姓名:");
scanf("%s", tempname);
add_vote(tempname);
}
printf("投票结果如下:\n");
print_results();
return 0;
}
### 代码解释:
1. **全局变量定义**:
- `name`:存储每个学生的姓名,相当于黑板上的名字。
- `Num`:存储每个学生的得票数。
- `tempname`:存储临时输入的名字。
- `student_count`:记录当前已经存储的学生总数。
2. **添加一票 `add_vote` 函数**:
- 遍历现有的学生姓名数组 `name`,若找到匹配的姓名,则对应 `Num` 票数加1。
- 如果没有找到匹配的姓名,则将该姓名添加到 `name` 数组中,并将对应的票数 `Num` 设为 1。
3. **打印结果 `print_results` 函数**:
- 遍历存储学生姓名和票数的数组,打印每个学生的姓名和票数。
4. **主函数 `main`**:
- 首先询问用户输入总投票人数 `total_votes`。
- 循环输入每个投票的学生姓名,存到 `tempname` 中,调用 `add_vote` 函数进行统计。
- 输入完毕后,调用 `print_results` 函数输出每个学生的得票结果。
通过这个程序,可以简单地实现班长投票的票数统计功能。如果有任何不清楚的地方,请随时问我!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]