본문 바로가기
C프로그래밍/C언어 문제풀이

[C언어] 문자열 예제풀이

by zldn 2025. 2. 17.

 

[ 문제 1 ][레벨 0] 사용자로부터 공백을 포함하지 않는 문자열을 입력 받은 후 소문자만 출력하는 프로그램을 작성하시오.

- 입력 받는 문자열 길이는 최대 20 이다.

입력예시 출력예시
HelloWorld
elloorld
#include <stdio.h>
#include <string.h>


int main(){
    char str[21];

    scanf("%s", str);

    for(int i=0;i<21;i++){
        if(str[i] == '\0') break;
        if(str[i] >= 'a' && str[i] <= 'z'){
            printf("%c",str[i]);
        }
    }

}

 

[ 문제 2 ][레벨 0] 임의의 정수를 입력으로 받아, 정수를 한 자리씩 문자로 변환시켜, 마 지막 자릿수부터 차례로 문자 배열에 저장한 후 출력하는 프로그램을 작성 하시오.
▶ 출력 시 문자열 출력 %s 를 사용한다. (%c 사용금지)

- 입력 받는 숫자는 최대 9 자리 수이다.

입력예시 출력예시
9756
6579
#include <stdio.h>
#include <string.h>


int main(){
   int N, i=0;
   scanf("%d", &N);

   char str[10];
   
   while(N != 0){
    str[i++]= N%10 + '0'; 
    N /= 10;
   }

   str[i] = '\0';

    printf("%s",str);

   
}

 

[ 문제 3 ][레벨 0] 사용자로부터 공백을 포함하지 않는 문자열을 하나 입력 받아 예제와 같이 한 칸씩 미루며 출력하는 프로그램을 작성 하시오.

- 입력 받는 문자열 길이는 최대 100 이다.

▶ 출력 시 문자열 출력을 사용한다. (%c 사용금지)

입력예시 출력예시
abcde
abcde
bcdea
cdeab
deabc
eabcd
#include <stdio.h>
#include <string.h>


int main(){
    char str[101];

    scanf("%s", str);

    int cnt=0;
    for(int i=0;str[i]!='\0';i++){
        cnt++;
    }

    for(int i=0;i<cnt;i++){
        printf("%s\n",str);

         char tmp;
        tmp = str[0];
        for(int j=0;j<cnt-1;j++){
            str[j] = str[j+1];
        }
        str[cnt-1] = tmp;
    }
    
}

 

[ 문제 4 ][레벨 0] 사용자로부터 공백을 포함하지 않는 문자열 2개를 받아서, 이들 문자 열이 일치하는지를 검사하는 프로그램을 작성하시오.

- 단, 표준 문자열 처리 함수 strlen( )와 strcmp( ) 사용금지
- 입력 받는 2개의 문자열 길이는 최대 100이다.
- 첫 번째 문자열의 길이를 출력하고, 일치하면 1 불일치하면 0을 출력하시오.

입력예시 출력예시
Hello
World
5 0
#include <stdio.h>
#include <string.h>


int main(){
    char str1[101], str2[101];
    int cnt1 = 0, cnt2 = 0, flag = 0;

    scanf("%s", str1);
    scanf("%s", str2);

    for(int i=0 ; str1[i] != '\0' ; i++){
        cnt1++;
    }
    for(int i=0 ; str2[i] != '\0' ; i++){
        cnt2++;
    }

    printf("%d", cnt1);

    if(cnt1==cnt2){
        for(int i=0;i<cnt1;i++){
            if(str1[i] == str2[i]){
                flag++;
            }
        }
        if(flag==cnt1) printf(" 1");
        else printf(" 0");

    }
    else{
        printf(" 0");
    }
   
}

 

[ 문제 5 ][레벨 1] 사용자에게 공백을 포함하지 않는 영문 문자열 str1, str2와 삽입 위치 를 입력 받은 후, str1의 해당 위치에 str2를 삽입하는 프로그램을 작성하시오.

- 입력 받는 각각의 문자열 길이는 최대 20 이다. - 삽입 위치는 str1의 길이 보다 항상 작거나 같다.

