Basics/자기주도 C언어 프로그래밍

[Chapter] 03 연산자

whereareyoung 2023. 7. 14. 13:00
//1
두 개의 정수를 입력받아 다음과 같이 출력하는 프로그램을 작성하시오.
입력 예 두 개의 수를 입력하시오. 7 5
출력 예
7 + 5 = 12
7 - 5 = 2
7 * 5 = 35
7 / 5 = 1
7 % 5 = 2
 
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b;
int plus, minus, multi, div, rest;
 
printf("두 개의 수를 입력하시오. ");
scanf("%d %d", &a, &b);
 
plus = a + b;
minus = a - b;
multi = a * b;
div = a / b;
rest = a % b;
 
printf("%d + %d = %d \n", a, b, plus);
printf("%d - %d = %d \n", a, b, minus);
printf("%d * %d = %d \n", a, b, multi);
printf("%d / %d = %d \n", a, b, div);
printf("%d %% %d = %d \n", a, b, rest);
 
return 0;
}
 
 
자가진단 1 세 개의 정수를 입력 받아서 합계와 평균을 출력하는 프로그램을 작성하시오. (단, 평균은 소수 이하를 버리고 정수부분만 출력한다.)
입력 예 10 25 33
출력 예
sum : 68
avg : 22
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b, c;
int sum, avg;
 
scanf("%d %d %d", &a, &b, &c);
 
sum = a + b + c;
avg = (a + b + c) /3;
 
printf("sum : %d \n", sum);
printf("avg : %d \n", avg);
 
return 0;
}
 
 
 
//2
5개의 정수를 입력받아 각각의 수에 + 3, - 3, × 3, / 3, % 3의 연산을 실행하여 그 값을 지정한 후 차례대로 출력하는 프로그램을 작성하시오.
입력 예 5개의 수를 입력하시오. 10 6 7 9 10
출력 예 13 2 21 3 1
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b, c, d, e;
int plus, minus, multi, div, rest;
 
printf("5개의 수를 입력하시오. ");
scanf("%d %d %d %d %d", &a, &b, &c, &d, &e);
 
a = a + 3;
b = b - 3;
c = c * 3;
d = d / 3;
e = e % 3;
 
printf("%d %d %d %d %d \n", a, b, c, d, e);
 
return 0;
}
 
 
자가진단 2 정수 2개를 입력받아서 첫 번째 수에는 100을 증가시켜 저장하고, 두 번쨰 수는 10으로 나눈 나머지를 저장한 후 , 두 수를 차례로 출력하는 프로그램을 작성하시오.
입력 예 20 35
출력 예 120 5
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b;
int increase, rest;
 
scanf("%d %d", &a, &b);
 
increase = a + 100;
rest = b % 10;
 
printf("%d %d \n", increase, rest);
 
return 0;
}
 
 
 
//3
정수형 변수 a와 b를 만들고 각각 10으로 초기화한 후 다음과 같이 출력하는 프로그램을 작성하시오.
출력 예
최초 값 a = 10, b = 10
 
a++ = 10, ++b = 11
실행후 a = 11, b = 11
 
a-- = 11, --b = 10
실행후 a = 10, b = 10
 
#include <stdio.h>
int main()
{
int a = 10, b = 10;
 
printf("최초값 a = %d, b = %d \n\n", a, b);
 
printf("a++ = %d, ++b = %d \n", a++, ++b);
printf("실행후 a = %d, b = %d \n\n", a, b);
 
printf("a-- = %d, --b = %d \n", a--, --b);
printf("실행후 a = %d, b = %d \n\n", a, b);
 
return 0;
}
 
자가진단 3 한 개의 정수를 입력 받아서 후치증가 연산자를 사용하여 출력한 후, 전치 증가 연산자를 사용하여 출력하는 프로그램을 작성하시오.
 
입력 예 5
출력 예
5
7
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
 
printf("%d\n", a++);
printf("%d\n", ++a);
 
return 0;
}
 
//4
정수 변수 a와 b를 입력받아서 전치 a는 전치 증가 연산자를 사용하고, b는 후치 감소 연산자를 사용하여 두 수의 합을 c에 저장한 후 각각을 출력하는 프로그램을 작성하시오.
입력 예 5 6
출력 예 a = 6, b = 5, c = 12
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b, c;
 
