qq_37996584
CHN_WZY2121_yuyu
采纳率50%
2017-12-15 04:48 阅读 3.6k

PTA提交一个用C语言写的程序 出现段错误,帮忙看看是哪的问题。谢谢

5

#include

int m, n;

int main()
{
int h_l[10];
int i, j, pos_i = 0, pos_j = 0;
int h_i = 0, len = 0;
while (1)
{
int L[10][10];
int min = 65535;
if ((scanf("%d %d", &m, &n)) == 2) //输入数据
{
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
if ((scanf("%d", &L[i][j])) == 1)
;
else
break;
}
}
}
else
break;

    if (m == 0 && n == 0)
        break;

    for (i = 0; i < m; i++)
    {
        for ( j = 0; j < n; j++)
        {
            if (L[i][j]<min)
            {
                min = L[i][j];
                pos_i = i;
                pos_j = j;
            }
        }
        if (min == 0)
            break;
    }
    len++;
    h_l[h_i] = pos_i;
    h_l[h_i + 1] = pos_j;
}

for (int k = 0; k < len; k = k + 2)
    printf("%d %d\n", h_l[k] + 1, h_l[k + 1] + 1);

return 0;

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2017-12-15 04:51

    m和n会不会大于10了,那样超过你数组的容量,越界就会出现段错误。

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2017-12-15 04:56

    h_l[h_i] = pos_i;
    h_l[h_i + 1] = pos_j;
    这里下标会不会越界呢。

    点赞 评论 复制链接分享
  • qq_37996584 CHN_WZY2121_yuyu 2017-12-15 05:14

    谢谢帮忙,问题我通过把数组大小改大解决了。虽然之前都没有越界。

    点赞 评论 复制链接分享
  • every_day_ luo_han 2017-12-15 05:16

    在while循环中,你的h_i值一直是0 ,
    当你while循环差过10次之后, len > 10 下面的for循环中h_l[k + 1]会超过10
    for (int k = 0; k < len; k = k + 2)
    printf("%d %d\n", h_l[k] + 1, h_l[k + 1] + 1);

    点赞 评论 复制链接分享
  • qq_38219953 qq_38219953 2017-12-15 05:17

    if (m == 0 && n == 0)
    break;

    for (i = 0; i < m; i++)
    {
        for ( j = 0; j < n; j++)
        {
            if (L[i][j]<min)
            {
                min = L[i][j];
                pos_i = i;
                pos_j = j;
            }
        }
        if (min == 0)
            break;
    }
    len++;
    h_l[h_i] = pos_i;
    h_l[h_i + 1] = pos_j;
    

    }

    for (int k = 0; k < len; k = k + 2)
    printf("%d %d\n", h_l[k] + 1, h_l[k + 1] + 1);

    return 0;

    点赞 评论 复制链接分享

相关推荐