본문 바로가기

Programming/C

[ProjectH4C] 코드업(CodeUp) 기초 100제 1001~1020 Write-up

#1001   출력하기01

 

어떠한 프로그래밍 언어를 배우든 제일 처음 출력함수에 대해서 배운다. C언어에선 해당 기능을 하는 함수가 printf 이며, 이는 표준입출력 헤더파일(stdio.h)에 정의 되어 있다.

 

#include <stdio.h>

int main() { 
  printf("Hello");

  return 0;
}

 

#1002    출력하기02

#include <stdio.h>

int main(){
  printf("Hello World");

  return 0;
}

#1003    출력하기03

줄 바꾸기 : \n (new line).

#include <stdio.h>

int main(){
  printf("Hello\nWorld");

  return 0;
}

#1004    출력하기04

작은 따옴표 ' ', 큰 따옴표" "는 그 안에 각각 문자, 문자열이 들어있음을 컴파일러에게 알려주는데, 그렇다고 따옴표 안의 따옴표를 문자로 인식하진 않는다. 이들을 문자 그대로 인식하기 위해서는 앞에 \를 붙여주면 된다.

#include <stdio.h>

int main(){
  printf("\'Hello\'");

  return 0;
}

 

#1005    출력하기05

#include <stdio.h>

int main(){
  printf("\"Hello World\"");

  return 0;
}

#1006    출력하기06

 

해당 문자열에서 주의해야 할 문자는 맨 처음의 따옴표 "와 중간의 %와 마지막의 따옴표" 이다. 

위의 세 기호 앞에 각각 \를 붙여주면 된다.

 

% -> 형식 지정자.

#include <stdio.h>

int main(){
  printf("\"!@#$\%^&*()\"");
    
  return 0;
}

#1007    출력하기07

\도 마찬가지로 출력해주기 위해 앞에 \를 붙여서 \\로 입력해야 한다.

#include <stdio.h>

int main(){
  printf("\"C:\\Download\\hello.cpp\"");
    
  return 0;
}

#1008    출력하기08

각각의 특수문자에는 고유의 "유니코드"라는게 부여되는데, C언어 상에서 이 유니코드를 가지고 특수문자를 출력하기 위해선 \u 뒤에 해당하는 유니코드를 입력하면 된다.

#include <stdio.h>

int main(){
  printf("\u250C\u252C\u2510\n");
  printf("\u251c\u253c\u2524\n");
  printf("\u2514\u2534\u2518\n");
    
  return 0;
}

#1010    정수 1개 입력받아 그대로 출력하기

변수 선언: 자료형 변수명;

    ex) int x; char ch;

출력하는 함수가 printf였다면 입력하는 함수는 scanf이다. 이 역시 stdio.h에 정의되어 있다.

scanf("%     ", &변수);

%뒤의 밑줄에 들어갈 문자는 입력 할 값의 형태에 따라 다르다. 문자를 입력하면 c, 정수를 입력하면 d, 실수를 입력하면 f 혹은 lf 등이 있다.

 

주의할 점: 변수 앞에 &를 붙이면 변수의 값이 아닌 변수가 할당 된 메모리상의 주소 값을 뜻함.

변수에 저장된 값을 출력할 때에도 형식은 같지만 변수 앞에 &는 붙지 않는다.

printf("%     ", 변수);

#include <stdio.h>

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

 

 

#1011    문자 1개 입력받아 그대로 출력하기

#include <stdio.h>

int main(){
    char ch;
    
    scanf("%c", &ch);
    printf("%c", ch);
    
    return 0;
}

 

#1012    실수 1개 입력받아 그대로 출력하기

#include <stdio.h>

int main(){
    float f;
    
    scanf("%f", &f);
    printf("%f", f);
    
    return 0;
}

#1013    정수 2개 입력받아 그대로 출력하기

하나의 scanf에서 여러개를 입력 받는 것도 가능하다.

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

위와 같이 작성 한다면 입력 형태는

1 2, 150 200 등과 같이 띄어쓰기로 구분되어 두 개의 정수가 각각 x, y에 저장된다.

#include <stdio.h>

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

 

#1014    문자 2개 입력받아 순서 바꿔 출력하기

위에는 입력 받은 순서대로 변수를 출력 해주었기에 입력과 출력이 같았지만, 출력을 입력의 반대로 해주고 싶다면 변수의 출력을 반대로 해주면 된다.

#include <stdio.h>

int main(){
    char x, y;
    scanf("%c %c", &x, &y);
    printf("%c %c", y, x);
    
    return 0;
}

#1015    실수 입력받아 둘째 자리까지 출력하기

소수점 아래로 원하는 만큼만 출력하기 위해선, 출력 함수에서%f 대신에 %.3f, %.2f 등과 같이 써주면 된다. 소수점 아래 3번째까지 출력하고 싶다면 %.3f로 출력하면 되고, 이 경우에는 4번째 자리에서 반올림 한 수가 출력된다.

#include <stdio.h>

int main(){
    float f;
    scanf("%f", &f);
    printf("%.2f", f);
    
    return 0;
}

 

#1017    정수 1개 입력받아 3번 출력하기

여러개를 출력 할 때 꼭 각기 다른 변수들을 출력해야 하는 것은 아니다.

같은 변수를 여러 번 출력하는 것도 가능하다.

#include <stdio.h>

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

#1018    시간 입력받아 그대로 출력하기

두 개의 정수를 띄어쓰기로 구분해서 입력받는 법은 scanf("%d %d", &x, &y); 였다.

만약 두 정수를 입력 받는데 콜론(:)으로 구분해서 입력 받고자 한다면 scanf("%d:%d", &x, &y); 와 같이 작성하면 된다.

#include <stdio.h>

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

#1019    연월일 입력받아 그대로 출력하기

입력 예시에 년, 월, 일이 .으로 구분되어 입력 된다고 나와있다.

 

처음엔

scanf("%d.%d.%d", &y, &m, &d);
printf("%d.%d.%d", y, m, d);

이렇게 작성하였지만 틀렸다. 자세히 보니 출력예시는 2013.08.05와 같이 월, 일이 두 자리수 형태여야 하는데 작성한 대로라면 

2013.8.5 처럼 한 자리수 형태로 출력되게 된다. 이처럼 강제로 자리수를 맞춰주는 방법을 찾아보니 만약 두 자리수의 형태로 출력하고자 한다면 %d가 아닌 %02d 로 출력해야 한다.

#include <stdio.h>

int main(){
    int y, m, d;
    scanf("%d.%d.%d", &y, &m, &d);
    printf("%04d.%02d.%02d", y, m, d);
    
    return 0;
}

 

 

#1020    주민번호 입력받아 형태 바꿔 출력하기 

XXXXXX-XXXXXXX의 형태로 입력받고 -앞의 숫자를 x, -뒤의 숫자를 y에 저장한 후, 이 둘을 이어서 출력하면 된다.

주의할 점은 0으로 시작하는 경우엔 자리수가 달라지기 때문에 x는 6자리로 출력(%06d), y는 7자리로 출력(%07d)해주어야 한다.

#include <stdio.h>

int main(){
    int x, y;
    scanf("%d-%d", &x, &y);
    printf("%06d%07d", x, y);
    
    return 0;
}