전기실험회로 2 (C언어)
강의 (10)
우석대학교 에너지전기공학과
이우금 교수
4-6. 수식과 연산자 (계속) 복합대입 연산자: 산술연산자와 대입연산자 『
=
』를 합쳐 놓은 연산자. 예시)𝑥 += 𝑦
𝑥 = 𝑥 + 𝑦
관계연산자 (두 개의 피 연산자를 비교) : 참𝑜𝑟
거짓: 참 『1
』, 거짓 『0
』 4-7. 라이브러리 함수: 프로그래머가 사용할 수 있도록 컴파일러에 의해 제공되는 함수. 4-7-1. printf( ) : 모니터에 출력을 하기 위한 표준 출력 함수. 문자열 출력: printf( )의 괄호 안에 출력을 원하는 문자를 나열. 변수 값 출력 : printf( )의 괄호 안에 필요한 데이터를 넣는다. 예시)𝑝𝑟𝑖𝑛𝑡𝑓 "𝐻𝑒𝑙𝑙𝑜 𝑊𝑜𝑟𝑙𝑑" ; 𝑜𝑟 𝑝𝑟𝑖𝑛𝑡𝑓("
두수의 합:%𝑑", 𝑠𝑢𝑚);
4-7-2. scanf( ) : 사용자가 키보드에 입력한 데이터를 변수에 저장하는 라이브러리 함수. 함수 scanf( )가 호출되면, 컴퓨터는 사용자가 데이터 입력을 마칠 때까지 기다린다. 예시)𝑠𝑐𝑎𝑛𝑓
"%
𝑑", &𝑥 ;
사용자가 키보드로 입력한 데이터가 변수𝑥
에 저장됨. ※𝑛𝑜𝑡𝑒:
출력형식 지정자와 변수의 자료형은 반드시 일치 하여야 함! (지난 시간 강의 복습) 지난 시간 강의 복습 형식 지정자𝐼𝑛𝑡
𝑓𝑙𝑜𝑎𝑡
𝑑𝑜𝑢𝑏𝑙𝑒
𝑐ℎ𝑎𝑟
변수의 자료형%𝑑
%𝑓
%𝑙𝑓
%𝑐
예제) 월 수령액 계산 프로그램 - scanf_s 연습 사용자가 연봉을 입력하면, 월 수령액을 계산하는 프로그램.
𝑦𝑠𝑎𝑙𝑎𝑟𝑦 = 5000
만원𝑚𝑠𝑎𝑙𝑎𝑟𝑦 = 𝑦𝑠𝑎𝑙𝑎𝑟𝑦/12
연봉을 입력하시오(만원): 5000
월 수령액(만원): 466
/* 월 수령액을 계산하는 프로그램 */
#include <stdio.h>
int main(void)
{
int ysalary; // 연봉
int msalary; // 월 수령액
printf("연봉을 입력하시오(만원):");
scanf_s("%d", &ysalary);
msalary = ysalary / 12;
printf("월 수령액(만원):%d\n", msalary);
return 0;
}
(지난 시간 강의 복습) 지난 시간 강의 복습4-6. 수식과 연산 (계속) 논리 연산자: 여러 개의 조건을 조합하여 참인지 거짓인지 따질 때 사용함. AND 연산자: 두 개의 피 연산자의 결과가 모두 참일 때만 연산의 결과가 참이 됨. OR 연산자: 두 개의 피 연산자 중 하나만 참이면 연산의 결과는 참이 됨. NOT 연산자: 피연자의 결과 참이면 거짓으로, 거짓이면 참으로 만든다. 예시 1) 회사 신입사원 채용시 나이가 30살 이하이고, 토익 성적이 700점 이상의 조건의 경우 AND 연산자: 위의 수식에서 age가 30이하 이고 toeic이 700 이상인 경우에 만 참이 됨. 만약 두 개의 조건 중 하나라도 거짓이면, 전체수식의 값은 거짓이 됨. OR 연산자: age가 30살 이하 이거나, 토익성적이 700점 이상인 경우 참이 됨. 연산 의미
𝑥 && 𝑦 𝑥
와𝑦
가 모두 참이어야 참. 둘 중 하나라도 거짓이면 연산결과는 거짓𝑥 || 𝑦
𝑥
나𝑦
중 하나만 참이면 참. 모두 거짓이면 연산결과는 거짓! 𝑥
𝑥
가 참이면 거짓,𝑥
가 거짓이면 참 4-6. 수식과 연산 참(1) 참(1) 참(1)𝑎𝑔𝑒 < = 30 && 𝑡𝑜𝑒𝑖𝑐 > = 700
참(1) 거짓(0) 참(1)𝑎𝑔𝑒 < = 30||𝑡𝑜𝑒𝑖𝑐 > = 700
28 750 28 650 <AND 연산자> <OR 연산자>예시 2) AND, OR, NOT 연산자 다음의 연산결과를 출력하는 프로그램을 작성하라. (단,
𝑥 = 1, 𝑦 = 2
) •𝑥 > 0 && 𝑦 > 0
참(1) •𝑥 > 0 && 𝑦 < 0
거짓(0) •𝑥 > 0 || 𝑦 < 0
참(1) •! 𝑥 < 𝑦
거짓(0)// AND, OR, NOT 연산결과를 출력하는 프로그램
#include <stdio.h>
int main(void)
{
int x , y;
printf("두개의 정수를 입력하시오: ");
scanf_s("%d%d", &x, &y);
printf("%d>0 && %d>0의 결과값: %d\n", x, y, (x>0) && (y>0));
printf("%d>0 && %d<0의 결과값: %d\n", x, y, (x > 0) && (y < 0));
printf("%d>0 || %d<0의 결과값: %d\n", x, y, (x > 0) || (y < 0));
printf("!%d<%d 의 결과값: %d\n", x, y, !(x<y));
return 0;
반드시 scanf_s 사용
두개의 정수를 입력하시오: 1 2
1> 0 && 2 > 0 의 결과값: 1
1> 0 && 2 < 0 의 결과값: 0
1> 0 || 2 < 0 의 결과값: 1
! 1 < 2 의 결과값: 0
scanf_s
4-6. 수식과 연산순위 1 2 3 연산자 『
+ +
』, 『− −
』 『∗
』, 『/
』 , 『%
』 『+
』, 『−
』 <연산자의 우선순위 및 결합규칙> 연산자의 우선순위 하나의 수식에 2개 이상의 연산자가 있는 경우, 어떤 연산자가 먼저 수행되는가? 예시)𝑥 + 𝑦 ∗ 𝑧
수학에서 배웠듯이 곱셈과 나눗셈이 덧셈과 뺄셈보다 우선 수행. 주요 연산자 우선 순위 요약 위의 순서를 무시하고 다른 순서로 계산 해야 될 때 괄호 사용 예시)𝑥 + 𝑦 ∗ 𝑧
𝑥 + 𝑦 ∗ 𝑧
※𝑛𝑜𝑡𝑒:
우선 순위가 생각 나지 않으면 괄호를 사용! (1) (2) (1) (2) 4-6. 수식과 연산 연산자의 결합규칙 연산자의 기능에 따른 우선순위 단항 > 이항 > 관계 > 논리 > 대입 같은 우선순위를 가지는 연산자들이 여러 개가 있을 때의 우선순위 • 이항 연산자 왼쪽 우선 • 단항 연산자 대부분 오른쪽 우선 결합규칙 예시
y = a % b / c + d * (e - f);
①
②
③
④
⑤
⑥
<이항 연산자> <단항 연산자> (1) (2) (3)𝑦 = − + + − −𝑥;
4-6. 수식과 연산예시) 연산자의 우선순위에 따른 결과 예측 연산자의 기능에 따른 우선순위 단항 > 이항 > 관계 > 논리 > 대입 8
#include <stdio.h>
int main(void)
{
int x=0 , y=0;
int result;
result = 2 > 3 || 6 > 7;
printf("result=%d\n", result);
result = 2<1 || 4>3 && 3 > 2;
printf("result=%d\n", result);
result = x = y = 2;
printf("result=%d\n", result);
result = - ++x + y--;
printf("result=%d\n", result);
return 0; // note: y-- 는 감소되지 않은 원래의 y 값
} // note: --y 는 감소된 y 값
관계 연산자result=0
result=1
result=2
result=-1
논리 연산자거짓 || 거짓
거짓(0)
관계 연산자 논리 연산자 대입 연산자result=2
단항 연산자 이항 연산자 4-6. 수식과 연산거짓 || 참 && 참
참(1)
- 3 + 2
result=-1
예제1) 거스름돈 계산 프로그램 (소스파일: project.c) - scanf_s 연습 편의점에서 물건을 구입하고 만원을 냈을 때, 거스름돈의 액수 및 화폐와 동전의 수를 계산하는 프로그램. <변수 선언 및 변수의 초기화> 사용자가 낸 돈:
𝑢𝑠𝑒𝑟 = 1000
원 물건값 :𝑝𝑟𝑖𝑐𝑒 = 250
원 최종 거스름돈:𝑐ℎ𝑎𝑛𝑔𝑒1 = 𝑢𝑠𝑒𝑟 − 𝑝𝑟𝑖𝑐𝑒
거스름 돈:𝑐ℎ𝑎𝑛𝑔𝑒
, 500원 동전 수:𝑐500
, 100원 동전 수:𝑐100
, 10원 동전 수:𝑐50
<동전 수의 계산>4-7. 라이브러리 함수
change = user - price; // 거스름돈을 변수 change에 저장
change1 = change;
c500 = change / 500; // 500 원의 갯수 계산
change = change % 500; // 나머지 연산자를 사용하여 남은 잔돈 계산
c100 = change / 100; // 100 원의 갯수 계산
change = change % 100; // 나머지 연산자를 사용하여 남은 잔돈 계산
c50 = change / 50; // 50 원의 갯수 계산
change = change % 50; //나머지 연산자를
반드시 scanf_s 사용
10 4-7. 라이브러리 함수 /* 거스름 돈을 계산하는 프로그램 */ #include <stdio.h> int main(void) {
int user, change=0, change1; int price, c500, c100, c50;
printf( )
scanf_s( ) printf( )
scanf_s( )
change = user - price; // 거스름돈을 변수 change에 저장 change1 = change; c500 = change / 500; // 500 원의 갯수 계산 change = change % 500; // 나머지 연산자를 사용하여 남은 잔돈 계산 c100 = change / 100; // 100 원의 갯수 계산 change = change % 100; // 나머지 연산자를 사용하여 남은 잔돈 계산 c50 = change / 50; // 50 원의 갯수 계산 change = change % 50; //나머지 연산자를 printf( ); printf( ); printf( ); printf( ); return 0; }
물건 값을 입력하시오(원): 250
사용자가 낸 돈(원): 1000
거스름돈: 750원
오백원: 1개
백원: 2개
오십원: 1개
scanf_s
4-7. 라이브러리 함수
/* 거스름 돈을 계산하는 프로그램 */ #include <stdio.h>
int main(void) {
int user, change=0, change1; int price, c500, c100, c50;
printf("물건 값을 입력하시오(원): ");
scanf_s("%d", &price); // 물건 값을 입력 받음 printf("사용자가 낸돈(원): ");
scanf_s("%d", &user);
change = user - price; // 거스름돈을 변수 change에 저장 change1 = change; c500 = change / 500; // 500 원의 갯수 계산 change = change % 500; // 나머지 연산자를 사용하여 남은 잔돈 계산 c100 = change / 100; // 100 원의 갯수 계산 change = change % 100; // 나머지 연산자를 사용하여 남은 잔돈 계산 c50 = change / 50; // 50 원의 갯수 계산 change = change % 50; //나머지 연산자를 사용하여 남은 잔돈 계산 printf("거스름돈: %d원\n", change1); printf("오백원: %d개\n", c500); printf("백원: %d개\n", c100); printf("오십원: %d개\n", c50); return 0; }