标题:高手进,有个问题解决不了(在线等待)
只看楼主
benkangta
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-9-5
 问题点数:0 回复次数:1 
高手进,有个问题解决不了(在线等待)
#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分,
但最后算出来不如我所愿,请高手救救我......
搜索更多相关主题的帖子: 问题解决 在线 
2008-09-05 09:41
benkangta
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-9-5
得分:0 
本人很菜..高手救救
2008-09-05 10:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-231528-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072551 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved