C-分割故障(核心倾倒)CodeLite Ubuntu



我正在尝试使用气泡排序方法来组织矩阵。我遇到了一个错误,上面显示分段故障(核心倾倒)。我正在使用Ubuntu和Codelite在虚拟机上编程。希望你能帮我。

这是代码。

#include <stdio.h>
#include <stdio.h>
#include <math.h>
int main(){
    int tam, comp, var;
    printf("Ingrese el tamano del array que va a crear:n");
    scanf("%d", tam);
    int arr[tam];
    printf("Ingrese los elementos del array:n");
    for(int i=0; i < tam; i++){
        printf("Elemento arr%d", i+1);
        scanf("%d", &arr[i]);        
    }
    for(int j=0; j < tam; j++){
        for(comp=0; comp<tam; comp++){
            if(arr[comp]<arr[comp+1]){
                var=arr[comp];
                arr[comp]=arr[comp + 1];
                arr[comp + 1]=var;               
            }
        }            
    }
    printf("La matriz en orden descendente es:n");
    for(int i=0; i < tam; i++){
       printf("%d ", arr[i]);        
    }
}

以下提出的代码:

  1. 清洁编译(Linux上的GCC)
  2. 执行所需的操作
  3. 不知道故障
  4. 纠正问题注释中列出的问题
  5. 正确检查I/O错误,并正确地将错误消息路由到stderr
  6. 将数据与使用的位置密切相关。
  7. 利用适当的水平间距进行可读性
  8. 记录为什么包含每个标头文件

建议使用puts()而不是printf()进行不包含任何格式的输出。

现在提出的代码:

#include <stdio.h>    // printf(), scanf(), fprintf(), stderr
//#include <math.h>  <<-- contents not used, so do not include
#include <stdlib.h>   // exit(), EXIT_FAILURE
int main( void )
{
    int tam;
    printf( "Ingrese el tamano del array que va a crear:n" );
    if( 1 != scanf( "%d", &tam ) )
    {
        fprintf( stderr, "scanf for 'tam' failedn" );
        exit( EXIT_FAILURE );
    }
    // implied else, scanf successful

    int arr[tam];
    printf( "Ingrese los elementos del array:n" );
    for( int i=0; i < tam; i++ )
    {
        printf( "Elemento arr%d", i+1 );
        if( 1 != scanf( "%d", &arr[i] ) )
        {
            fprintf( stderr, "scanf for array entry %d failedn", i+1 );
            exit( EXIT_FAILURE );
        }
        // implied else, scanf successful.
    }
    for( int j=0; j < tam; j++ )
    {
        for( int comp=0; comp < (tam-1); comp++ ) // note correction and data scope limiting
        {
            if( arr[comp] < arr[comp+1] )
            {
                int var       = arr[comp];  // note data scope limiting
                arr[comp]     = arr[comp + 1];
                arr[comp + 1] = var;
            }
        }
    }
    printf( "La matriz en orden descendente es:n" );
    for( int i=0; i < tam; i++ )
    {
       printf( "%d ", arr[i] );
    }
}

相关内容

  • 没有找到相关文章