繁星曳水 2021-11-15 22:47 采纳率: 73.3%
浏览 105
已结题

求解两道二维数组的c语言题😘

第一题:

img

img


第二题:

img

  • 写回答

1条回答 默认 最新

  • 广大菜鸟 2021-11-16 01:49
    关注

    第一个很简单

    #include<stdio.h>
    #include<memory.h>
    #define MAX_STUDENT 50
    #define MAX_COURSE  5
    double scores[MAX_STUDENT][MAX_COURSE];
    double meanScores[MAX_COURSE];
    int pass[MAX_COURSE];
    int main(){
        int n,m, i,j;
        double sum;
        scanf("%d%d",&n,&m);
        if(n<=0||m<0){
            printf("error\n");
            return -1;
        }
        for( i=0;i<n;i++){
            for(j=0;j<m;j++){
                scanf("%lf",&scores[i][j]);
                if(scores[i][j]<0){
                    printf("error\n");
                    return -1;
                }
            }
        }
        memset(meanScores,0,sizeof(int)*m);//清空
        for(i=0;i<n;i++){
            sum=0;
            for(j=0;j<m;j++){
                sum+=scores[i][j];
                meanScores[j] += scores[i][j];
            }
            printf("%.2lf ",sum/m);
        }
        printf("\n");
        for(j=0;j<m;j++){ 
            meanScores[j] /= n;
            printf("%.2lf ", meanScores[j]);
        }
        memset(pass,0,sizeof(int)*m);//清空
        for(i=0;i<n;i++){
          
            for(j=0;j<m;j++){
               if(scores[i][j]>=meanScores[j]){
                   pass[j]+=1;
               }
            }       
        }
        printf("\n");
        for(j=0;j<m;j++){ 
            printf("%d ", pass[j]);
        }
    }
    
    

    img

    第二个是矩阵偏移计算

    #include<stdio.h>
    #define MAX_M 100
    #define MAX_N 100
    int face[MAX_M][MAX_M];
    int mask[MAX_N][MAX_N];
    int min(int a,int b){return a<b?a:b;}
    void matrix_addition(int m,int n,int x_s,int y_s){
        if(x_s>=m||y_s>=m||x_s<0||y_s<0) return;
        int min_x=m-1, min_y=m-1;
        min_x = min(min_x, x_s + n-1);
        min_y = min(min_y, y_s + n-1);
        int i,j;
        for(i=x_s;i<=min_x;i++){
            for(j=y_s;j<=min_y;j++){
                face[i][j] += mask[i-x_s][j-y_s];
            }
        }
    }
    void displayMatrix(int a[][MAX_N], int m){
        for(int i=0;i<m;i++){
            for(int j=0;j<m;j++){
                printf("%d ",a[i][j]);
            }
            //printf("\n");
        }
        //printf("\n");
    }
    int main(){
        int m,n,count=0;
        int x_s, y_s;
        scanf("%d",&m);
        for(int i=0;i<m;i++){
            for(int j=0;j<m;j++){
                scanf("%d",&face[i][j]);
            }
        }
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                scanf("%d",&mask[i][j]);
            }
        }
        scanf("%d%d",&x_s,& y_s);
        matrix_addition(m,n, x_s, y_s);
        displayMatrix(face,m);
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月17日
  • 已采纳回答 11月16日
  • 创建了问题 11月15日

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统