【发布时间】: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++。
【问题讨论】: