我正在编写C代码来解决数值问题,我定义了一个100x100矩阵并用值填充它A是矩阵,b是解决方案: A [i] [j] = 1 /(i + j + 1),b [i] =第i行中所有值的总和 以下是我的代码:
#include <stdio.h>
#include <stdlib.h>
#define n 100
int main()
{
double A[n][n];
double b[n];
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
b[i]=0;
A[i][j]=0;
}
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
A[i][j]=1/(i+j+1);
b[i]+=A[i][j];
}
int c=10;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
printf("%lf\t",A[i][j]);
if (c==j) printf("\n");
c=c*10;
}
return 0;
}
每当我点击代码块终止的构建按钮时,都会显示:
跨平台IDE停止工作
然后程序关闭。谁能帮我解决问题?!
答案 0 :(得分:0)
您遇到问题,所有A
都将设为0,juste使用1.
请使用double而不是int
#include <stdio.h>
#include <stdlib.h>
#define n 100
int main()
{
double A[n][n];
double b[n];
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
b[i] = 0;
A[i][j] = 0;
}
for (i = 0 ; i < n; i++)
for (j = 0; j < n; j++)
{
A[i][j] = 1. / (i + j + 1);
b[i] += A[i][j];
}
int c = 10;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
printf("%lf\t", A[i][j]);
if (c == j) printf("\n");
c *= 10;
}
return 0;
}
答案 1 :(得分:0)
我已经在我的日常环境(LabWindows / CVI - ANSI C编译器)和默认Code ::中构建并运行了 ,就像它 一样块,控制台项目,处于调试模式。在这两种环境中,除了可能出现意外结果外,它的工作正常。 (一旦你进行构建,你可能需要进行一些调试)。
建议您查看您的Code :: Block安装/环境。我不得不重新安装才能让它正常工作,虽然那是很久以前的事了,我记不起具体细节了。
现在,请看:
1) 全局编译器设置 - 工具链可执行文件
我看起来像这样:
2) 全局编译器设置 - 编译器设置
我的全部默认为 未选中
3) 全局编译器设置 - 构建选项
我看起来像这样:
跑步看起来像这样: