m0_52594097 2021-06-18 02:10 采纳率: 50%
浏览 104
已采纳

C语言局部函数定义非法和遇到意外的文件结尾的问题

局部函数定义非法和遇到意外的文件结尾的情况 ,我不知道哪里有问题,谢谢大佬

#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();

}

 

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-06-18 05:02
    关注

    已经改好并且能正常运行了,小错误很多啊

    #include<stdio.h>
    #include<stdlib.h>
    #include <conio.h>
    #include <string.h>
    
    #define NUM 20  //学生人数
    #define NL 20   //名字字节长度
    typedef struct student{//定义一个结构体
    	char name[NL];
    	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(strlen(stu[i].id) > 0 && stu[i].id[0]=='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(){
    	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:%s\n",stu[z].id);
    		printf("The student's name is:%s",stu[z].name);
    		printf("\nThe student's scores in various subjects are\n");
    		for(int c=0;c<3;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[z]);
    		printf("\n");
    	}
    	getch();
    }
    
    void AverofS ()
    {
    	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("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<NUM;i++)
    	{
    		if(strcmp(stu[i].id,find)==0)
    		{
    			printf("\nSearch success\n");
    			printf("The student's student number is:%s\n",stu[i].id);
    			printf("The student's name is:");
    			printf("%s",stu[i].name);
    			printf("\nThe student's scores in various subjects are\n");
    			for(int c=0;c<3;c++)
    			{
    				printf("The result of the %d course is %.2f\n",c+1,stu[i].ach[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<NUM;i++)
    	{
    		if(strcmp(stu[i].name,find)==0)
    		{
    			printf("\nSearch success\n");
    			printf("The student's student number is:%s\n",stu[i].id);
    			printf("The student's name is:");
    			printf("%s",stu[i].name);
    			printf("\nThe student's scores in various subjects are\n");
    			for(int c=0;c<3;c++)
    			{
    				printf("The result of the %d course is %.2f\n",c+1,stu[i].ach[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();
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元