[英]Segmentation fault (core dumped) 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]);
}
}
以下建議的代碼:
stderr
建議對不包含任何格式的輸出使用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' failed\n" );
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 failed\n", 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] );
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.