You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中按列比较矩阵元素:统计大于等于同列元素次数

问题排查与修复

你的代码核心问题是没有按照「同列其余元素」的要求进行比较,而是错误地让每个元素和矩阵中所有元素(除自身外)做了对比,同时跳过自身的逻辑冗余且不符合需求,导致统计结果完全错误。

具体问题点

  • 多了不必要的列循环:你加了for(col=0;col<2;++col),这会让当前元素和所有列的元素对比,而不是只和**当前列(j列)**的元素对比。
  • 跳过自身的条件错误:同列比较时,只需要排除当前行(row != i)即可,不需要同时判断列,因为列已经固定为当前的j。

修复后的代码

#include<stdio.h>
int main()
{
    int M[2][2]=
    {
    {4,6},
    {9,2},
    };
    int i,j,row;
    int arr[2][2]={0};
    int t;
    for(i=0;i<2;++i)
    {
        for(j=0;j<2;++j)
        {
            t=M[i][j];
            // 只遍历当前列的所有行,不需要列循环
            for(row=0;row<2;++row)
            {
                if(row == i)
                    continue; // 跳过自身,只和同列其他行比较
                if(t >= M[row][j])
                    arr[i][j] += 1;
            }
        }
    }
    printf("The Matrix:\n");
    for(i=0;i<2;++i){
        for(j=0;j<2;++j)
            printf("%d  ",arr[i][j]);
        printf("\n");
    }
    return 0;
}

修复说明

  1. 移除了多余的col循环,固定使用当前列索引j,确保只和同列元素对比。
  2. 简化跳过自身的判断:只需要判断row == i,因为列已经是当前的j,不会出现其他列的情况。
  3. 测试后输出结果为:
The Matrix:
0  1  
1  0  

完全符合预期。

内容的提问来源于stack exchange,提问作者Usual_Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:48:20