构建错误导致代码块退出

时间:2015-04-14 18:10:13

标签: c codeblocks numerical build-error

我正在编写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停止工作

然后程序关闭。谁能帮我解决问题?!

2 个答案:

答案 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) 全局编译器设置 - 工具链可执行文件     我看起来像这样:
enter image description here

2) 全局编译器设置 - 编译器设置
    我的全部默认为 未选中

3) 全局编译器设置 - 构建选项
    我看起来像这样:
enter image description here

跑步看起来像这样:
enter image description here