2014-03-30 2 views
0
#include <stdio.h> 
#include <string.h> 

int main() { 
    int num, i, j, result, index; 
    char name[100][10]; 
    char temp[10];     
    scanf("%d\n", &num); 
    for(i = 0; i < num; i++) 
     scanf("%s\n", name[i]); 
    for(i = 0; i < num; i++) { 
     index = i; 
     for(j = i + 1; j < num; j++) { 
      result = strcmp(name[index], name[j]); 
      if(result > 0)        
       index = j; 
     } 
     strcpy(temp, name[index]); 
     strcpy(name[index], name[i]);     
     strcpy(name[i], temp); 
    } 

    for(i = 0; i < num; i++) { 
     printf("%s", name[i]); 
     printf("\n"); 
    } 
} 

소문자 영문자보다 많은 단어가 주어졌습니다. 알파벳순으로 정렬해야합니다.온라인 프로그램 챌린지 컴파일러에서 프레젠테이션 오류가 발생했습니다.

알파벳 순서 : 단어가 사전이나 전화 번호부에 구성되는 순서입니다. 예를 들어

,

  • ABC는 XAB 전에 온다. 이유 : 첫 글자가 다릅니다. 그래서, 그들은 비교됩니다. a는 영어 알파벳 x 앞에옵니다.
  • aab 앞에 abc가옵니다. 이유 : 첫 글자는 동일합니다 (aab abc). 따라서 다음 2 글자를 비교합니다 (aab abc).
  • aab은 aab 앞에옵니다. 이유 : aab의 첫 3 글자는 aaba의 처음 3 글자와 같으며 aab에는 비교할 편지가 없습니다. 따라서 길이가 더 짧은 단어가 먼저옵니다 (aab).

입력 - 첫 번째 줄에는 'n'단어가 있고 그 뒤에 단어가 들어있는 n 줄이옵니다.

출력 - 단어는 알파벳순으로 각 행마다 하나씩.

제약 조건 : 각 단어 < = 10

힌트 0 = 100 < N <, 0 < 길이 : 배열 할 수있는 방법을 두 가지 차원을 참조하십시오.

이 프로그램은 온라인 도전

샘플 입력

2 
world 
hello 

샘플 출력

hello 
world 
+0

'이 프로그램은 프레젠테이션 오류를 되 돌린다'는 것은 무엇을 의미합니까? 적어도'printf ("% s", name [i]); printf ("% s \ n", name [i]);'에 printf ("\ n"); –

+2

'name'과'temp'는'name [100] [11]'과'temp [11]'이어야합니다. –

+0

반향은 프리젠 테이션 오류가 발생했지만 출력이 정확하다는 것을 의미합니다. – user3478862

답변

0

선호하는 동적 할당에 프리젠 테이션 오류를 되돌립니다. 왜냐하면 사용자가 100 단어 이상을 입력해야하거나 단어가 10 문자보다 길면 그 단어를 사용할 수 없기 때문입니다.

힌트 : 사람이 malloc에 ​​

0
#include <stdio.h> 
#include <string.h> 

int main(){ 
int num, i, j, result, index; 

char name[100][11]; 

char temp[11]; 

scanf("%d", &num); 

for(i = 0; i < num; i++) 

scanf("%s", name[i]); 

for(i = 0; i < num; i++) 

{ 


index = i; 


for(j = i + 1; j < num; j++) 

{ 


result = strcmp(name[index], name[j]); 


if(result > 0)        


index = j; 

} 


strcpy(temp, name[index]); 

strcpy(name[index], name[i]);     

strcpy(name[i], temp); 

} 

enter code here 

for(i = 0; i < num-1; i++) 

{ 


printf("%s\n", name[i]); 

} 

printf("%s", name[i]); 

return 0; 

} 
-1

프리젠 테이션 오류가 단순히 당신이 오 제시 한 방법은/p는 로보 판사의 데이터베이스와 일치하지 않는 것을 의미한다.
예상되는 답변에 실수를하여 실제 o/p 톨일을 어떻게 표시하는지 확인한 다음 수정할 수 있습니다.

관련 문제