鱼C论坛

 找回密码
 立即注册
查看: 697|回复: 3

[已解决]如何实现具体讲解一下思路代码

[复制链接]
发表于 2024-9-12 18:34:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
某班正在投票竞选班长,请设计一个程序进行票数统计
题目要求:要求输入某人姓名,即为某人加一票,最后输出每个得票人和得票数
假设班上一共有N名同学  ,每人只能投1票
提示:
char name[N][20];//黑板
int Num[N];
char tempname[20];
1)请投票  输入姓名  存在 tempname       2)拿tempname与当前黑板上的名字去进行比较,
如果找到了对应的名字票数+1  如果没找到就把名字新增上去并且票数为1票
将用到strcmp    strcpy函数
最佳答案
2024-9-12 18:42:08
轻语远歌 发表于 2024-09-12 18:41
用以下的数组名示实现具体代码呢,你这个我有些看不懂 ...


好的,我理解你的要求。以下是基于你提供的数组名来实现具体代码:

### 代码:

  1. #include <stdio.h>
  2. #include <string.h>

  3. #define MAX_STUDENTS 100
  4. #define MAX_NAME_LEN 50

  5. char name[MAX_STUDENTS][MAX_NAME_LEN];  // 黑板上的名字
  6. int Num[MAX_STUDENTS];  // 票数数组
  7. char tempname[MAX_NAME_LEN];  // 临时存放输入的名字
  8. int student_count = 0;  // 学生总数

  9. // 添加一票
  10. void add_vote(char* tempname) {
  11.     for (int i = 0; i < student_count; i++) {
  12.         if (strcmp(name[i], tempname) == 0) {
  13.             Num[i]++;
  14.             return;
  15.         }
  16.     }
  17.     // 新增学生
  18.     strcpy(name[student_count], tempname);
  19.     Num[student_count] = 1;
  20.     student_count++;
  21. }

  22. // 打印结果
  23. void print_results() {
  24.     for (int i = 0; i < student_count; i++) {
  25.         printf("%s: %d\n", name[i], Num[i]);
  26.     }
  27. }

  28. int main() {
  29.     int total_votes;  // 总投票人数

  30.     printf("请输入总投票人数:");
  31.     scanf("%d", &total_votes);

  32.     for (int i = 0; i < total_votes; i++) {
  33.         printf("请输入投票的姓名:");
  34.         scanf("%s", tempname);
  35.         add_vote(tempname);
  36.     }

  37.     printf("投票结果如下:\n");
  38.     print_results();

  39.     return 0;
  40. }
复制代码


### 代码解释:
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 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-9-12 18:34:24 | 显示全部楼层
当然可以,下面是这个投票程序的具体思路和代码实现:

### 代码思路:
1. 用一个字典(哈希表)来存储每个同学的名字和对应的票数。
2. 用户输入一个姓名,将其与字典中的已有姓名进行比较。
3. 如果字典中已经有该姓名,则该姓名的票数加1。
4. 如果字典中没有该姓名,则将该姓名添加到字典,票数设为1。
5. 最后输出每个得票人的姓名和得票数。

### 代码实现(C语言):
  1. #include <stdio.h>
  2. #include <string.h>

  3. #define MAX_NAME_LEN 50
  4. #define MAX_STUDENTS 100

  5. // 定义一个结构体来存储每个学生的姓名和得票数
  6. typedef struct {
  7.     char name[MAX_NAME_LEN];
  8.     int votes;
  9. } Student;

  10. Student students[MAX_STUDENTS];
  11. int student_count = 0;

  12. void add_vote(char* name) {
  13.     for (int i = 0; i < student_count; i++) {
  14.         if (strcmp(students[i].name, name) == 0) {
  15.             students[i].votes++;
  16.             return;
  17.         }
  18.     }
  19.     // 新增学生
  20.     strcpy(students[student_count].name, name);
  21.     students[student_count].votes = 1;
  22.     student_count++;
  23. }

  24. void print_results() {
  25.     for (int i = 0; i < student_count; i++) {
  26.         printf("%s: %d\n", students[i].name, students[i].votes);
  27.     }
  28. }

  29. int main() {
  30.     char name[MAX_NAME_LEN];
  31.     int num_votes;

  32.     printf("请输入投票人数:");
  33.     scanf("%d", &num_votes);

  34.     for (int i = 0; i < num_votes; i++) {
  35.         printf("请输入投票的姓名:");
  36.         scanf("%s", name);
  37.         add_vote(name);
  38.     }

  39.     printf("投票结果如下:\n");
  40.     print_results();

  41.     return 0;
  42. }
