#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define M 10 //投票人数上限
#define N 3 //候选人数
struct
{
char code[10]; //候选人代号
char name[10];//候选人名字
int score; //得分
} candidates[N], st; //候选人结构体数组
void addcandidate(); // 创建候选人
void search(); //查询候选人信息
void scan();//浏览候选人信息
void vote(); //投票
int main();//主函数int i=0;
void addcandidate()
{
char a;
do
{
printf("*********************创建新候选人*******************\n");
printf("请输入:");
printf("候选人号码:");
scanf("%s",&candidates[i].code);
fflush(stdin);
printf("候选人名字:");
scanf("%s",&candidates[i].name);
fflush(stdin);
printf("是否继续输入下一个候选人?(y/n)");
fflush(stdin);
a=getchar();
i++;
}while((a=='y'||a=='Y')&&i<=N);
}void search()
{
int k;
char code[10],b;
do
{
printf("*********************查找候选人*******************\n");
printf("\t请输入想查找的候选人编号\n");
fflush(stdin);
gets(code);
for(k=0;k<i;k++)
{
if(strcmp(code,candidates[k].code)=='0')
{
printf("该候选人已找到!\n");
break;
}
}
if(k>=10)
{
printf("\t查无此人!\n");
}
else
{
printf("\t候选者编号:\t候选者姓名:\n");
printf("\t%c\t%s\n", candidates[k].code,candidates[k].name);
}
printf("\n是否查找其他候选者信息?(y/n)");
fflush(stdin);
b=getchar();
}while(b=='y'||b=='Y');
}void scan()
{
int j;
printf("*********************浏览候选人*******************\n");
printf("\t编号:\t姓名:\n");
for(j=0;j<i;j++)
{
printf("\t%c\t%s\n",candidates[j].code,candidates[j].name);
}
}void vote()
{
char candidate[M][N]; //投票
int n, c=0; //n: 实际投票人数,c: 有效选票
int i,j,k,t;
char tmp[N+1]; //存放投票的中间变量
int s[N]={5,3,2};
printf("*********************为候选人投票*******************\n");
printf("输入投票人数:");
scanf("%d",&n);
for(i=0; i<n; ++i) //输入选票
{
printf("输入第 %d 张选票:", i+1);
scanf("%s",tmp);
candidate[i][0]=tmp[0];
candidate[i][1]=tmp[1];
candidate[i][2]=tmp[2];
if(tmp[0]==tmp[1] || tmp[1]==tmp[2] || tmp[0]==tmp[2])
printf("该票无效:%s\n", tmp);
else
{
//tmp[0]号候选人加5分;
//tmp[1]号候选人加3分;
//tmp[2]号候选人加2分;
c++;
for(j=0; j<N; ++j)
{
for(k=0; k<N; ++k)
if(candidates[k].code==tmp[j])
{
candidates[k].score+=s[j];
}
}
}
}
for(i=0; i<N-1; ++i)//得分排序
{
k=i;
for(j=i+1; j<N; ++j)
{
if(candidates[j].score>candidates[k].score)
{
k=j;
}
}
st=candidates[i];
candidates[i]=candidates[k];
candidates[k]=st;
}
if(candidates[0].score==candidates[1].score)
{
printf("前两名得分是否相同,都是 %d 分,重新投票。", candidates[0].score);
}
else
{
printf("候选人\t得分\n");
for(i=0; i<N; ++i)
printf("%c\t%d\n", candidates[i].code, candidates[i].score);
printf("祝贺 %c 当选冠军!\n", candidates[0].code);
}
}int main()
{
int key;
do
{
printf("*************************************************************\n");
printf("****************** **欢迎进入投票系统***********************\n");
printf("*************************************************************\n");
printf("** 1.创建新的候选人 2.查询单个候选人信息 **\n");
printf("** 3.浏览所有候选人信息 4.投票 5.退出 **\n");
scanf("%d",&key);
switch(key)
{
case 1:addcandidate();break;
case 2:search();break;
case 3:scan();break;
case 4:vote();break;
case 5:break;
dsfault:break;
}
}while(key!=5);
return 0;
}
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define M 10 //投票人数上限
#define N 3 //候选人数
struct
{
char code[10]; //候选人代号
char name[10];//候选人名字
int score; //得分
} candidates[N], st; //候选人结构体数组
void addcandidate(); // 创建候选人
void search(); //查询候选人信息
void scan();//浏览候选人信息
void vote(); //投票
int main();//主函数int i=0;
void addcandidate()
{
char a;
do
{
printf("*********************创建新候选人*******************\n");
printf("请输入:");
printf("候选人号码:");
scanf("%s",&candidates[i].code);
fflush(stdin);
printf("候选人名字:");
scanf("%s",&candidates[i].name);
fflush(stdin);
printf("是否继续输入下一个候选人?(y/n)");
fflush(stdin);
a=getchar();
i++;
}while((a=='y'||a=='Y')&&i<=N);
}void search()
{
int k;
char code[10],b;
do
{
printf("*********************查找候选人*******************\n");
printf("\t请输入想查找的候选人编号\n");
fflush(stdin);
gets(code);
for(k=0;k<i;k++)
{
if(strcmp(code,candidates[k].code)=='0')
{
printf("该候选人已找到!\n");
break;
}
}
if(k>=10)
{
printf("\t查无此人!\n");
}
else
{
printf("\t候选者编号:\t候选者姓名:\n");
printf("\t%c\t%s\n", candidates[k].code,candidates[k].name);
}
printf("\n是否查找其他候选者信息?(y/n)");
fflush(stdin);
b=getchar();
}while(b=='y'||b=='Y');
}void scan()
{
int j;
printf("*********************浏览候选人*******************\n");
printf("\t编号:\t姓名:\n");
for(j=0;j<i;j++)
{
printf("\t%c\t%s\n",candidates[j].code,candidates[j].name);
}
}void vote()
{
char candidate[M][N]; //投票
int n, c=0; //n: 实际投票人数,c: 有效选票
int i,j,k,t;
char tmp[N+1]; //存放投票的中间变量
int s[N]={5,3,2};
printf("*********************为候选人投票*******************\n");
printf("输入投票人数:");
scanf("%d",&n);
for(i=0; i<n; ++i) //输入选票
{
printf("输入第 %d 张选票:", i+1);
scanf("%s",tmp);
candidate[i][0]=tmp[0];
candidate[i][1]=tmp[1];
candidate[i][2]=tmp[2];
if(tmp[0]==tmp[1] || tmp[1]==tmp[2] || tmp[0]==tmp[2])
printf("该票无效:%s\n", tmp);
else
{
//tmp[0]号候选人加5分;
//tmp[1]号候选人加3分;
//tmp[2]号候选人加2分;
c++;
for(j=0; j<N; ++j)
{
for(k=0; k<N; ++k)
if(candidates[k].code==tmp[j])
{
candidates[k].score+=s[j];
}
}
}
}
for(i=0; i<N-1; ++i)//得分排序
{
k=i;
for(j=i+1; j<N; ++j)
{
if(candidates[j].score>candidates[k].score)
{
k=j;
}
}
st=candidates[i];
candidates[i]=candidates[k];
candidates[k]=st;
}
if(candidates[0].score==candidates[1].score)
{
printf("前两名得分是否相同,都是 %d 分,重新投票。", candidates[0].score);
}
else
{
printf("候选人\t得分\n");
for(i=0; i<N; ++i)
printf("%c\t%d\n", candidates[i].code, candidates[i].score);
printf("祝贺 %c 当选冠军!\n", candidates[0].code);
}
}int main()
{
int key;
do
{
printf("*************************************************************\n");
printf("****************** **欢迎进入投票系统***********************\n");
printf("*************************************************************\n");
printf("** 1.创建新的候选人 2.查询单个候选人信息 **\n");
printf("** 3.浏览所有候选人信息 4.投票 5.退出 **\n");
scanf("%d",&key);
switch(key)
{
case 1:addcandidate();break;
case 2:search();break;
case 3:scan();break;
case 4:vote();break;
case 5:break;
dsfault:break;
}
}while(key!=5);
return 0;
}