结构体


我来把你老师这段话完整、清晰地翻译成“人话”,让你彻底明白老师要表达什么。


✅【老师在说什么?】

老师的意思很简单:

让你用结构体(struct)来统计投票,每次输入一个候选人的名字,然后和结构体里现有的候选人名字进行比较,如果匹配,就给那个人的票数 +1。

并且老师提醒你要会使用:

字符串比较函数 strcmp()

字符串处理

结构体数组保存候选人和票数

整段话可以浓缩为一句话:

“用结构体数组存候选人名字和票数,然后每次输入一个名称,用 strcmp 比较,如果相同就加票,最后输出每个人的票数。”

🔍 老师每句话的含义逐句解释

我逐段替你解释:


  1. 用结构体来统计选票,好吧?

👉 要创建一个结构体,例如:

struct candidate {

char name[20];
int votes;

};


  1. 人家写名字,你把名字读进去(scanf 输入)

👉 输入选票时你会收到一个名字,例如:

char input[20];
scanf("%s", input);


  1. 然后进行比较,是不是有字符比较?

👉 输入的名字要和结构体中的候选人名字进行字符串比较。


  1. 有没有字符比较的函数?会不会?strcmp() 记得吗?

👉 老师提醒你使用:

strcmp(str1, str2) == 0

来判断两个字符串是否完全相同。


  1. 如果相同,就加一票

如果:

strcmp(input, candidate[i].name) == 0

那么:

candidate[i].votes++;


  1. 最后统计票数出来

遍历结构体数组,把每个人的票数打印出来。


🧠 整体意思总结(最简版)

老师想让你实现这样一个流程:

  1. 定义结构体保存候选人名字 + 票数
  2. 输入投给谁(字符串)
  3. 用 strcmp() 找出候选人
  4. 找到就票数 +1
  5. 循环输入多次
  6. 最后打印结果

📝 如果你愿意,我可以直接给你“标准答案”代码

例如一个完整可运行的 C 程序:

include <stdio.h>

include <string.h>

struct candidate {

char name[20];
int votes;

};

int main() {

struct candidate people[3] = {
    {"Alice", 0},
    {"Bob", 0},
    {"Charlie", 0}
};

char input[20];
int n, i;

printf("请输入投票数:");
scanf("%d", &n);

while (n--) {
    printf("投给谁:");
    scanf("%s", input);

    for (i = 0; i < 3; i++) {
        if (strcmp(input, people[i].name) == 0) {
            people[i].votes++;
            break;
        }
    }
}

printf("\n投票结果:\n");
for (i = 0; i < 3; i++) {
    printf("%s: %d\n", people[i].name, people[i].votes);
}

return 0;

}

如果你需要,我可以:

按你的题目要求重新写

添加中文提示

加注释

改成动态候选人数量

或者帮你做成输入中文姓名的版本

你想要哪个?

声明:Siver Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 结构体


式微式微,胡不归