K_blueprint

#15. 입력된 성과 이름을 출력하고 성과 이름의 글자 수를 조건에 맞게 출력하라. 본문

C/실습 문제 모음

#15. 입력된 성과 이름을 출력하고 성과 이름의 글자 수를 조건에 맞게 출력하라.

GODAGO 2024. 2. 2. 23:30
728x90
반응형

< 문제 내용 >

● 먼저 이름을 요청하고, 이어서 다시 을 요청한다. 이후 입력된 성과 이름을 한 라인에 출력하고 그다음 라인에는 성과 이름을 구성하는 글자 수를 아래와 같이 성과 이름의 끝 자리에 맞추어 출력하라.

 

Melissa Honeybee

                                                             7             8

 

이후에는, 아래와 같이 같은 정보를 출력하되 글자 수를 성과 이름의 첫 글자에 맞추어 출력하라.

 

Melissa Honeybee

                                                      7         8

< 입력 조건 >

● 첫째 줄에는 성과 이름을 나타내는 두 개의 문자열이 빈칸을 하나 사이에 두고 주어진다. (단, 각 문자열의 길이는 30을 넘지 않는다.)

 

< 출력 조건 >

● 각 줄의 첫 글자와 마지막 글자로 '*'을 출력한다.

 

< 풀이 코드 >

#include <stdio.h>
#include <string.h>	// 헤더함수 추가 

int main() 
{
    char first_name[50], last_name[50];	// 문자열을 사용하기 위해 배열 사용 

    // 이름과 성 입력 받기
    scanf("%s", first_name);
    scanf("%s", last_name);

    // 이름과 성 출력
    printf("*%s %s*\n", first_name, last_name);
    // 성과 이름의 글자 수를 끝자리에 맞춰서 출력 
    printf("*%*d %*d*\n", (int)strlen(first_name), strlen(first_name),(int)strlen(last_name), strlen(last_name));
    // 이름과 성 출력 
    printf("*%s %s*\n", first_name, last_name);
    // 성과 이름의 글자 수를 첫 자리에 맞춰서 출력 
    printf("*%-*d %-*d*\n", (int)strlen(first_name), strlen(first_name), (int)strlen(last_name), strlen(last_name));

    return 0;
}

 

< 출력 결과 >

 

< 참 고 >

- string.h 헤더파일은 C형식의 문자열을 다룰 수 있는 함수들을 포함하고 있다.

- %* c의 *은 데이터를 받아들이되 무시하라는 의미이다. (즉, 해당 데이터의 길이만 남게 된다.)

- strlen 함수를 사용하여 first_name과 last_name 문자열의 길이를 계산하고, 그 값을 형식지정자 %*d를 사용하여 출력한다.

- %-*d 형식 지정자는 필드의 폭을 음수로 지정하여 왼쪽으로 정렬하도록 만들어준다.

728x90
반응형