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

有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条)

报告相同问题?

悬赏问题

  • ¥15 【matlab】已知功率谱密度反求时域信号
  • ¥15 mindspore项目_模型适配
  • ¥15 openstack使用cinder后,实例运行时分配的总空间不能大于ceph的总空间
  • ¥15 [pcl::PLYWriter::writeASCII] Error during opening (?鶂?)!
  • ¥15 得到XY两轴的数据如何绘制成圆,输入整形器
  • ¥29 PHP读取PDF文件添加多个数字签名
  • ¥25 联邦学习vgg修改最后一个全连接层报错(默认是1000个输出,我的改为11就报错,改为200就没问题)
  • ¥15 maple画图问题,为什么会是这样
  • ¥15 RC522开发arduino作品刷卡失效
  • ¥15 comsol仿真频域研究以及结果处理