EYEN

[빡공팟 4기] 2주차: C언어 배우기 코드업 기초 100제(70번 이하)write-up 본문

대외활동 및 팀플/빡공팟(P4C) 시스템 해킹 트랙 4기

[빡공팟 4기] 2주차: C언어 배우기 코드업 기초 100제(70번 이하)write-up

EYEN 2022. 5. 1. 06:00

44 45 57 59 70 write up.

44
정수를 1개 입력받아 1만큼 더해 출력해보자.
단, -2147483648 ~ +2147483647 의 범위로 입력된다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

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

입력받을 범위를 문제에서 지정해줬고, 2147483647은 int형으로 입력받을 수 있는 범위니까 int로 받고, 1을 더하면 int형으로 출력할 수 없기 때문에 long long int형으로 지정해서 출력했다.
'++a'라는 증감 연산자를 활용해서 1을 먼저 더한 후 출력했다.
다른 방법은 '++a'대신 'a+1'을 써서 a에 입력받은 값을 저장하고, a+1을 출력하는 방법이 있다.


45
 

정수 2개(a, b)를 입력받아 합, 차, 곱, 몫, 나머지, 나눈 값을 자동으로 계산해보자.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	printf("%d \n%d \n%d \n%d \n%d \n%.2f", a + b, a - b, a * b, a / b, a % b, (float)a / b);
	return 0;
}

정수형 int로 a,b를 선언하고, 정수형 int로 입력받고 합, 차, 곱, 몫, 나머지는 int로 출력하고, 나눈 값은 실수형으로 나올 수도 있으므로 float으로 출력한다. 소수점 2번째 자리까지 출력해야 하므로 '%. 2f'라고 지정한다. 그리고 대응되는 값 앞에 (float)를 붙여줘야 한다.


57
 
두 개의 참(1) 또는 거짓(0)이 입력될 때,
참/거짓이 서로 같을 때에만 참이 계산되는 프로그램을 작성해보자.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	printf("%d", !((a&&!b)||(!a && b)));
	return 0;
}

논리연산자를 활용한다.
논리연산자 예시
1. and=&&
2. or=||
3. not=!
4. xor=(a&&!b)||(!a && b)
a,b 변수 선언하고, 정수형으로 입력받는다. 그 다음 논리연산자로 'a와 b의 진리값이 서로 다르지 않음'을 표현한다. 그러면 a와 b의 진리값이 서로 같으면 1을 출력하고, 서로 다르면 0을 출력한다.


59
 

입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

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

비트 연산자를 사용한다. 비트 연산자는 비트 단위에서 연산하는 연산자이다.
not 연산자로 입력받은 변수의 참/거짓을 바꿔 출력한다.
비트 연산자 예
1. and=&
2. or=|
3. xor=^
4. not=~
5. shift=<< />>
6. and 후 할당= '&='
7. or 후 할당= '|='
8. xor 후 할당= '^='
9. not 후 할당= '~='
10. shift 후 할당= '<<=' / '>>='

4비트에서 이진수 예시
+4(0100) -5(1011)
+3(0011) -4(1100)
+2(0010) -3(1101)
+1(0001) -2(1110)
0(0000) -1(1111)
이런 식으로 양의 값을 not 연산한 양의 값과 음의 값이 대응되는 것을 볼 수 있다.


70
 

월이 입력될 때 계절 이름이 출력되도록 해보자.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int a;
	scanf("%d", &a);
	switch (a)
	{
	case 12: //case 뒤에는 값이 와야된다. 문자열, 변수, 조건식은 안 된다. 
	case 1:  //case 안에서 변수를 선언할 수 있다.
	case 2:
		printf("%s", "winter");
		break;
	case 3: 
	case 4: 
	case 5:
		printf("%s", "spring");
		break;
	case 6: 
	case 7: 
	case 8:
		printf("%s", "summer");
		break;
	default:
		printf("%s", "autumn");
	}
	return 0;
}

형식이 균일하고 조건이 많을 때 유용한 switch 분기문을 사용한다.
switch 분기문에서는 switch-case-break가 꼭 활용되어야 한다. default는 생략할 수 있다.
변수를 선언하고, 입력은 숫자로 하므로 정수형으로 지정한다. 출력은 문자열로 하므로 문자열형으로 지정한다.