scanf("%d %d", &a, &b);
 
c = ++a + b--;
printf("a = %d, b = %d, c = %d \n", a, b, c);
 
return 0;
}
 
 
자가진단 4 두 개의 정수를 입력 받아 각각 후치 증가 연산자와 전치 감소 연산자를 사용하여 두 수의 곱을 새로운 변수에 저장한 후 각각의 값을 출력하는 프로그램을 작성하시오.
 
입력 예 10 20
출력 예 11 19 190
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b, c;
 
scanf("%d %d", &a, &b);
 
c = a++ * --b;
printf("a = %d, b = %d, c = %d \n", a, b, c);
 
return 0;
}
 
//5
3개의 정수 a, b, c를 입력받아서 a와 b, b와 c를 각각 비교하여 같으면 1, 같지 않으면 0을 출력하고, 다음에는 같지 않으면 1, 같으면 0을 출력하는 프로그램을 작성하시오.
입력 예 10 20 20
출력 예 0 1 1 0
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b, c;
int result1, result2, result3, result4;
 
scanf("%d %d %d", &a, &b, &c);
 
result1 = (a == b);
result2 = (b == c);
result3 = (a != b);
result4 = (b != c);
 
 
printf("%d %d %d %d \n", result1, result2, result3, result4);
 
return 0;
}
 
 
자가진단 5 두 개의 정수를 입력 받아서 두 정수의 값이 같으면 1, 아니면 0을 출력하고 두 번째 줄에는 같지 않으면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
입력 예 5 5
출력 예
1
0
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b;
int result1, result2;
 
scanf("%d %d", &a, &b);
 
result1 = (a == b);
result2 = (a != b);
 
printf("%d %d \n", result1, result2);
 
return 0;
}
 
//6
3개의 정수 a, b, c를 입력받아서 a가 b보다 큰지, b가 c보다 크거나 같은지, a가 b보다 작거나 같은지, b가 c보다 작은지를 비교하여 참이면 1, 거짓이면 0을 각각 출력하는 프로그램을 작성하시오.
입력 예 1 2 2
출력 예 0 1 1 0
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b, c;
int result1, result2, result3, result4;
 
scanf("%d %d %d", &a, &b, &c);
 
result1 = (a > b);
result2 = (b >= c);
result3 = (a <= b);
result4 = (b < c);
 
printf("%d %d %d %d \n", result1, result2, result3, result4);
 
return 0;
}
 
자가진단 6 두 개의 정수를 입력 받아서 다음과 같이 4가지 관계연산자의 결과를 출력하시오. 입력 예 4 5
출력 예
4 > 5 --- 0
4 < 5 --- 1
4 >= 5 --- 0
4 <= 5 --- 1
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b;
int result1, result2, result3, result4;
 
scanf("%d %d", &a, &b);
 
result1 = (a > b);
result2 = (a < b);
result3 = (a >= b);
result4 = (a <= b);
 
printf("%d > %d --- %d \n", a, b, result1);
printf("%d < %d --- %d \n", a, b, result2);
printf("%d >= %d --- %d \n", a, b, result3);
printf("%d <= %d --- %d \n", a, b, result4);
 
return 0;
}
 
 
//7
3개의 정수 a, b, c를 선언하여 각각 0, 1, 2로 초기화한 후 a와 b가 모두 참인지, a또는 b가 참인지, b와 c가 모두 참인지, a가 참이 아닌지를 확인하여 참이면 1, 거짓이면 0을 각각 출력하는 프로그램을 작성하시오.
출력 예 0 1 1 1
 
#include <stdio.h>
int main()
{
int a = 0, b = 1, c = 2;
 
int result1 = (a && b);
int result2 = (a || b);
int result3 = (b &&c);
int result4 = !a;
 
printf("%d %d %d %d \n", result1, result2, result3, result4);
 
return 0;
}
 
자가진단 7 2개의 정수를 입력 받아서 논리곱과 논리합의 결과를 출력하는 프로그램을 작성하시오.
입력 예 2 0
출력 예 0 1
 
 
 
#include <stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
 
 
int result1 = (a && b);
int result2 = (a || b);
 
printf("%d %d \n", result1, result2);
 
