写了如下的代码,但是好多错误.,运行不了.求指正:
#include
#include
struct hxr
{
int m;
int point;
}
hxr[3];
main()
{
#include
#include
#include
#define NUM 20
struct FOOD
{
char c;
int num;
}
number[3];
struct VOTE
{
char C1;
char C2;
char C3;
}vote[NUM];
void count(char c,int n);
void menu();
int loadvote()
{
FILE *fp;
int i;
if((fp=fopen("voter.txt","r"))==NULL)//
{
printf("\n不能打开此文件\n");
return 0;
}
for(i=0;!feof(fp);i++)//
{
fscanf(fp,"%s%s%s",&vote[i].C1,&vote[i].C2,&vote[i].C3);
}
fclose(fp);
return(i);
}
void select()
{
int m,w;
do //
{
puts("下一个");
puts("\t\t-------------------------------------------");
puts("\t\t{ }");
puts("\t\t{1.返回 }");
puts("\t\t{2.退出 }");
puts("\t\t-------------------------------------------");
printf("请选择你的数字(1-2):[ ]\b\b");
scanf("%d",&m);
if(m<1||m>2)
{
w=1;
printf("错误");
select();
}
else
w=0;
switch(m)
{
case 1:
{
printf("\n\n");
menu();
break;
}
case 2:
exit(0);
}
}while(w==1);
}
void innum()
{
int i=loadvote();
printf("\n选票人数:\t%d\n\n",i);
select();
}
void add(char C1,char C2,char C3)
{
int i;
for(i=0;i<3;i++)
{
switch(i)
{
case 0:
{
count(C1,5);
break;
}
case 1:
{
count(C2,3);
break;
}
case 2:
{
count(C3,2);
}
}
}
}
void count(char c,int n)
{
switch(c)
{
case'a':
number[0].num+=n;
break;
case'b':
number[1].num+=n;
break;
case'c':
number[2].num+=n;
}
}
void input()
{
int i;
int m=loadvote();
printf("\n");
number[0].num=number[1].num=number[2].num=0;
for(i=0;i
{
printf("%c%c%c",vote[i].C1,vote[i].C2,vote[i].C3);
if(vote[i].C1==vote[i].C2||vote[i].C1==vote[i].C3||vote[i].C2==vote[i].C3)
{
printf("\t该票无效\n");
}
else
{
add(vote[i].C1,vote[i].C2,vote[i].C3);
printf("\n");
}
}
printf("\n");
select();
}
void output()
{
int n,i;
n=loadvote();
number[0].num=number[1].num=number[2].num=0;
for(i=0;i
{
printf("%c%c%c",vote[i].C1,vote[i].C2,vote[i].C3);
if(vote[i].C1==vote[i].C2||vote[i].C1==vote[i].C3||vote[i].C2==vote[i].C3);
else
{
add(vote[i].C1,vote[i].C2,vote[i].C3);
printf("\n");
}
}
printf("\n候选人的得分\t");
printf("a:\t%d\n",number[0].num);
printf("b:\t%d\n",number[1].num);
printf("c:\t%d\n",number[2].num);
select();
}
main()
{
void choose();
menu();
}
void menu()
{
void choose();
int n,w;
do{
puts("\t\t-------------------------------------------");
puts("\t\t{ }");
puts("\t\t{1.选票人数 }");
puts("\t\t{2.选票信息 }");
puts("\t\t{3.分数 }");
puts("\t\t{4.结果 }");
puts("\t\t{5.退出 }");
puts("\t\t{ }");
puts("\t\t-------------------------------------------");
printf("请选择你的数字(1-5):[ ]\b\b");
scanf("%d",&n);
if(n<1||n>5)
{
w=1;
getchar();
}
else
w=0;
}while(w==1);
switch(n)
{
case 1:
innum();
break;
case 2:
input();
break;
case 3:
output();
break;
case 4:
choose();
break;
case 5:
exit(0);
}
}
void choose()
{
int c;
if(number[0].num>number[1].num>number[2].num)
{
c=1;
}
else if(number[1].num>number[2].num>number[0].num)
{
c=2;
}
else if(number[2].num>number[1].num>number[0].num)
{
c=3;
}
else
{
printf("重新选票\n");
main();
}
switch(c)
{
case 1:
printf("\n祝贺a获得冠军!\n\n\n");
select();
case 2:
printf("\n祝贺b获得冠军!\n\n\n");
select();
case 3:
printf("\n祝贺c获得冠军!\n\n\n");
select();
}
}