본문 바로가기
CodeUp 기초 100제/C

CodeUp[코드업] C언어 1020 ~ 1027 : [기초 - 입출력]

by En_Geon 2019. 12. 5.

1020 : [기초 - 입출력] 주민번호 입력받아 형태 바꿔 출력하기

문제 설명 : https://codeup.kr/problem.php?id=1020

 

주민번호를 입력받아 출력하는 문제다.

 

  • 주민번호 앞 6자리와 뒷 7자리의 입력은 '-'로 구분되어 입력된다. 
  • 몇 자리 숫자인지 어떤 숫자가 앞자리에 오는지를 생각한다.
  • %d로 출력할 때 앞자리에 0이 입력되었을 때 어떻게 출력되는지를 생각한다.
더보기

 

#include      <stdio.h>

int main()
{

    int x, y;

    scanf("%d-%d", &x, &y);     

    printf("%06d%d", x, y);    

    // 앞자리는 6자리이고 %d는 0이 입력되었을 때 생략이 되기 때문에 0을 포함하는 %06d를 사용한다.
    return 0;
}

 

1021 : [기초 - 입출력] 단어 1개 입력받아 그대로 출력하기

문제 설명 : https://codeup.kr/problem.php?id=1021

 

한 개의 단어를 입력받아 그대로 출력하는 문제다.

 

  • 문자열을 출력하기 위해 배열을 생성한다.
  • 생성한 배열에는 문자가 저장된다.
  • 앞에서 배운 형식 문자에서 문자열 형식을 사용한다.

배열은 뒤에서 자세히 배우게 된다. 배열은 배열 이름[인덱스]으로 초기화하고 인덱스는 0부터 전체 요소의 개수 -1 범위다.

예를 들어  data[51] = ""; data 배열을 51만큼 초기화했다면 배열은 51칸의 배열이 생긴다.

배열의 시작은 1이 아니고 0부터 시작하는 zero-based index이기 때문에 배열을 끝은 50이 된다. 

 

0번째 배열부터 '문자'를 하나씩 입력받아 저장하고 문자열 형식 문자로 출력하면 '문자열'로 한 개의 단어로 출력된다.

문자열의 끝은 \0(NULL) 문자다. "Hello" 문자열의 배열의 길이를 측정하면 길이는 6개가 되고 6번째 배열에서 \0 문자가 나온다.

문자열은 \0 문자를 만났을 때 끝이 났다고 생각하고 \0 문자를 만나기 전까지를 반환한다. 

 

더보기

 

#include      <stdio.h>

int main()
{
    char data[51] = "";   
    scanf("%s", &data);     
    printf("%s", data);
    return 0;
}

 

1022 : [기초 - 입출력] 문장 1개 입력받아 그대로 출력하기

문제 설명 : https://codeup.kr/problem.php?id=1022

 

공백 문자가 포함되어 있는 문장을 입력받아 그대로 출력하는 문제다.

 

  • fgets()를 사용하면 공백 문자가 포함되어 있는 문장을 입력받아 저장한다.
  • scanf()를 이용해 문장을 입력받으면, 첫 번째 단어까지만 저장된다.
더보기

 

#include      <stdio.h>

int main()
{
    char data[2001];   
    fgets(data, 2000, stdin);
    printf(data);
    return 0;
}

 

1023 : [기초 - 입출력] 실수 1개 입력받아 부분별로 출력하기

문제 설명 : https://codeup.kr/problem.php?id=1023

 

실수를 입력받아 정수 부분과 실수 부분으로 나누어 출력하는 문제다.

 

  • 정수 부분과 실수 부분을 나누어 입력받아 저장한다.
  • 줄 바꿈(개행)을 통해 정수 부분과 실수 부분을 나누어 출력한다.
더보기

 

#include      <stdio.h>

int main()
{
    int x, y;
    scanf("%d.%d", &x, &y);  
    printf("%d\n%d", x, y);     
    return 0;
}

 

1024 : [기초 - 입출력] 단어 1개 입력받아 나누어 출력하기

문제 설명 : https://codeup.kr/problem.php?id=1024

 

단어 1개 입력받아 한 문자씩 나누어 출력하는 문제다.

 

  • for()는 반복문이다.
  • !=는 비교 연산자다.

