请便程高手看一下这个C程序的问题
undefined symbol '_main ' in module C0S
输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。要求:
1)排序用一个函数实现。
#include <stdio.h>
#define SIZE 10
struct student
{char name[10];
int num;
int score[3];
float ave;
} studa[SIZE];
main()
{ void save(void); /*声明函数*/
int i;
float sum[SIZE];
FILE *fp1;
for (i=0;i <SIZE;i++) /*输入学号、数学、英语、计算机数据,求总分、平均分*/
{scanf(”%s %d %d %d %d”,studa[i].name,&studa[i].num,&studa[i].score[0], &studa[i].score[1],
&studa[i].score[2]);
sum[i]= studa[i].score[0]+ studa[i].score[1]+ studa[i].score[2];
studa[i].sum= sum[i];
studa[i].ave=sum[i]/3;
}
save(); /*对save函数进行调用*/
void sor(void); /*声明函数*/
int i;
FILE *fp;
sor(); /*对sor函数进行调用*/
fp=fopen(”stu_sor.dat”,”rb”);
printf(”Name No. Mathematics English Computer Sum Ave \n”);
for (i=0;i <SIZE;i++)
{fread(&studa[i],sizeof(struct student),1,fp);
printf(”%-10s %3d %8d %8d %8d %9.2f\n”,studa[i].name, studa[i].num, studa[i].score[0],
studa[i].score[1], studa[i].score[2], studa[i].sum, studa[i].ave);
}
fclose(fp);
}
void save(void) /*save函数的功能为向文件stu.dat输出数据*/
{FILE *fp;
int i;
if((fp=fopen(”stu.dat”,”wb”))==NULL)
{printf(”The file can not be opened\n”);
return;}
for(i=0;i <SIZE;i++)
if(fwrite(&studa[i],sizeof(struct student),1,fp)!=1)
{printf(”Error\n”);
return;}
fclose(fp);
}
void sor(void) /*sor函数的功能为排序*/
{FILE *fp1, *fp2;
int i,j;
if((fp1=fopen(”stu.dat”,”rb”))==NULL)
{printf(”The file can not be opened\n”);
exit(0);}
if((fp2=fopen(”stu_sor.dat”,”wb”))==NULL)
{printf(”Error\n”);
exit(0);}
for(i=0;i <SIZE;i++)
if(fread(&studa[i],sizeof(struct student),1,fp1)!=1)
{printf(”Error\n”);
exit(0);}
for(i=0;i <SIZE;i++)
{for(j=i+1;j <SIZE;j++)
if(studa[i].ave <stud[j].ave)
{work=studa[i];
studa[i]=studa[j];
studa[j]=work;}
fwrite(&studa[i],sizeof(struct student),1,fp2);
}
fclose(fp1);
fclose(fp2);
}
[解决办法]
错误太多
main函数里有两个文件指针;
函数声明不能写在main中;
层次太混乱;
[解决办法]
{scanf(”%s %d %d %d %d”,studa[i].name,&studa[i].num,&studa[i].score[0], &studa
中文标点
studa[i].sum= sum[i]; SUM??
int i; 重复
fp=fopen(”stu_sor.dat”,”rb”);中文标点
整程序标点全是中文
[解决办法]
希望LZ耐心看书,写代码要讲究工整
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
struct student
{
char name[10];
int num;
int score[3];
float sum;
float ave;
} studa[SIZE];
int main()
{
void save(void); /*声明函数*/
void sor(void); /*声明函数*/
int i;
float sum[SIZE];
for (i=0; i <SIZE; i++) /*输入学号、数学、英语、计算机数据,求总分、平均分*/
{
scanf( "%s%d%d%d%d ", studa[i].name,&studa[i].num,&studa[i].score[0],&studa[i].score[1],
&studa[i].score[2]);
sum[i]= studa[i].score[0]+ studa[i].score[1]+ studa[i].score[2];
studa[i].sum = sum[i];
studa[i].ave = sum[i]/3;
}
save(); /*对save函数进行调用*/
sor(); /*对sor函数进行调用*/
FILE *fp;
fp=fopen( "stu_sor.dat ", "rb ");
printf( "Name No. Mathematics English Computer Sum Ave \n ");
for (i=0; i <SIZE; i++)
{
fread(&studa[i],sizeof(struct student),1,fp);
printf( "%-5s %3d %8d %8d %8d %9.2f\n ",studa[i].name, studa[i].num, studa[i].score[0],
studa[i].score[1], studa[i].score[2], studa[i].sum, studa[i].ave);
}
fclose(fp);
return 1;
}
void save() /*save函数的功能为向文件stu.dat输出数据*/
{
FILE *fp;
int i;
if((fp = fopen( "stu.dat ", "wb ")) == NULL)
{
printf( "The file can not be opened\n ");
return;
}
for(i=0; i <SIZE; i++)
{
if(fwrite(&studa[i],sizeof(struct student), 1, fp)!=1)
{
printf( "Error\n ");
return;
}
}
fclose(fp);
}
void sor() /*sor函数的功能为排序*/
{
FILE *fp1, *fp2;
int i,j;
if((fp1=fopen( "stu.dat ", "rb "))==NULL)
{
printf( "The file can not be opened\n ");
exit(0);
}
if((fp2=fopen( "stu_sor.dat ", "wb "))==NULL)
{
printf( "Error\n ");
exit(0);
}
for(i=0;i <SIZE;i++)
if(fread(&studa[i],sizeof(struct student),1,fp1)!=1)
{
printf( "Error\n ");
exit(0);
}
student work;
for(i=0; i <SIZE; i++)
{
for(j=i+1;j <SIZE;j++)
{
if(studa[i].ave <studa[j].ave)
{
work=studa[i];
studa[i]=studa[j];
studa[j]=work;
}
}
fwrite(&studa[i],sizeof(struct student),1,fp2);
}
fclose(fp1);
fclose(fp2);
}
[解决办法]
楼上都说过的偶不说,
undefined symbol '_main ' in module C0S
编程环境(可能是TC吧)中的库文件路径设置不正确或者没有设置。