【问题标题】:C program chasing and I can't find the mistakeC程序追着找不到错误
【发布时间】:2022-01-13 17:34:44
【问题描述】:

我刚开始学习编程,但我的 C 代码有问题。想法是创建一个大小为 [m][m] 的方阵,并用 'n' 填充横向和一个对角线空间(用户输入确定 'm' 和 'n' 的值),然后填充其余的带有数字的空格遵循一个模式。但是每次它开始填充空间时,它都会崩溃而没有指出任何警告或错误。 代码如下:

#include<stdlib.h>
#include<stdio.h>


int M[100][100] = {}, l, c;


int ImpMat(int m)
{
    int l, c;
    for(l = 0; l < m; l++)
    {
        printf("\n");
        for(c = 0; c < m; c++)
            printf("%i ", M[l][c]);
    }
}

int Matriz(int m, int n)
{
    int l, c;
    for(l = 0; l < m; l++)
    {       
        for(c = 0; c < m; c++)
        {
            if(c == 0 || c == m - 1 || c + l == m - 1)
                M[l][c] = n;
                    
                else
                    M[l][c] = 0;
                
        }
    }
}



int NumMatI(int m)
{
    int l, c, p, q;
    for(l = 2; l < m; l++)
        for(c = m -2; c >= 1; c++)
        {
            p = l - 1;
            q = c + 1;
            if(l + c > m - 1)
                M[l][c] = M[p][c] + M[p][q];
        }
}



int main()
{
    int m, n;
    printf("Type the value of 'm': ");
    scanf("%i", &m);
    printf("Type the value of 'n': ");
    scanf("%i", &n);
    Matriz(m, n);
    NumMatI(m);
    ImpMat(m);
    
    return 0;
}

函数“ImpMat”只是打印数组,“Matriz”创建数组(大小限制为 100),“NumMatI”是它尝试填充数组的位置。

我已经意识到函数“NumMatI”是导致程序崩溃的函数,但找不到导致它的原因。

我正在使用 Dev-C++。

【问题讨论】:

    标签: c crash


    【解决方案1】:

    for(c = m -2; m &gt;= 1; c++) 中,比较应该以某种方式涉及c

    【讨论】:

    • 谢谢,它看到我错过了,但它仍然崩溃。
    • 所以你的修正是错误的,你不会向任何人展示的那个?
    • 我更正了 ´´´ for(c = m -2; m >= 1; c++)´´´,但我不明白为什么它仍然崩溃
    • 所以您希望有人帮助调试与您发布的(不知何故)不同的代码?
    • 我发布的代码中唯一改变的是` for(c = m - 2; m>= 1; c++ ` to ` for(c = m - 2; c >= 1; c++ `我仍然找不到崩溃的原因。
    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2015-02-08
    相关资源
    最近更新 更多