局部函数定义非法和遇到意外的文件结尾的情况 ,我不知道哪里有问题,谢谢大佬
#include<stdio.h>
#include<stdlib.h>
#define NUM 20 //学生人数
#define NL 20 //名字字节长度
typedef struct student{//定义一个结构体
const char *name[NL];
const char *id[NUM];
float ach[3];
//Computer programming
//Physical Education
//Communication and Research
float sum;
float avg;
}STU;
STU stu[NUM];
int itemSelected=-1;
int Menu();//菜单
void chose(int itemSelected);//选择
void inputScore();//输入分数
void AverofS();//每名学生总分和平均分
void findByNum();
void findByName();
void printScore();
void main(){
while(1){
itemSelected=Menu();
chose(itemSelected);
itemSelected=-1;
}
}
int Menu(){
int itemSelected;
system("cls");
printf("\n ==============Student achievement management system===============\n");
printf("\t 1.Input student number, name and scores of each subject\n");
printf("\t 2.Display student information\n");
printf("\t 3.Calculate the total score and bureau score of each student\n");
printf("\t 4.Query student ranking and examination results by student number\n");
printf("\t 5.Search student rankings and grades by name\n");
printf("\t 0.END\n");
printf("===============================================\n");
printf("Please select an option:");
scanf("%d",&itemSelected);
return itemSelected;
}
void chose(int itemSelected){
switch(itemSelected){
case 1: inputScore(); break;
case 2: printScore();break;
case 3: AverofS();break;
case 4: findByNum();break;
case 5: findByName();break;
case 0: exit(0);
printf("About to exit the program");break;
default: printf("Input error!");break;
}
}
void inputScore (){
int i;
printf("\n===============================================\n");
printf("Please input student number, name and subject information(Enter 0 to stop information input)\n");
for(i=0;i<NUM;i++){
printf("Student ID(zy00*)\n");
scanf("%s",&stu[i].id);
if(stu[i].id==0) break;
getchar();//Absorb extra line breaks
printf("name\n");
scanf("%s",stu[i].name);
printf("Please input the score of each subject\n");
stu[i].sum=0;
for(int j =0;j<3;j++){
scanf("%f",&stu[i].ach[j]);
stu[i].sum +=stu[i].ach[j];
}
}
}
void printScore(){
int m=0;
float sum[NUM]={0};
float average[NUM]={0};
for (int i=0;i<NUM;i++){
for(int j=0;j<3;j++){
sum[i]+=stu[i].ach[j];
}
average[i]=sum[i]/3;
printf("==============Here is the student information==============");
for(int z=0;z<NUM;z++){
printf("The student's student number is:%d\n",stu[z].id);
printf("The student's name is:");
for(int k=0;k<NL;k++){
printf("%c",stu[z].name[k]);
}
printf("\nThe student's scores in various subjects are\n");
for(int c=0;c<m;c++){
printf("The result of the %dcourse is %.2f\n",c+1,stu[z].ach[c]);
}
printf("The student's total score is:%.2f",stu[z].sum);
printf("\nThe average score is%.2f",average[i]);
printf("\n");
}
getch();
}
void AverofS (){
float sum[NUM]={0};
float average[NUM]={0};
for (int i=0;i<n;i++){
for(int j=0;j<3;j++){
sum[i]+=stu[i].arc[j];
}
average[i]=sum[i]/3;
printf("The total score of Student%dis:%.2f,The average score is%.2f\n",i+1,sum[i],average[i]);
}
getch();
}
void findByNum() {
int is_find=0;
char find[NUM];
//记录需要查找的学号,并作为查找成功与否的标识符
printf("Please enter the name you want to find:");
getchar();
gets(find);
for(int i=0;i<n;i++){
if(strcmp(stu[i].id,find)==0){
printf("\nSearch success\n");
printf("The student's student number is:%d\n",stu[j].id);
printf("The student's name is:");
for(int k=0;k<NL;k++){
printf("%c",stu[i].name[k]);
}
printf("\nThe student's scores in various subjects are\n");
for(int c=0;c<m;c++){
printf("The result of the %dcourse is %.2f\n",c+1,stu[i].arc[c]);
}
printf("The student's total score is:%.2f",stu[i].sum);
printf("\n");
is_find=1;
}
}
if(is_find!=1){
printf("There is no such person\n");
}
getch();
}
void findByName() {
int is_find=0;
char find[NUM];
//记录需要查找的姓名,并作为查找成功与否的标识符
printf("Please enter the name you want to find:");
getchar();
gets(find);
for(int i=0;i<n;i++){
if(strcmp(stu[i].name,find)==0){
printf("\nSearch success\n");
printf("The student's student number is:%d\n",stu[i].id);
printf("The student's name is:");
for(int k=0;k<NL;k++){
printf("%c",stu[i].name[k]);
}
printf("\nThe student's scores in various subjects are\n");
for(int c=0;c<m;c++){
printf("The result of the %dcourse is %.2f\n",c+1,stu[i].arc[c]);
}
printf("The student's total score is:%.2f",stu[i].sum);
printf("\n");
is_find=1;
}
}
if(is_find!=1){
printf("There is no such person\n");
}
getch();
}