m0_73485625 2022-11-16 09:50 采纳率: 60%
浏览 55
已结题

解答以下问题,如何实现函数是实参的转换

img


看看具体思路,解答以下,此实验题如何实现数组函数的传递,函数的值传递。

  • 写回答

2条回答 默认 最新

  • 语言-逆行者 2022-11-16 11:07
    关注
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    //1、输出每个学生每门课的成绩和平均分
    void task1(int **a,int L,int M){
    int i,j;
    float avg=0.0;
    for(i=0;i<L;i++){
        printf("学生%d{",i+1);
        for(j=0;j<M;j++){
            printf("课程%d:%d  ",j+1,a[i][j]);
            avg+=a[i][j];
        }
        printf("  平均分:%4.1f}",avg/M);
        avg=0.0;
        printf("\n");
    }
    printf("\n");
    }
    
    //2、计算每门课的平均分
    void task2(int **a,int L,int M){
    int i,j;
    float avg=0.0;
    for(i=0;i<M;i++){
        for(j=0;j<L;j++){
            avg+=a[j][i];
        }
        printf("课程%d平均分:%4.1f\n",i+1,avg/L);
        avg=0.0;
    }
    printf("\n");
    }
    
    //3、找出每门课程的最高分和最低分所对应的学生
    void task3(int **a,int L,int M){
    int i,j;
    int max=0,min=100;
    int indexmax=0,indexmin=0;
    for(i=0;i<M;i++){
        for(j=0;j<L;j++){
            if(a[j][i]>max){max=a[j][i];indexmax=j+1;}
            if(a[j][i]<min){min=a[j][i];indexmin=j+1;}
            }
        printf("课程%d最高分为学生%d,最低分为学生%d\n",i+1,indexmax,indexmin);
        indexmax=0;
        indexmin=0;
        max=0;
        min=100;
    }
        printf("\n");  
    }
    
    //4、计算平均分方差
    void task4(int **a,int L,int M){
    float result=0.0,xi=0.0;
    float avgi=0.0;
    float avg[L];
    int i,j;
    //存储每一个学生的平均分
    for(i=0;i<M;i++){
        for(j=0;j<L;j++){
            avgi+=a[j][i];
        }
        avg[i]=avgi/L;
        avgi=0.0;
    }
    //计算Xi
    for(i=0;i<L;i++){
       xi=xi+avg[i];
    }
    for(i=0;i<L;i++){
        result=result+(pow(avg[i],2)-pow(xi/L,2));
    }
    printf("平均分方差为:%.2f",result/L);
    
    }
    
    
    int main(){
    int M,L;
    printf("请输入L(人数)和M(课程)的值:(空格隔开数据)\n");
    scanf("%d%d",&L,&M);
    int **a=malloc(sizeof(int)*M*L);//动态申请数组
    int i,j;
    //获取学生的成绩
    for(i=0;i<L;i++){
        for(j=0;j<M;j++){
            scanf("%d",&a[i][j]);
        }
    }
    
    task1(a,L,M);
    task2(a,L,M);
    task3(a,L,M);
    task4(a,L,M);
    
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月24日
  • 已采纳回答 11月16日
  • 创建了问题 11月16日