下面程序 Dev C++ 报错 [Error] ld returned 1 exit status 哪里有问题?
#include<stdio.h>#include<string.h>
#include<stdlib.h>
#define M 10
#define K 5
typedef struct singer
{
int num;
char name[M];
float score[K];
float sum;
float aver;
}SIN;
int Menu(void);
int Input(SIN sin[]);
void InPut(SIN sin[],int n);
void mark(SIN sin[],int n);
void PrintScore(SIN sin[],int n);
void Modify(SIN sin[],int n);
void SearchNum(SIN sin[],int n);
void SearchName(SIN sin[],int n);
void Sort(SIN sin[],int n);
void swapc(char x[],char y[]);
void swapf(float *x,float *y);
void swapn(int *x,int *y);
void keep(SIN sin[],int n);
void KeepSort(SIN sin[],int n);
void Deleted(SIN sin[],int n);
void Add(SIN sin[],int n);
int main()
{
char ch;
int n=0;
char a;
SIN sin[20]={0};
printf("ttttt 欢迎使用选手信息管理系统n");
n=Input(sin);
do{
ch=Menu();
switch(ch)
{
case 1:TnPut(sin,n);
mark(sin,n);
printf("-------编号 姓名 五位评委评分 平均分----------n");
PrintfScore(sin,n);
break;
case 2:Modify(sin,n);
break;
case 3:Add(sin,n);
break;
case 4:Deleted(sin,n);
break;
case 5:SearchNum(sin,n);
break;
case 6:Sort(sin,n);
break;
case 7:SearchName(sin,n);
break;
case 0:printf("程序结束n");
exit(0);
default:printf("输入错误!n");
}
printf("您要继续进行操作吗?(输入Y/y继续操作):");
scanf(" %c",&a);
}while(a=='Y'||a=='y');
return 0;
}
int Input(SIN sin[])
{
int i=-1;
do{
i++;
printf("输入编号:n");
scanf("%d ",&sin[i].num);
}while(sin[i].num>=0);
return i;
}
void InPut(SIN sin[],int n)
{
int i,j;
printf("请输入选手姓名以及五位评委评分:n");
for(i=0;i<n;i++)
{
gets(sin[i].name);
for(j=0;j<K;j++)
{
scanf("%f",&sin[i].score[j]);
}
}
}
void mark(SIN sin[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
sin[i].sum=0;
for(j=0;j<K;j++)
{
sin[i].sum+=sin[i].score[j];
}
sin[i].aver=K>0?sin[i].sum/K:-1;
}
}
void PrintScore(SIN sin[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
printf("%d %s",sin[i].num,sin[i].name);
for(j=0;j<K;j++)
{
printf("%f ",sin[i].score[j]);
}
printf("平均分=%f",sin[i].aver);
printf("n");
}
}
void Sort(SIN sin[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(sin[j].aver>sin[k].aver)
{
k=j;
}
}
if(k!=i)
{
swapn(&sin[k].num,&sin[i].num);
swapc(sin[k].name,sin[i].name);
for(t=0;t<K;t++)
{
swapf(&sin[k].score[t],&sin[i].score[t]);
}
swapf(&sin[k].aver,&sin[i].aver);
}
}
}
void swapn(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
void swapc(char x[],char y[])
{
char temp[M];
strcpy(temp,x);
strcpy(x,y);
strcpy(y,temp);
}
void swapf(float *x,float*y)
{
float temp;
temp=*x;
*x=*y;
*y=temp;
}
void SearchNum(SIN sin[],int n)
{
int i,j,k;
printf("请输入要查询的选手号码:n");
scanf("%d",&k);
for(i=0;i<n;i++)
{
if(sin[i].num==k)
{
printf("%d 号选手的信息如下:n",sin[i].num);
printf("姓名:n",sin[i].name);
printf("评分:");
for(j=0;j<K;j++)
{
printf("%f ",sin[i].score[j]);
}
printf("平均分:",sin[i].aver);
printf("n");
return;
}
}
printf("n 未找到该选手 请输入正确编号n");
}
void SearchName(SIN sin[],int n)
{
char x[M];
int i,j;
printf("请输入要查询的姓名:n");
scanf("%s",x);
for(i=0;i<n;i++)
{
if(strcmp(sin[i].name,x)==0)
{
printf("该选手编号:%dn",sin[i].num);
printf("评分:");
for(j=0;j<K;j++)
{
printf("%f ",sin[i].score[j]);
}
printf("平均分:",sin[i].aver);
printf("n");
return;
}
}
printf("n 未找到该选手 请输入正确姓名n");
}
void Modify(SIN sin[],int n)
{
int i,j,a,s;
printf("请输入要修改的选手编号:n");
scanf("%s",&s);
for(i=0;i<n;i++)
{
if(sin[i].num==s)
{
s=i;
printf("请分别输入新编号 姓名以及五位裁判评分:n");
scanf("%d %s",&sin[a].num,sin[a].name);
for(j=0;j<K;j++)
{
scanf("%f",&sin[a].score[j]);
}
sin[a].sum=0;
for(i=0;j<K;j++)
{
sin[a].sum+=sin[a].score[j];
}
sin[a].aver=K>0?sin[a].sum/K:-1;
printf("成绩已修改!n");
return;
}
}
printf("n 未找到该选手 请输入正确编号n");
}
void Deleted(SIN sin[],int n)
{
int i,j,k,s;
printf("请输入要删除的选手编号:n");
scanf("%s",&s);
for(i=0;i<n;i++)
{
if(sin[i].num==s)
{
for(k=1;k<n;k++)
{
sin[i].num=sin[i+1].num;
strcpy(sin[i].name,sin[i+1].name);
sin[i].sum=sin[i+1].sum;
sin[i].aver=sin[i+1].aver;
for(j=0;j<K;j++)
{
sin[i].score[j]=sin[i+1].score[j];
}
}
}
}
printf("成绩已删除!n");
}
void Add(SIN sin[],int n)
{
int i,j;
i=n;
printf("请分别输入选手的编号 姓名以及五位评委评分:n");
scanf("%d %s",&sin[i].num,sin[i].name);
for(j=0;j<K;j++)
{
sin[i].sum+=sin[i].score[j];
}
sin[i].aver=K>0?sin[i].sum/K:-1;
printf("成绩添加成功!n");
}
void keep(SIN sin[],int n)
{
FILE *fp;
int i,j;
if((fp=fopen("歌唱比赛选手信息.txt","w"))==NULL)
{
printf("Failure to open score.txt!n");
exit(0);
}
for(i=0;i<n;i++)
{
fprintf(fp,"%3d%8st",sin[i].num,sin[i].name);
for(j=0;j<K;j++)
{
fprintf(fp,"%0.ft%0.2fn",sin[i].sum,sin[i].aver);
}
fclose(fp);
}
}
void KeepSort(SIN sin[],int n)
{
FILE *fp;
int i,j;
if((fp=fopen("分数由高到低排序.txt","w"))==NULL)
{
printf("Failure to open score.txt!n");
exit(0);
}
for(i=0;i<n;i++)
{
fprintf(fp,"%3d%8st",sin[i].num,sin[i].name);
for(j=0;j<K;j++)
{
fprintf(fp,"%0.ft",sin[i].score[j]);
}
fprintf(fp,"%0.ft%0.2fn",sin[i].sum,sin[i].aver);
}
fclose(fp);
}
int Menu(void)
{
int itemSelected;
printf("n");
printf("----------------- 选手信息管理系统 ----------------n");
printf(" 请选择你要进行的操作: n");
printf(" 1.输入并显示选手信息 2.修改选手信息 n");
printf(" 3.添加选手信息 4.删除选手信息 n");
printf(" 5.查询信息(按编号) 6.按编号排序 n");
printf(" 7.查询信息(按姓名) 0.退出 n");
printf(" 请输入你的选择 按回车键结束 n");
scanf("%d",&itemSelected);
return itemSelected;
}