woshi22yanjiusheng 2021-11-14 17:45 采纳率: 78.9%
浏览 114
已结题

以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素和

编写一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)
例如,矩阵为:
3 0 0 3
2 5 7 3
1 0 4 2
则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。

  • 写回答

1条回答 默认 最新

  • a5156520 2021-11-14 18:30
    关注

    一个简单的实现:

    #include <stdio.h>
    
    int main(void){
        
        int m = 3;
        int n = 4;
        int i = 0;
        int matrix [m*n];
        int sum = 0;
       
        while(i<m*n){
            scanf("%d",&matrix[i]);
            i++;
        }
        
        for(i=0;i<m*n;i++){
            printf("matrix[%d]=%d\n",i,matrix[i]);
        } 
        
        /*
        3 0 0 3
        1 0 4 2 
        
         3 2 1
         
         3 3 2
        
        */ 
        
        //累积矩阵最上层的和 
        for(i=0;i<n;i++){
            sum+=matrix[i];
        }
        printf("最上层:%d\n",sum); 
        
        //累积矩阵最左边的和 
        for(i=0;i<m;i++){
            sum+=matrix[i*n];
        }
        printf("最左边:%d\n",sum); 
        
        //累积矩阵最下层的和 
        for(i=0;i<n;i++){
            sum+=matrix[(m-1)*n+i];
        }
        printf("最下边:%d\n",sum); 
        
        //累积矩阵最右边的和 
        for(i=0;i<m;i++){
            sum+=matrix[(n-1)+i*n];
        }
        printf("最右边:%d\n",sum); 
        
        
        //依次减去重复计算了一次的四个定点的值:左上角,右上角,左下角,右下角 
        sum-= (matrix[0]+matrix[n-1]+matrix[(m-1)*n]+ matrix[m*n-1]); 
        
        printf("%dx%d矩阵的外围和是:%d\n",m,n,sum); 
        
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料