有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,并打印输出。

有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,并打印输出。要求用一个input函数输入5个学生数据;用一个print函数打印一个学生数据;并在主函数中调用input和print函数。在此基础上编写求max函数,求平均成绩最高分的学生的数据,编写函数average求总平均分,并在主函数中调用。

#include<stdio.h>
#include<string.h>
struct student{
    char studid[12];
    char name[12];
    int sub1;
    int sub2;
    int sub3;
}data[5];
void main(){
    void input(struct student data[5]);
    void print(struct student data[5]);
    void max(struct student data[5]);
    void average(struct student data[5]);
    input(data);
    printf("学号  姓名  科目一  科目二  科目三\n");
    print(data);
}
 void input(struct student data[]){
     int i;
     printf("请输入相关的学生信息:\n");
     for(i=0;i<5;i++){
    scanf("%s",data[i].studid);
    scanf("%s",data[i].name);
    scanf("%d",&data[i].sub1);
    scanf("%d",&data[i].sub2);
    scanf("%d",&data[i].sub3);
     }
}
 void print(struct student data[]){
    int i;
    
    for(i=0;i<5;i++){
        printf("%s %s %d %d %d",data[i].name,data[i].studid,data[i].sub1,data[i].sub2,data[i].sub3);
        printf("\n");
    }
    
}
void max(struct student data[]){
    int i=0;
    int a[5];
    int max=0;
    max=a[0];
    for(i=0;i<5;i++){
        a[i]=(data[i].sub1+data[i].sub2+data[i].sub3)/3;
        if(strcmp(a[i],a[i+1])<0)
        max=a[i+1];
        printf("%d\n",max);
}

void average(struct student data[]){
    int i=0;
    int all=0;
    int a[5];
    int average=0;    
    for(i=0;i<5;i++){
        a[i]=(data[i].sub1+data[i].sub2+data[i].sub3);
        all+=a[i];
    }
    average=all/5;
    printf("%d\n",average);
}

这是我自己写的,求大佬帮忙改正


#include<stdio.h>
#include<string.h>
struct student{
    char studid[12];
    char name[12];
    int sub1;
    int sub2;
    int sub3;
}data[5];

    void input(struct student data[5]);
    void print(struct student data[5]);
    void max(struct student data[5]);
    void average(struct student data[5]);

void main()
{
    input(data);
    print(data);
	max(data);
	average(data);
	while(1);
}

 void input(struct student data[])
 {
     int i;
     printf("请输入相关的学生信息:\n");
	 printf("学号  姓名  科目一  科目二  科目三\n");
     for(i=0;i<5;i++){
		scanf("%s",&data[i].studid[0],12);
		scanf("%s",data[i].name,12);
		scanf("%d",&data[i].sub1);
		scanf("%d",&data[i].sub2);
		scanf("%d",&data[i].sub3);
     }
	 printf("输入结束:\n");
}
 void print(struct student data[])
 {
    int i;
    
    for(i=0;i<5;i++){
        printf("%s   %s    %d %d %d",data[i].studid,data[i].name,data[i].sub1,data[i].sub2,data[i].sub3);
        printf("\n");
    }
}
void max(struct student data[])
{
    int i=0;
    int a[5];
    float max=0.0;
	int max_name = 0;
    max=(float)a[0];
    for(i=0;i<5;i++){
        a[i]=(data[i].sub1+data[i].sub2+data[i].sub3);
		if(a[i] > max){
			max=(float)a[i];
			max_name = i;
		}
	}
	max = max/3;
	printf("student name =%s,max =%4f\n",data[max_name].name,max);
}

void average(struct student data[])
{
	int i=0;
    float all=0;
    int a[5];
    float average=0;    
    for(i=0;i<5;i++){
        a[i]=(data[i].sub1+data[i].sub2+data[i].sub3);
        all+=(float)a[i];
    }
    average=all/5;
    printf("average = %4f\n",average);
}

 

最后max和average出不来啊

这个已经测试过,运行是没有问题的