반복문은 뒤에서 자세히 배운다. 반복문에는 while 반복문과 for 반복문 두 가지가 있다.

for문은 계수에 기반을 둔 반복문이다.

 

연산자는 종류가 많다. 뒤에서 자세히 배울 것이다.

연산자의 우선순위는 매우 중요하기 때문에 먼저 설명한다.

결합성은 연산자 우선순위가 같을 때 어느 쪽을 먼저 연산할 것인지 나타낸다.

 

연산자 우선순위

우선순위

연산자

결합성

1

( )  [ ] .  ->

2

*  &  !  ++  --  (datatype)  sizeof  -

3

*  &  /

4

+  -

5

<<  >>

6

<  >  <=  >=

7

==  !=

8

&

9

^

10

|

11

&&

12

||

13

?:

14

=  +=  -=  *=  %=  /=  &=  |=  ^\  <<=  >>=

15

,

 

더보기

 

#include      <stdio.h>

int main()
{
    char x[20];     // x는 배열 0 ~ 19
    scanf("%s", &x);   
    
    for (int i = 0; x[i]!='\0'; i++) {
        printf("\'%c\'\n", x[i]);
    } // x 배열에서 i번째 배열부터 \0(null) 아닐 때까지 반복하고 \0이 아니면 %c 문자를 출력한다. 
}

 

1025 : [기초 - 입출력] 정수 1개 입력받아 나누어 출력하기

문제 설명 : https://codeup.kr/problem.php?id=1025

 

다섯 자리 정수를 입력받아 각 자리별로 출력하는 문제다.

 

  • *는 곱셈 연산자다.

출력할 때 값을 바꾸어 출력할 수 있다.

예를 들어 a = 1;로 초기화했을 때 printf("%d", a+1); 로 출력하다면 2가 출력된다.

 

더보기

 

#include     <stdio.h>

int main()
{
    int a, b, c, d, e;
    scanf("%1d%1d%1d%1d%1d", &a, &b, &c, &d, &e);
    //scanf("%1d%1d%1d%1d%1d", &a, &b, &c, &d, &e); 를 사용하면 1개의 숫자로 각각 구분되어 저장
    

    printf("[%d]\n[%d]\n[%d]\n[%d]\n[%d]\n", a*10000, b*1000, c*100, d*10, e);
    // 5자리 숫자 각각의 자리 수를 나타내기 위해 첫 째자리부터 곱하여 표현
    return 0;
}

 

1026 : [기초 - 입출력] 시, 분, 초 입력받아 분만 출력하기

문제 설명 : https://codeup.kr/problem.php?id=1026

 

시, 분, 초를 입력받아 분을 출력하는 문제다.

 

  • 시, 분, 초는 ':'(클론)으로 구분되어 입력받는다.
  • 시, 분, 초를 입력받았지만 원하는 값만 출력한다.

아주 간단한 문제다. 원하는 값만 출력을 할 수 있다는 예를 보여주는 문제다.

 

더보기

 

#include      <stdio.h>

int main()
{
    int h, m, s;
    scanf("%d:%d:%d", &h, &m, &s);   
    printf("%d", m);    
    return 0;
}

 

1027 : [기초 - 입출력] 년, 월, 일 입력받아 형식 바꿔 출력하기

문제 설명 : https://codeup.kr/problem.php?id=1027

 

년, 월, 일을 입력받아 형식을 바꾸어 출력하는 문제다.

 

  • 년, 월, 일은 '.'(닷)으로 구분되어 입력받는다.
  • 일, 월, 년으로 출력할 때 일, 월, 년은 '-'로 구분된다.
  • 숫자의 자릿수를 생각하여 출력한다.

앞에서 배웠던 내용을 종합하는 문제다.

위치를 바꾸어 출력, '-' 포함하여 출력, 자릿수에 0을 포함하여 출력하는 종합문제다.

 

더보기

 

#include      <stdio.h>

int main()
{
    int y, m, d;
    scanf("%d.%d.%d", &y, &m, &d);      // 년.월.일을 입력 받음
    printf("%02d-%02d-%04d", d, m, y);  // 일-월-년으로 출력 
    return 0;
}

 

댓글