|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <string.h>
struct ren
{
char name[128];
int count;
};
struct ren person[3]={"张三",0,"李四",0,"燕小六",0};
void main()
{
printf("************************************\n投票选出今年的国家形象大使\n************************************\n");
printf("候选人有:张三,李四,燕小六\n请准确输入姓名,否则影响投票结果\n\n\n\n");
//定义数据
char n[128]={0};
struct ren *p=person;
int i=0,j=0;
int max=0;
int index=0;
//输入数据
for(i=0;i<7;i++)
{
printf("请输入第%d票:",i+1);
scanf("%s",n);
for(j=0;j<3;j++)
{
if(strcmp(n,(p+j)->name)==0)
{
(p+j)->count++;
}
}
}
printf("---------------------------------------------------------\n\n");
printf("%s的得到的票数是:%d\n",person[0].name,person[0].count);
printf("%s的得到的票数是:%d\n",person[1].name,person[1].count);
printf("%s的得到的票数是:%d\n\n",person[2].name,person[2].count);
printf("---------------------------------------------------------\n");
//统计得票最多的
max=p->count;
for(i=0;i<3;i++)
{
if(((p+i)->count)>max)
{
max=(p+i)->count;
index=i;
}
}
if(max==person[0].count && person[0].count==person[1].count || person[0].count==person[2].count)
//这样存在一个错误,当person[1].count最大,person[0].count与person[2].count相同时,条件会成立,结果错误。因为&&优先级比||的优先级高,会让前两者结合成一个条件,然后第三个自己是个条件。
{printf("最高得票有相同,需要改日再选"); system("pause"); exit(0);}
if(max==person[1].count && person[1].count==person[2].count)
{printf("最高得票有相同,需要改日再选"); system("pause"); exit(0);}
if(max==person[2].count && person[2].count==person[1].count)
{printf("最高得票有相同,需要改日再选"); system("pause"); exit(0);}
//输出结果
printf("恭喜%s获选!\n",(p+index)->name);
system("pause");
}
|
|