有三个候选人,每个选民只能投一票,写一程序,用结构体存储数据,求出得票结果。
时间: 2023-05-31 08:18:35 浏览: 615
### 回答1:
可以定义一个结构体数组,每个结构体存储一个候选人的信息,包括姓名和得票数。
定义结构体:
```struct candidate{
char name[20];
int vote;
}```
定义结构体数组:
```struct candidate c[3];```
读入候选人姓名:
```for(int i=0; i<3; i++){
printf("请输入第%d个候选人的姓名: ", i+1);
scanf("%s", c[i].name);
c[i].vote = 0;
}```
读入投票:
```int vote;
printf("请输入投票编号(1~3): ");
scanf("%d", &vote);
c[vote-1].vote++;```
最后遍历结构体数组输出得票结果:
```printf("得票结果: \n");
for(int i=0; i<3; i++){
printf("%s 得票数: %d\n", c[i].name, c[i].vote);
}```
注意: 上述代码只是示例,需要根据实际情况进行修改。
### 回答2:
为了求出三个候选人的得票结果,我们可以编写一个程序来处理。为了将数据存储在程序中,并简化代码,我们可以使用结构体。结构体是一个用户定义的数据类型,用于存储多个不同类型的数据。在这个程序中,我们可以使用一个结构体来表示每个候选人的名字和得票数。
首先,我们需要定义结构体。这个结构体将包含一个字符串来表示候选人的名字和一个整数来存储候选人的得票数。在这个例子中,我们将使用三个结构体实例来表示三个候选人。
```c
#include <stdio.h>
#include <string.h>
struct candidate {
char name[20];
int votes;
};
```
为了避免写重复的代码,在我们的程序中,我们将定义一个函数来获取候选人的名字。
```c
void get_candidate_name(struct candidate *c) {
printf("Enter the candidate's name: ");
scanf("%s", c->name);
}
```
现在,我们需要在主函数中创建三个候选人的结构体实例,并通过调用 `get_candidate_name`函数来分别输入候选人的名字。在这三个实例中,每个候选人的得票数将从零开始。
```c
int main() {
struct candidate c1, c2, c3;
get_candidate_name(&c1);
get_candidate_name(&c2);
get_candidate_name(&c3);
c1.votes = 0;
c2.votes = 0;
c3.votes = 0;
// rest of the program
}
```
现在,我们可以编写代码来让用户投票,并将所有票数加到各自的候选人的总票数中。我们可以使用一个循环,直到用户输入一个负数才停止。
```c
int vote;
while (1) {
printf("Enter candidate number or -1 to end: ");
scanf("%d", &vote);
if (vote == -1) {
break;
}
switch (vote) {
case 1:
c1.votes++;
break;
case 2:
c2.votes++;
break;
case 3:
c3.votes++;
break;
default:
printf("Invalid candidate number\n");
}
}
```
最后,我们需要编写代码来输出每个候选人的得票数。
```c
printf("Candidate %s has %d votes\n", c1.name, c1.votes);
printf("Candidate %s has %d votes\n", c2.name, c2.votes);
printf("Candidate %s has %d votes\n", c3.name, c3.votes);
```
完整的程序如下:
```c
#include <stdio.h>
#include <string.h>
struct candidate {
char name[20];
int votes;
};
void get_candidate_name(struct candidate *c) {
printf("Enter the candidate's name: ");
scanf("%s", c->name);
}
int main() {
struct candidate c1, c2, c3;
get_candidate_name(&c1);
get_candidate_name(&c2);
get_candidate_name(&c3);
c1.votes = 0;
c2.votes = 0;
c3.votes = 0;
int vote;
while (1) {
printf("Enter candidate number or -1 to end: ");
scanf("%d", &vote);
if (vote == -1) {
break;
}
switch (vote) {
case 1:
c1.votes++;
break;
case 2:
c2.votes++;
break;
case 3:
c3.votes++;
break;
default:
printf("Invalid candidate number\n");
}
}
printf("Candidate %s has %d votes\n", c1.name, c1.votes);
printf("Candidate %s has %d votes\n", c2.name, c2.votes);
printf("Candidate %s has %d votes\n", c3.name, c3.votes);
return 0;
}
```
### 回答3:
为了求出这道题的得票结果,我们可以采用结构体来存储候选人和他们的得票数。具体来说,我们可以定义一个结构体类型Candidate,其中包含一个字符串类型的名字和一个整型类型的得票数。
typedef struct{
char name[20]; // 候选人的名字
int votes; // 候选人的得票数
}Candidate;
接下来,我们需要定义三个候选人并初始化他们的得票数为0。我们可以将这三个候选人存储在一个数组中,方便以后的操作。代码如下:
Candidate candidates[3] = {
{"候选人A", 0},
{"候选人B", 0},
{"候选人C", 0}
};
接着,我们需要实现输入投票信息和计算得票结果的功能。我们可以设计一个循环,使得每一次循环处理一张选票,然后更新候选人的得票数。具体来说,我们可以先输入一个数字,代表选民投票给哪个候选人。然后,我们可以使用一个switch语句来根据选民的选择增加相应候选人的得票数。代码如下:
int main(){
int n; // 选民人数
int i;
printf("请输入选民人数:");
scanf("%d", &n);
for(i = 0; i < n; i++){
int vote; // 选民的选择
printf("请投票:1.候选人A 2.候选人B 3.候选人C\n");
scanf("%d", &vote);
switch(vote){
case 1: candidates[0].votes++; break;
case 2: candidates[1].votes++; break;
case 3: candidates[2].votes++; break;
default: printf("无效选择。\n"); break;
}
}
最后,我们可以遍历候选人数组,输出每个候选人的名字和得票数,从而得到最终的得票结果。代码如下:
printf("得票结果如下:\n");
for(i = 0; i < 3; i++){
printf("%s: %d 票\n", candidates[i].name, candidates[i].votes);
}
return 0;
}
综上所述,我们可以用以上的程序来存储候选人的数据,求出得票结果,并最终输出它们的名字和得票数。
阅读全文