weixin_51970786 2020-12-30 14:59 采纳率: 50%
浏览 8772
已采纳

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

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

  • 写回答

3条回答 默认 最新

  • 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);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因