我正在学习 C 编程并尝试编写计算代码。当我的程序运行时,我遇到段错误。
问题出在哪里?
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j,k;
int c,x[10];
printf("Enter the number of springs ");
scanf("%d",&n);
int f[n],s[n],A[n][n+1][n+2]; //declare my variables here
memset(A, 0, n*n+1*n+2*(sizeof(A))); //put all to zeros
//store datas for stiffness and strength
for(i=1;i<=n;i++)
{
printf("Enter the stiffness of spring %d\n",i);
scanf("%d",&s[i]);
}
for(i=1;i<=n;i++)
{
printf("Enter the force applied to the spring %d\n",i);
scanf("%d",&f[i]);
}
for(i=1;i<=n;i++){
printf("\nforce applied in f[i] = %d",f[i]);
}
//computation for element 1 matrix
for(k=1;k<=n;k++)
for(i=1;i<=n+1;i++)
{
for(j=1;j<=n+2;j++)
{
if(j==k||j==(k+1))
A[k][i][j]=s[j];
if(j==n+3)
A[k][i][j]=f[j];
}
}
for(k=1;k<=n;k++)
{
printf("\nmy n=%d matrix is\n",k);
for(i=1;i<=(n+1);i++)
{
for(j=1;j<=(n+2); j++)
printf("%d\t", A[k][i][j]);
printf("\n");
}
}
return 0;
}
最佳答案
更改memset(A,0,n*n+1*n+2*(sizeof(A)));
到
memset( A,0,n*(n+1)*(n+2)*sizeof(int));
还有for
循环初始化应该是 i=0;
和状况i<n
.
关于c - 我在执行代码时收到段错误。有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26478912/