C语言 用结构体统计投票结果
例:有三个候选人,每个选民只能投给一个人,要求用C语言编写一个程序,实现投票功能。
源代码演示:
#include <stdio.h>
#include <string.h> //引入strcmp函数
struct people //定义结构体
{
char name[20];
int number;
}leader[3]={"li",0,"zhang",0,"sun",0}; //设定人名和初始票数
int main()
{
int i,j;
char leader_name[20];
printf("以输入0结束投票\n\n"); //提示语句
while(strcmp(leader_name,"0")!=0) //定义结束while循环条件
{
printf("请输入人名\n");
scanf("%s",leader_name);
for(j=0;j<3;j++)
{
if(strcmp(leader_name,leader[j].name)==0) //比较两个字符串
{
leader[j].number++; //如果名字相等,票数加一
}
}
}
printf("结果是:\n");
for(i=0;i<3;i++)
{
printf("%s的票数:%d\n",leader[i].name,leader[i].number);
}
return 0;
}
编译运行结果如下:
以输入0结束投票
请输入人名
li
请输入人名
li
请输入人名
sun
请输入人名
zhang
请输入人名
zhang
请输入人名
li
请输入人名
0
结果是:
li的票数:3
zhang的票数:2
sun的票数:1
--------------------------------
Process exited after 17.46 seconds with return value 0
请按任意键继续. . .
难点:
while(strcmp(leader_name,"0")!=0) //定义结束while循环条件
有些人可能认为这行代码可以写成:
while(leader_name!="0")
但是在C语言里面,字符串是不能像数字一样用等号,大于号和小于号直接进行比较的。而要用头文件<string.h>中的strcmp函数进行比较。
今天就先这样哒。