Programming/컴퓨터프로그래밍및실습

[컴프실] 제5장: 수식과 연산자

leziwn.cs 2023. 7. 7. 18:12
수식
  • 상수
  • 변수
  • 연산자

연산자
산술 연산자

/*정수 사칙 연산*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int x, y, result;
	printf("두 개의 정수를 입력하시오: ");
	scanf("%d%d", &x, &y);

	result = x + y;
	printf("%d + %d = %d\n", x, y, result);

	result = x - y; //result 변수 두 번 써도 됨
	printf("%d - %d = %d\n", x, y, result);

	return 0;
}

 

/*초를 입력받고 분과 초로 나타내는 프로그램*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int input, min, sec;

	printf("초를 입력하시오: ");
	scanf("%d", &input);

	min = input / 60;
	sec = input % 60;
	printf("%d분 %d초입니다.\n", min, sec);

	return 0;
}

 

증감 연산자
  • y = ++x; //x값을 증가시키고, 이를 y에 대입된다.
  • y = x++; //y에 x를 먼저 대입하고, x를 증가시킨다.

증감 연산자

/* 증감 연산자 */
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int x, y;

	printf("x와 y값을 입력하세요: ");
	scanf("%d%d", &x, &y);

	printf("\nx = %d\n", x);
	printf("++x의 값 = %d\n", ++x);
	printf("x = %d\n\n", x);

	printf("y = %d\n", y);
	printf("y++의 값 = %d\n", y++);
	printf("y = %d\n", y++);

	return 0;
}

결과

 

Lab: 거스름돈 계산하기
/* 거스름돈 계산하기*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int price, payment;
	int leftover = 0;
	
	printf("물건 값을 입력하시오: \n");
	scanf("%d", &price);

	printf("투입한 금액을 입력하시오: \n");
	scanf("%d", &payment);

	leftover = payment - price;
	printf("거스름 돈은 다음과 같습니다.\n\n");
	printf("천원권: %d장\n", leftover / 1000);
	printf("오백원 동전: %d장\n", (leftover % 1000) / 500);
	printf("백원 동전: %d장\n", ((leftover & 1000) % 500)/100);

	return 0;
}

 

복합 대입 연산자

복합 대입 연산자

/*복합 대입 연산자*/
#include <stdio.h>

int main(void)
{
	int x = 10;
	int y = 10;
	int z = 33;

	x += 1;
	y *= 2;
	z %= 10;

	printf("x=%d, y=%d, z=%d", x, y, z);

	return 0;
}

결과

 

관계 연산자

: 두 개의 피연산자를 비교하는 연산자

  • 결과가 참 == 1
  • 결과가 거짓 == 0

관계 연산자

/*관계 연산자*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int x, y;

	printf("두 개의 정수를 입력하세요: \n");
	scanf("%d%d", &x, &y);

	//결과값 ==0이면 false, ==1이면 true
	printf("x==y의 결과값: %d\n", x == y);
	printf("x!=y의 결과값: %d\n\n", x != y);

	printf("x>y의 결과값: %d\n", x > y);
	printf("x<y의 결과값: %d\n", x < y);

	return 0;
}

 

논리 연산자

: 여러 개의 조건을 조합하여 참과 거짓을 따지는 연산자

  • 결과가 참 == 1
  • 결과가 거짓 == 0

논리 연산자

/*논리 연산자*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int x, y;

	printf("0은 거짓이고, 0이 아니면 참입니다. \n");
	printf("두 개의 정수를 입력하시오: ");
	scanf("%d%d", &x, &y);

	printf("%d&&%d의 결과값: %d\n", x, y, x && y); //x와 y가 모두 참인가?
	printf("%d||%d의 결과값: %d\n", x, y, x || y); //x또는 y가 참인가?
	printf("!%d의 결과값: %d\n", x, !x); //x는 거짓인가?

	return 0;
}

결과

 

 

Lab: 윤년
/* 윤년인지 판단하기 */
/* 윤년의 조건
- 연도가 4로 나누어 떨어진다.
- 100으로 나누어 떨어지는 연도는 제외한다.
- 400으로 나누어 떨어지는 연도는 윤년이다. */

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int year;

	printf("연도를 입력하시오: ");
	scanf("%d", &year);

	int result = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
	printf("result = %d", result);

	return 0;
}

 

조건 연산자

조건 연산자

/*조건 연산자*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int x, y;

	printf("정수 2개를 입력하세요: ");
	scanf("%d%d", &x, &y);

	printf("큰 수 = %d\n", (x > y) ? x : y);
	printf("작은 수 = %d\n", (x < y) ? x : y);

	return 0;
}

 

콤마 연산자

콤마 연산자

 

비트 연산자

비트 연산자

 


 

형변환(type conversion)

: 실행 중에 데이터의 타입을 변경하는 것

형변환

 

1) 자동적인 형변환
  • 올림 변환
  • 내림 변환
//올림 변환과 내림 변환
#include <stdio.h>

int main(void)
{
	char c = 10000; //내림 변환
	int i = 1.23456 + 10; //내림 변환
	float f = 10 + 20; //올림 변환

	printf("c=%d, i=%d, f=%f\n", c, i, f);

	return 0;
}

결과

 

2) 명시적인 형변환
//명시적인 형변환
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	double x;

	printf("실수를 입력하세요: ");
	scanf("%lf", &x);

	printf("입력된 실수의 정수부분은 %d입니다.", (int)x);

	return 0;
}

결과

 

우선 순위

우선 순위

 

Mini Project: 화씨 온도를 섭씨로 바꾸기
//화씨 온도를 섭씨로 바꾸기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	double input, output;

	printf("섭씨온도를 입력하세요: ");
	scanf("%lf", &input);

	/*
	output = (5 / 9) * (input - 32);
	5/9가 먼저 계산되어 0이 된다.*/

	output = (5.0 / 9.0) * (input - 32);
	printf("\n화씨온도 = %f\n", output);

	return 0;
}

결과