[빡공팟 4기] 1주차: C언어 배우기 코드업 기초 100제(20~30번) write-up
20, 21, 24, 25, 28 write-up.
20번
앞의 6자리는 생년월일(yymmdd)이고 뒤 7자리는 성별, 지역, 오류검출코드이다.
주민번호를 입력받아 형태를 바꿔 출력해보자.
#include <stdio.h>
int main()
{
int n,m;
scanf_s("%d - %d", &n,&m);
printf("%d%d", n, m);
}
변수 n,m를 선언하고, %d를 이용해 입력받는 형태와 출력받는 형태를 정해준다.
서식지정자 %d: 정수값을 출력하는 서식지정자

21번
1개의 단어를 입력받아 그대로 출력해보자. 한 단어가 입력된다. (단, 단어의 길이는 50자 이하이다.)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char data[51];
scanf("%s", data);
printf("%s", data);
return 0;
}
}
char=>character, 문자를 의미한다.
변수 data를 선언하고 크기를 51로 정한다. 단어길이가 50까지 될 수 있다는 뜻이다.
%s: 문자열을 출력하는 서식지정자, 띄어쓰기 한 문자까지만 출력한다.
*비주얼 스튜디오에서는 #define _CRT_SECURE_NO_WARNINGS를 맨처음에 정의하여 scanf 함수를 이용해야 한다.
scanf만 쓰면 에러가 나오고 scanf_s만 쓰면 오류는 없지만 작동이 안된다.

24번
단어(영어) 하나를 입력받는다. (단, 단어의 길이는 20자 이하이다.)
단어의 문자(영어)를 하나씩 나누어 한 줄에 한 개씩 ' '로 묶어서 출력한다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i;
char d[30];
scanf("%s", d);
for (i = 0; d[i] != '\0'; i++)
{
printf("'%c'\n", d[i]);
}
return 0;
}
정수 i와 문자 d를 선언, d의 길이는 29까지다. 30개의 문자를 입력하면 디버그에러가 뜬다.
서식지정자를 이용해 단어를 입력받는다. 이때 %s로 입력받았기 때문에 단어 마지막에 null문자가 자동으로 입력된다.
순서대로 한 문자씩 null인지 아닌지 보고, null이 아니면 해당 문자를 출력하고, 그다음 문자로 넘어가기를 단어가 끝날 때까지 반복.
%c: 문자를 출력하는 서식지정자 (%s는 문자열)

25번
다섯 자리의 정수 1개를 입력받아 각 자리별로 나누어 출력한다.
각 자리의 숫자를 분리해 한 줄에 하나씩 [ ]속에 넣어 출력한다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a,b,c,d,e;
scanf("%1d%1d%1d%1d%1d", &a, &b, &c, &d, &e);
printf("[%d]\n", a * 10000);
printf("[%d]\n", b * 1000);
printf("[%d]\n", c * 100);
printf("[%d]\n", d * 10);
printf("[%d]", e * 1);
return 0;
}
}
1d를 사용하면 1개의 숫자로 각각 구분되어 저장된다.

+
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b, c, d, e;
scanf("%1d%1d%1d%1d%1d", &a, &b, &c, &d, &e);
printf("[%d]\n", a + 2);
printf("[%d]\n", b - 1000);
printf("[%d]\n", c * 100);
printf("[%d]\n", d / 10);
printf("[%d]", e % 1);
return 0;
%d에 들어갈 정수에 대한 연산을 해보았는데 다 가능하다. 나누기 //로 하면 오류뜬다.

정수 1개를 입력받아 그대로 출력해보자.
(단, 입력되는 정수의 범위는 0 ~ 4,294,967,295 이다.)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
unsigned n;
scanf("%u", &n);
printf("%u", n);
return 0;
}
unsigned int: 부호 없는 정수를 뜻하고 범위가 0~4,294,967,295이며 int를 생략할 수 있다.

최댓값을 입력했을 때