- 삽입 위치 0은 첫 번째 위치에 삽입하라는 의미이다. (0, 1, 2, ...)

- str1, str2 이외의 문자열을 선언하지 않고, str1에 결과를 저장 후 출력한다.

▶ 출력 시 문자열 출력을 사용한다. (%c 사용금지)

입력예시 출력예시
abcde
123
2
ab123cde
#include <stdio.h>
#include <string.h>


int main(){
    char str1[41], str2[21];
    int N, cnt1 = 0, cnt2 = 0;

    scanf("%s", str1);
    scanf("%s", str2);
    scanf("%d", &N);

    for(int i=0;str1[i]!='\0';i++){
        cnt1++;
    }
    for(int i=0;str2[i]!='\0';i++){
        cnt2++;
    }

    for(int i=0;i<cnt1-N;i++){
        str1[N+cnt2+i]=str1[N+i];
    }
    for(int i=0;i<cnt2;i++){
        str1[N+i]=str2[i];
    }

    printf("%s", str1);

}

 

[ 문제 6 ][레벨 1] 앞의 [ 문제 5 ]에서 str2의 반전 여부를 추가로 입력 받은 후 입력값 에 따라 정순 또는 역순으로 문자열을 삽입하는 프로그램을 작성하시오.

- [ 문제 5 ]의 제한조건을 따른다.

   0: 정순 삽입, 1: 역순 삽입

▶ 출력 시 문자열 출력을 사용한다. (%c 사용금지)

입력예시 출력예시
abcde
123
2
1
ab321cde
#include <stdio.h>
#include <string.h>


int main(){
    char str1[41], str2[21];
    int N, flag,cnt1 = 0, cnt2 = 0;

    scanf("%s", str1);
    scanf("%s", str2);
    scanf("%d", &N);
    scanf("%d", &flag);

    for(int i=0;str1[i]!='\0';i++){
        cnt1++;
    }
    for(int i=0;str2[i]!='\0';i++){
        cnt2++;
    }


    for(int i=0;i<cnt1-N;i++){
        str1[N+cnt2+i]=str1[N+i];
    }
    if(flag == 0){
        for(int i=0;i<cnt2;i++){
            str1[N+i]=str2[i];
        }
    }
    else if(flag == 1){
        for(int i=cnt2-1;i>=0;i--){
            str1[N++]=str2[i];
        }
    }

    printf("%s", str1);

}

 

[ 문제 7 ][레벨 2] 사용자로부터 정수 N을 입력받아 그 값을 표현하는 문자열로 출력하 는 프로그램을 작성하시오.

- 단, 10000 보다 작은 정수를 입력하시오

- 표기는 다음과 같다.

   ◦ 숫자 영어 표기: one two three four five six seven eight nine
   ◦ 십진수 자릿수 표기: 천 THO 백 HUN 십 TEN (일자리에는 숫자만 출력)

   ◦ 숫자 영에 해당하는 자릿수와 숫자 0은 출력하지 않는다.

입력예시 출력예시
3496
three THO four HUN nine TEN six
#include <stdio.h>
#include <string.h>


int main(){
    int N, cnt=0;
    scanf("%d", &N);

    char num[11][10] = {" ", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

    int tho = N/1000;
    int hun = N %1000/100;
    int ten = N%100/10;
    int one = N%10;

    if(tho){
        printf("%s THO ",num[tho]);
    }
    if(hun){
        printf("%s HUN ",num[hun]);
    }
    if(ten){
        printf("%s TEN ",num[ten]);
    }
    if(one){
        printf("%s", num[one]);
    }

}

'C프로그래밍 > C언어 문제풀이' 카테고리의 다른 글

[C언어] 구조체 예제풀이  (0) 2025.02.24
[C언어] 문자열 예제풀이2  (0) 2025.02.18
[C언어] 포인터 예제풀이  (0) 2025.02.08
[C언어] 배열 예제풀이2  (1) 2025.02.06
[C언어] 함수 예제풀이  (1) 2025.02.03