weixin_51970786
2020-12-30 14:59
采纳率: 100%
浏览 2.6k

有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);
}

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • huhuren12 2020-12-30 16:57
    已采纳
    
    #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);
    }
    
    点赞 4 打赏 评论
  • huhuren12 2020-12-30 16:58

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

    点赞 打赏 评论