复制代码


### 代码解释:
1. **结构体定义**:
   - `Student`结构体包含每个学生的姓名和得票数。
2. **添加投票**:
   - `add_vote`函数检查输入的姓名是否已经存在于数组`students`中。如果存在,相应的得票数加1;如果不存在,则将新学生添加到数组中。
3. **打印结果**:
   - `print_results`函数遍历存储学生信息的数组,并打印每个学生的姓名和得票数。
4. **主函数**:
   - `main`函数中,询问用户输入总投票人数,然后逐一输入投票的姓名,调用`add_vote`函数处理,最后调用`print_results`函数输出结果。

通过这个程序,我们可以方便地统计并输出每个学生的得票情况。如果有进一步的问题,请随时提问~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-12 18:41:54 | 显示全部楼层
FishC 发表于 2024-9-12 18:34
当然可以,下面是这个投票程序的具体思路和代码实现:

### 代码思路:

用以下的数组名示实现具体代码呢,你这个我有些看不懂


某班正在投票竞选班长,请设计一个程序进行票数统计
题目要求:要求输入某人姓名,即为某人加一票,最后输出每个得票人和得票数
假设班上一共有N名同学  ,每人只能投1票
提示:
char name[N][20];//黑板
int Num[N];
char tempname[20];
1)请投票  输入姓名  存在 tempname       2)拿tempname与当前黑板上的名字去进行比较,
如果找到了对应的名字票数+1  如果没找到就把名字新增上去并且票数为1票
将用到strcmp    strcpy函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-12 18:42:08 | 显示全部楼层    本楼为最佳答案   
轻语远歌 发表于 2024-09-12 18:41
用以下的数组名示实现具体代码呢,你这个我有些看不懂 ...


好的,我理解你的要求。以下是基于你提供的数组名来实现具体代码:

### 代码:

  1. #include <stdio.h>
  2. #include <string.h>

  3. #define MAX_STUDENTS 100
  4. #define MAX_NAME_LEN 50

  5. char name[MAX_STUDENTS][MAX_NAME_LEN];  // 黑板上的名字
  6. int Num[MAX_STUDENTS];  // 票数数组
  7. char tempname[MAX_NAME_LEN];  // 临时存放输入的名字
  8. int student_count = 0;  // 学生总数

  9. // 添加一票
  10. void add_vote(char* tempname) {
  11.     for (int i = 0; i < student_count; i++) {
  12.         if (strcmp(name[i], tempname) == 0) {
  13.             Num[i]++;
  14.             return;
  15.         }
  16.     }
  17.     // 新增学生
  18.     strcpy(name[student_count], tempname);
  19.     Num[student_count] = 1;
  20.     student_count++;
  21. }

  22. // 打印结果
  23. void print_results() {
  24.     for (int i = 0; i < student_count; i++) {
  25.         printf("%s: %d\n", name[i], Num[i]);
  26.     }
  27. }

  28. int main() {
  29.     int total_votes;  // 总投票人数

  30.     printf("请输入总投票人数:");
  31.     scanf("%d", &total_votes);

  32.     for (int i = 0; i < total_votes; i++) {
  33.         printf("请输入投票的姓名:");
  34.         scanf("%s", tempname);
  35.         add_vote(tempname);
  36.     }

  37.     printf("投票结果如下:\n");
  38.     print_results();

  39.     return 0;
  40. }
复制代码


### 代码解释:
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 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-10 07:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表