return 0;
}
 
 
//8
3개의 정수 a, b, c를 선언하여 각각 0, 1, 2로 초기화한 후 아래 소스와 같은 다양한 논리 연산 결과를 출력하는 프로그램을 작성하시오.
출력 예 1 1 0 1
 
#include <stdio.h>
int main()
{
int a = 0, b = 1, c = 2;
 
int result1 = (a < b) && (b < c);
int result2 = (a && b) || (b && c);
int result3 = (a || !c);
int result4 = (a !=b) && (b !=c);
 
printf("%d %d %d %d \n", result1, result2, result3, result4);
 
return 0;
}
 
 
 
자가진단 8 3개의 정수를 입력 받아 첫 번째 수가 가장 크면 1, 아니면 0을 출력하고 세개의 수가 모두 같으면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
입력 예 10 9 9
출력 예 1 0
 
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
 
 
int result1 = (a > b) && (a > c);
int result2 = (a == b) && (b == c);
 
printf("%d %d \n", result1, result2);
 
return 0;
}
 
 
------------------------------------------------
게임 개발에서 활용도가 적은 함수 활용예시
 
* fmod()
부동 소수점 나머지 연산
 
microsoft / ibon에서 요구사항, 필수 헤더 등 검색 예시 확인후 적용
 
------------------------------------------------
게임 제작에 종종 사용됨, 메모리를 줄일 수 있는 좋은 방법
 
* 비트연산자
논리연산자 설명후 추가설명하신 내용, 비트별로 연산하는것.
 
게임제작에 사용시 참조
http://www.houdini.co.kr/index.php?option=com_kunena&view=topic&catid=180&id=5150&Itemid=1498
 
 
예제1. 다음을 출력하시오.
AND 연산의 결과:4
 
#include <stdio.h>
 
int main()
{
int a, b, c;
 
a = 15; // 00000000 00000000 00000000 00001111
b = 20; // 00000000 00000000 00000000 00010100
c = a & b; // a와 b의 비트단위를 & 연산 (두개의 비트가 모두 1일때 1을 반환)
// 결과값이 00000000 00000000 00000000 00000100 이므로 4가 출력된다.
 
printf("%s""%d \n", "AND 연산의 결과: ", c);
return 0;
}
 
예제2. 다음을 출력하시오.
OR 연산의 결과 : 31
 
#include <stdio.h>
 
int main()
{
int a, b, c;
 
a = 15; // 00000000 00000000 00000000 00001111
b = 20; // 00000000 00000000 00000000 00010100
c = a | b; // a와 b의 비트단위를 | 연산 (두개의 비트중 하나라도 1일때 1을 반환)
// 결과값이 00000000 00000000 00000000 00011011 이므로 31이 출력된다.
 
printf("%s""%d \n", "OR 연산의 결과: ", c);
return 0;
}
 
 
예제3. 다음을 출력하시오.
XOR 연산의 결과 : 27
 
#include <stdio.h>
 
int main()
{
int a, b, c;
 
a = 15; // 00000000 00000000 00000000 00001111
b = 20; // 00000000 00000000 00000000 00010100
c = a ^ b; // a와 b의 비트단위를 ^ 연산 (두개의 비트가 서로 다른 경우에 1을 반환)
// 결과값이 00000000 00000000 00000000 00011011 이므로 27이 출력된다.
 
printf("%s""%d \n", "XOR 연산의 결과: ", c);
return 0;
}
 
예제4. 다음을 출력하시오.
NOT 연산의 결과 : 27
#include <stdio.h>
 
int main()
{
int a, b;
 
a = 15; // 00000000 00000000 00000000 00001111
b = ~a; // 비트를 0에서 1로, 1에서 0으로 반전하는 연산 (보수연산)
// 결과값이 반전되어 음수로 나타난다, 11111111 11111111 11111111 11110000 이므로 -16이 출력된다.
 
printf("%s""%d \n", "NOT 연산의 결과: ", b);
return 0;
}

'Basics > 자기주도 C언어 프로그래밍' 카테고리의 다른 글

[Chapter] 06 반복제어문 I  (0) 2023.07.14
[Chapter] 05 선택제어문  (0) 2023.07.14
[Chapter] 02 입력  (0) 2023.07.14
[Chapter] 01 출력  (0) 2023.07.14
00_C언어란?  (0) 2023.07.13