Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 이름을 알파벳 순서로 정렬하는 프로그램 완벽 가이드

이 프로그램에서는 사용자가 이름의 개수를 입력하면, strcpy() 함수를 활용하여 입력된 이름들을 알파벳 순서로 정렬합니다.

문자 배열(character array), 즉 문자들의 집합을 문자열(string)이라고 합니다.

문자열 선언

문자열 배열은 다음과 같이 선언합니다.

char stringname[size];

예를 들어, char string[50];은 길이 50자의 문자열을 의미합니다.

문자열 초기화

문자열은 두 가지 방법으로 초기화할 수 있습니다.

단일 문자 상수 사용

char string[10] = { 'H', 'e', 'l', 'l', 'o', '\0' };

문자열 상수 사용

char string[10] = "Hello";

문자열 접근

제어 문자열 "%s"를 사용하면 널 문자('\0')를 만날 때까지 문자열 전체에 접근할 수 있습니다.

strcpy() 함수

strcpy() 함수는 소스 문자열을 대상 문자열로 복사하는 데 사용됩니다. 이때 대상 문자열의 길이는 소스 문자열의 길이보다 크거나 같아야 합니다.

strcpy() 함수의 문법은 다음과 같습니다.

strcpy(대상 문자열, 소스 문자열);

예를 들어,

char a[50];
strcpy("Hello", a);   // 출력: 오류 발생 (인자 순서가 잘못됨)
strcpy(a, "hello");   // 출력: a = "hello"

첫 번째 예시처럼 대상과 소스의 순서가 바뀌면 오류가 발생하므로 주의해야 합니다.

알파벳 순 정렬 로직

이름을 알파벳 순서로 정렬하는 핵심 로직은 다음과 같습니다. strcmp() 함수로 두 문자열을 비교한 후, 순서가 올바르지 않으면 strcpy() 함수를 사용해 두 문자열의 위치를 서로 교환합니다.

for(i=0;i<n;i++){
    for(j=i+1;j<n;j++){
        if(strcmp(str[i],str[j])>0){
            strcpy(s,str[i]);
            strcpy(str[i],str[j]);
            strcpy(str[j],s);
        }
    }
}

전체 프로그램

다음은 이름을 알파벳 순서로 정렬하는 C 프로그램입니다.

#include<stdio.h>
#include<string.h>
main(){
    int i,j,n;
    char str[100][100],s[100];
    printf("Enter number of names :\n");
    scanf("%d",&n);
    printf("Enter names in any order:\n");
    for(i=0;i<n;i++){
        scanf("%s",str[i]);
    }
    for(i=0;i<n;i++){
        for(j=i+1;j<n;j++){
            if(strcmp(str[i],str[j])>0){
                strcpy(s,str[i]);
                strcpy(str[i],str[j]);
                strcpy(str[j],s);
            }
        }
    }
    printf("\nThe sorted order of names are:\n");
    for(i=0;i<n;i++){
        printf("%s\n",str[i]);
    }
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Enter number of names:
5
Enter names in any order:
Pinky
Lucky
Ram
Appu
Bob
The sorted order of names is:
Appu
Bob
Lucky
Pinky
Ram

입력된 5개의 이름이 Appu, Bob, Lucky, Pinky, Ram 순으로 알파벳 순서대로 정렬되어 출력되는 것을 확인할 수 있습니다.