高手进,有个问题解决不了(在线等待)
#include <stdio.h> #include <string.h>
#include <stdlib.h>
char a,b,c;
void menu()
{
printf("*-------欢迎进入055061班委投票系统-------*\n");
printf(" 预设候选人,请按a\n");
printf(" 退出系统,请按b\n");
printf("*----------————————--------------*\n");
}
void choose()
{
printf("请选择a:\n");
char ch;
scanf("%c",&ch);
if(ch=='a')
{
printf("请输入密码:\n");
char str1[20];
char str2[20]={"123"};
scanf("%s",str1);
if(strcmp(str1,str2)==0)
{
printf("请输入您要预设的候选人名单(只能输入三个):\n");
char a1[20],a2[20],a3[20];
struct student
{
char name[20];
};
struct student stu[4];
fflush(stdin);
strcpy(stu[0].name,gets(a1));
strcpy(stu[1].name,gets(a2));
strcpy(stu[2].name,gets(a3));
printf("\tA:%s\t\t\tB:%s\t\t\tC:%s\n",stu[0].name,stu[1].name,stu[2].name);
}
else
{
printf("输入错误!\n");
exit(0);
}
}
else if(ch=='b')
{
printf("谢谢使用,再见!\n");
exit(0);
}
else
printf("无此操作,请重选!\n");
}
struct people{
char index;
int grade;
};
void main()
{
void menu();
void choose();
menu();
choose();
char piao1,piao2,piao3;//分别代表一张票的第一位,第二位和第三位
people a={'a',0},b={'b',0},c={'c',0};//定义的候选人起始状态,包含他的代号和得到的票数
int piaoshu;//总票数
printf("请输入票数,并按回车键:");
scanf("%d",&piaoshu);
printf("请输入票的内容(格式如abc):\n");
for(int i=1;i<=piaoshu;i++)
{
scanf("%c%c%c",&piao1,&piao2,&piao3);
if(piao1==piao2||piao2==piao3||piao1==piao3)//票无效时,输入下一张票
{
printf("此票无效,请输入下一张票\n");
}
else //判断每个人应该分别加几分
{
if(a.index==piao1){a.grade+=2;}
else if(b.index==piao1) {b.grade+=2;}
else if(c.index==piao1) {c.grade+=2;}
if(a.index==piao2){a.grade+=1;}
else if(b.index==piao2) {b.grade+=1;}
else if(c.index==piao2) {c.grade+=1;}
if(a.index==piao3){a.grade+=0;}
else if(b.index==piao3) {b.grade+=0;}
else if(c.index==piao3) {c.grade+=0;}
}
}
printf("三位候选人得分:\n");//输出他们的得分
printf("a:%d\n",a.grade);
printf("b:%d\n",b.grade);
printf("c:%d\n",c.grade);
int max_grade; //定义一个最高分
max_grade=(a.grade>b.grade)?a.grade:b.grade;
max_grade=(max_grade>c.grade)?max_grade:c.grade; //判断三个数中最高分是多少
if(max_grade== a.grade)//判断谁的最高分,如果两个最高相同,则重新投票
{
if((max_grade!=b.grade)&&(max_grade!=c.grade))
{
printf("祝贺a当选班长");
}
else
{
printf("重新投票");
}
}
else if(max_grade==b.grade)
{
if((max_grade!=a.grade)&&(max_grade!=c.grade))
{
printf("祝贺b当选班长");
}
else
{
printf("重新投票");
}
}
else if(max_grade== c.grade)
{
if((max_grade!=a.grade)&&(max_grade!=b.grade))
{
printf("祝贺c当选班长");
}
else
{
printf("重新投票");
}
}
}
我的意思是第一位得2分,第二位的1分,第三位的0分,
但最后算出来不如我所愿,请高手救救我......