제3장 연산자(Operators) 문봉근.

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
/ 4강_연산자 4-1 할당연산자 4-2 사칙연산자 및 나머지 연산자 4-3 자동증감 연산자 4-4 비교 연산자 4-5 논리 연산자 4-6 부정 연산자 4-7 복합대입 연산자 /
Chapter 7. 조건문.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
3. printf()와 데이터 형식.
Chapter 04 C 연산자의 이해.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Part 05 순수한 연산자 ©우균, 창병모 © 우균, 창병모.
임베디드 실습 # LED, 7’Segment 제어
2주차: 변수, 수식, Control Flow.
6장. printf와 scanf 함수에 대한 고찰
2007 1학기 11 프로젝트 기초 실습.
Tail-recursive Function, High-order Function
14장. 포인터와 함수에 대한 이해.
13. 연산자 오버로딩.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
Gachon CS50 Python Basics I Basic Operators 가천대학교 | 산업경영공학과 최성철 교수.
Lesson 4. 수식과 연산자.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
상수와 기본 자료형.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
연산자 (Operator).
제어문 & 반복문 C스터디 2주차.
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
8주차: Strings, Arrays and Pointers
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
복습.
Chapter 07 비트와 여러 연산자.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
프로그램 개발 방법론 부재 : 연습문제 (6장) 학번: 이름:김치우.
제 15 강 문자와 코드 shcho.pe.kr.
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
2장 PHP 기초 PHP의 시작과 끝을 이해한다. 주석문에 대하여 이해한다. echo 문을 이용하여 화면에 출력하
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
복습.
Lecture 02 프로그램 구조 및 문법 Kwang-Man Ko
16장. 변수, 연산자, 사용자 정의 함수 변수 배열과 객체 연산자 함수.
제 22 강 논리식 및 논리 값 shcho.pe.kr.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
제어문Control Statements
어서와 C언어는 처음이지 제21장.
제 3장 연 산 자 연 산 자 의 종 류 연 산 자 우 선 순 위 형 변 환.
실 습 2.
Visual Basic .NET 기초문법.
Pointers summary.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

제3장 연산자(Operators) 문봉근

제3장 연산자 3.1 산술연산자 3.2 증가/감소 연산자 3.3 대입 연산자(할당 연산자) 3.4 관계 연산자 3.5 논리 연산자 3.6 조건 연산자 3.7 비트 연산자 YES C 제 3 장 연산자

연산자(Operators) 정의 및 종류 연산자(operator)란? 연산자 종류 특수한 산술 또는 논리 연산을 수행하도록 지시하는 기호 연산자 종류 피연산자(operand) 수에 따라 단항/이항연산자 연산자의 기능에 따라 산술/관계/논리연산자 YES C 제 3 장 연산자

3.1 산술 연산자 각종 산술 연산에서 쓰이는 연산자 산술 단항 연산자 산술 이항 연산자 산술 이항 연산자의 종류와 기능 산술 연산자의 종류 산술 단항 연산자 부호 연산자, 증감/감소 연산자 산술 이항 연산자 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/) 등의 사칙연산자 나머지 값을 구하는 잉여 연산자(%) 산술 이항 연산자의 종류와 기능 YES C 제 3 장 연산자

3.1 산술 연산자(계속) 예제 3.1 3+7, 3-7, 3*7, 3/7을 계산한 결과를 프로그램으로 구하시오. 프로그램 결과 프로그램 결과 #include <stdio.h> /* 헤드파일 */ main() { int A, B, C, D; /* 변수 선언 */ A=3+7; B=3-7; C=3*7; D=3/7; printf(" 3+7=%d\n 3-7=%d\n 3*7=%d\n 3/7=%d\n\n",A,B,C,D); /* 출력함수 */ } 3+7=10 3-7=-4 3*7=21 3/7=0 YES C 제 3 장 연산자

3.1 산술 연산자(계속) 예제 3.2 3과 8을 곱셈, 나눗셈, 나머지 셈한 결과를 프로그램으로 구하시오. 프로그램 결과 프로그램 결과 #include <stdio.h> /* 헤드파일 */ main() { int a,b,c,d; /* 변수 선언 */ b=3,a=8; c=a*b; d=a/b; printf("a*b=%d, a/b=%d\n",c,d); /* 출력함수 */ } a*b=24, a/b=2 YES C 제 3 장 연산자

3.1 산술 연산자(계속) 예제 3.3 365를 31로 나눌 경우 나머지를 프로그램으로 구하시오. 프로그램 결과 프로그램 결과 #include<stdio.h> main() { int a,b,c; a=365, b=31; c=a%b; printf("나머지 = %d\n",c); } 나머지 = 24 YES C 제 3 장 연산자

연산자 우선 순위 단항 연산자 : `-' , + , ++, -- -> 우에서 좌 이항 연산에서의 우선 순위 단항 연산자 : `-' , + , ++, -- -> 우에서 좌 이항 연산자 : `*', `/', `%‘ -> 좌에서 우 이항 연산자 : `+', `-' 예 : int a = 3, b = 8, c = -4, d = -10; YES C 제 3 장 연산자

3.1 산술 연산자(계속) 예제 3.4 b * -c /a 계산식에서 a = -2, b = 20, c = 3 일 경우 연산 결과를 표 3.3과 같이 손으로 직접 구한 후, 프로그램을 작성하여 결과를 확인하시오. 프로그램 결과 #include <stdio.h> /* 헤드파일 */ main() { int a=-2, b=20, c=3, d; /* 변수 선언 */ d = b*-c/a; printf(" b * -c / a = %d\n ",d); /* 출력함수 */ } b * -c / a = 30 YES C 제 3 장 연산자

3.1 산술 연산자(계속) 예제 3.5 a = 5, b = 7, c = -8, d = -12 일 때 b * -c /a - b / -c + -a / d와 d - a * (b + c) 계산식의 결과를 구하는 프로그램을 작성하시오. 프로그램 결과 #include <stdio.h> /* 헤드파일 */ main() { int a = 5, b = 7, c = -8, d = -12 ; int e, k; /* 변수 선언 */ e = b*-c/a-b/-c+-a/d; printf(" b*-c/a-b/-c+-a/d = %d\n ",e); k = d-a*(b+c); printf("d-a*(b+c)=%d\n",k); /* 출력함수 */ } b*-c/a-b/-c+-a/d = 11 d-a*(b+c)=-7 YES C 제 3 장 연산자

형 변환 기능 표 3.4 형 변환의 종류 및 방법 YES C 제 3 장 연산자 형 변환 종류 방법 의미 정수->실수 (float) 정수변수( 또는 상수) 정수를 실수로 변환됨. 실수->정수 (int) 실수변수( 또는 상수) 실수가 정수로 변환됨. YES C 제 3 장 연산자

3.1 산술 연산자(계속) 예제 3.6 두 실수 값을 입력받아 더한 결과를 정수형으로 변환하는 프로그램과 두 실수 값을 정수형으로 변환한 후 더하여 결과를 출력하는 프로그램을 작성하시오. 프로그램 결과 #include <stdio.h> /* 헤드파일 */ main() { float a, b; /* 실수 변수 선언 */ int sum1, sum2; /* 정수 변수 선언 */ float sum3; /* 실수 변수 선언 */ printf("a="); scanf("%f",&a); /* 입력 함수 */ printf("b="); scanf("%f",&b); sum1 = (int)(a + b); sum2 = (int)a + (int)b; sum3 = a + b; printf("sum1 : %d\n", sum1); /* 출력함수 */ printf("sum2 : %d\n", sum2); printf("sum3 : %f\n", sum3); } a=25.5 b=32.6 sum1 : 58 sum2 : 57 sum3 : 58.099998 YES C 제 3 장 연산자

3.1 산술 연산자(계속) 예제 3.7 두 정수 값을 입력받아 나눈 결과를 실수형으로 변환하는 프로그램과 두 정수 값을 실수형으로 변환한 후 더하여 결과를 출력하는 프로그램을 작성하라. 프로그램 결과 #include <stdio.h> /* 헤드파일 */ main() { int a, b; /* 정수 변수 선언 */ float sum4, sum5; /* 실수 변수 선언 */ printf("a = "); scanf("%d",&a); /* 입력 함수 */ printf("b = "); scanf("%d",&b); sum4 = (float)(a / b); sum5 = (float)a / (float)b; printf("sum4 : %f\n", sum4); /* 출력함수 */ printf("sum5 : %f\n", sum5); } a = 30 b = 21 sum4 : 1.000000 sum5 : 1.428571 YES C 제 3 장 연산자

3.2 증가/감소 연산자 증가 연산자(increment operator) 감소 연산자(decrement operator) ++변수, 변수 ++ 감소 연산자(decrement operator) --변수, 변수 – Ex) a=10 YES C 제 3 장 연산자

3.2 증가/감소 연산자(계속) 예제 3.8 a가 10인 경우 b = ++a, b = a++, b = --a, b = a-- 순으로 연산식을 수행할 경우 a와 b의 연산 결과를 출력하는 프로그램을 작성하시오. 프로그램 결과 #include <stdio.h> /* 헤드파일 */ main() { int a=10, b; /* 변수 선언 */ b = ++a; printf(" b(%d) = ++a(%d)\n",b,a); b = a++; printf(" b(%d) = a(%d)++\n",b,a); b = --a; printf(" b(%d) = --a(%d)\n",b,a); b = a--; printf(" b(%d) = a(%d)--\n",b,a); /* 출력함수 */ } b(11) = ++a(11) b(11) = a(12)++ b(11) = --a(11) b(11) = a(10)-- YES C 제 3 장 연산자

3.2 증가/감소 연산자(계속) 예제 3.9 a가 10인 경우 ++a, a++, --a, a-- 연산식에 대해 결과를 구하는 프로그램을 작성하시오. 프로그램 결과 #include <stdio.h> /* 헤드파일 */ main() { int a = 10, b, c, d, e; /* 변수 선언 */ b = ++a; a=10; c = a++; a=10; d = --a; a=10; e = a--; printf("++a = %d\n",b); /* 출력함수 */ printf("a++ = %d\n",c); printf("--a = %d\n",d); printf("a-- = %d\n",e); } ++a = 11 a++ = 10 --a = 9 a-- = 10 YES C 제 3 장 연산자

3.3 대입 연산자(할당연산자) 연산자 우측의 값을 좌측의 변수에 대입한다는 의미 형식 : 변수 = 식 Ex) c = a + b YES C 제 3 장 연산자

할당 연산자의 예 a += 3 b -= 5 C *= 2 D /= 1.5 a 변수 값을 3만큼 증가 a = a + 3 b 변수 값을 5만큼 감소 b = b -5 C *= 2 c변수 값을 두배로 지정 c = c * 2 D /= 1.5 d변수 값을 1.5 나눔지정 d = d / 1.5 YES C 제 3 장 연산자

3.3 대입 연산자(계속) 예제 3.10 a가 5인 경우 a += 3과 a =a+3, a*= 3과 a=3*a 연산식에 대해 결과를 구하고 상호 비교하시오. 프로그램 결과 #include <stdio.h> /* 헤드파일 */ main() { int a = 5; /* 변수 선언 */ a += 3; printf("a += 3 -> %d\n",a); a=5; a =a+3; printf("a =a+3 -> %d\n",a); a=5; a*= 3; printf("a *= 3 -> %d\n",a); a=5; a = 3*a; printf("a = 3*a -> %d\n",a); /* 출력함수 */ } a += 3 -> 8 a =a+3 -> 8 a *= 3 -> 15 a = 3*a -> 15 YES C 제 3 장 연산자

3.3 대입 연산자(계속) 예제 3.1 a가 10인 경우 a += 3, a -= 4, a*= 2, a /= 2 연산식에 대해 결과를 구하는 프로그램을 작성하시오. 프로그램 결과 #include <stdio.h> /* 헤드파일 */ main() { int a = 10; /* 변수 선언 */ a += 3; printf("a += 3 -> %d\n",a); a=10; a -= 4; printf("a -= 4 -> %d\n",a); a=10; a*= 2; printf("a *= 2 -> %d\n",a); a=10; a /= 2; printf("a /= 2 -> %d\n",a); /* 출력함수 */ } a += 3 -> 13 a -= 4 -> 6 a *= 2 -> 20 a /= 2 -> 5 YES C 제 3 장 연산자

3.3 대입 연산자(계속) 예제 3.12 a가 30인 경우 a += 3, b -= 3, c*= 3, d /= 3, e%=3 연산식의 결과를 구하는 프로그램을 작성하시오. 프로그램 결과 #include <stdio.h> /* 헤드파일 */ main() { int a, b, c, d, e; /* 변수 선언 */ a=b=c=d=e=30; /* a b c d e에 값을 30으로 모 두 초기화시킴 */ printf("a + 3 = %d\n", a+=3); /* 변수 a에 3을 증가 */ printf("b - 3 = %d\n", b-=3); /* 변수 b에 3을 감소 */ printf("c * 3 = %d\n", c*=3); printf("d / 3 = %d\n", d/=3); printf("e / 3 나머지 = %d\n", e%=3); /* 출력함수 */ } a + 3 = 33 b - 3 = 27 c * 3 = 90 d / 3 = 10 e / 3 나머지 = 0 YES C 제 3 장 연산자

3.4 관계 연산자 YES C 제 3 장 연산자 두 데이터간의 대소 및 상등을 판별하는 연산자 결과값은 연산자에 따라 참이면 1, 거짓이면 0으로 관계 연산자의 종류와 기능 YES C 제 3 장 연산자

3.4 관계 연산자(계속) 예제 3.13 키보드로 입력되는 수가 10보다 크면 1을, 그렇지 않으면 0을 출력하는 프로그램을 작성하시오. 프로그램 결과 #include<stdio.h> /* 헤드파일 */ main() { int i, j; /* 변수 선언 */ printf("숫자를 입력하시오.\n"); scanf("%d", &i); j=(10<i); printf("Result is %d\n",j); /* 출력함수 */ } 숫자를 입력하시오. 5 Result is 0 12 Result is 1 YES C 제 3 장 연산자

3.4 관계 연산자(계속) 예제 3.14 식 1 < 0 < 2의 결과가 참인지 거짓인지를 확인하는 프로그램을 작성하시오. 프로그램 결과 #include<stdio.h> /* 헤드파일 */ main() { int j; /* 변수 선언 */ j=(1<0<2); printf("Result is %d\n",j); /* 출력함수 */ } Result is 1 YES C 제 3 장 연산자

3.4 관계 연산자(계속) 예제 3.15 자판으로 입력되는 숫자가 11보다 크거나 같은 경우는 참(1)이고, 그 외 경우를 거짓(1)으로 하는 프로그램을 작성하시오. 프로그램 결과 #include <stdio.h> main() { int i, j; /* 변수 선언 */ printf("숫자를 입력하시오.\n"); scanf("%d", &i); /* 입력 함수 */ j = (11 <= i); printf("Result is %d\n",j); /* 출력 함수 */  } 숫자를 입력하시오. 5 Result is 0 11 Result is 1 YES C 제 3 장 연산자

3.4 관계 연산자(계속) 예제 3.16 식 1<0==3<5의 결과가 참인지 거짓인지를 확인하는 프로그램을 작성하시오. 프로그램 결과 #include<stdio.h> /* 헤드파일 */ main() { int j; /* 변수 선언 */ j=1<0==3<5; printf("Result is %d\n",j); /* 출력함수 */ } Result is 0 YES C 제 3 장 연산자

3.5 논리 연산자 AND(&&), OR(||), NOT(!)등의 논리 연산을 수행 YES C 제 3 장 연산자

3.5 논리 연산자(계속) AND(&&), OR(||), NOT(!)등의 논리 연산을 수행 논리 연산자의 종류와 기능 YES C 제 3 장 연산자

3.5 논리 연산자(계속) 예제 3.17 년도를 입력받아 그 해의 2월 달이 윤달인지를 판별하여 몇일까지인지를 출력하는 프로그램을 작성하라. 프로그램 결과 #include <stdio.h> main() { int year, leap=28; printf("년도를 입력하시오 : "); scanf("%d", &year); leap += (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)); printf("%d년은 2월 달이 &d일까지 있습니다. \n”, year, leap); /* 출력 함수 */  } 입력 년도를 입력하시오 : 2004 실행결과 2004년은 2월 달이 29일까지 있습니다. YES C 제 3 장 연산자

3.5 논리 연산자(계속) 예제 3.19 0과 10에 대하여 논리곱과 논리합을 연산한 결과를 구하는 프로그램을 작성하라. 프로그램 결과 #include<stdio.h> /* 헤드파일 */ main() { int a=0, b=10; /* 변수 선언, 초기값 할당 */ int i, j; i=a&&b; j=a||b; printf(" 0 && 10 = %d \n",i); /* 출력함수 */ printf(" 0 || 10 = %d \n",j); } 0 && 10 = 0 0 || 10 = 1 YES C 제 3 장 연산자

3.5 논리 연산자(계속) 예제 3.20 a는 5, b는 12, c는 0인 경우 !a, b&&c, b||c, (i==j&&!j-i)을 연산하여 결과를 구하는 프로그램을 작성하라. 프로그램 결과 #include<stdio.h> /* 헤드파일 */ main() { int a=5,b=12,c=0; /* 변수 선언, 초기값 할당 */ int i,j,k,p; i=(!a); j=b&&c; k=b||c; p=(i==j&&!j-i); printf("!a=%d\n",i); /* 출력함수 */ printf("b&&c=%d\n",j); printf("b||c=%d\n",k); printf("i==j&&!j-i=%d\n",p); } !a= 0 b&&c= 0 b||c= 1 i==j&&!j-i= 1 YES C 제 3 장 연산자

3.5 논리 연산자(계속) 예제 3.21 입력하는 영문자가 소문자인지를 확인하는 프로그램을 작성하시오.(단 소문자이면 1, 그렇지 않으면 0이 출력되도록 한다.) 프로그램 결과 #include <stdio.h> main() { char ch; int j; /* 변수 선언 */ printf("문자를 입력하시오.\n"); scanf("%c", &ch); /* 입력 함수 */ j = (ch >= 'a' && ch <= 'z'); printf("Result is %d\n",j); /* 출력 함수 */   } 문자를 입력하시오. k Result is 1 A Result is 0 YES C 제 3 장 연산자

3.6 조건연산자 조건 연산자 : `?'와 `:' 조건 연산의 형식 조건식 ? 연산식 1 : 연산식 2 조건 연산자 : `?'와 `:' 조건 연산의 형식 조건식 ? 연산식 1 : 연산식 2 조건식의 값이 참(1)이면 연산식 1을 수행하여 결과값을 구하고, 조건식의 값이 거짓(0)이면 연산식 2를 수행하여 결과값을 구한다. 예) 다음의 연산식은 k와 j를 비교하여 k가 크면 j를 i에 대입, 크지 않으면 k를 i에 대입하는 연산 i = j < k ? j : k; 조건문. if (j < k) i = j; else i = k; YES C 제 3 장 연산자

3.6 조건연산자(계속) 예제 3.22 a(100)와 b(5)를 비교하여 a가 크면 a*b를 c에 대입하고, 크지 않으면 a/b를 c에 대입하는 연산을 수행하는 프로그램을 작성하시오. 프로그램 결과 #include<stdio.h> /* 헤드파일 */ main() { int a=100, b=50; /* 변수 선언, 초기값 할당 */ int c; c=((a>b) ? a*b : a/b); printf("결과 : %d\n", c); /* 출력함수 */ } 결과 : 5000 YES C 제 3 장 연산자

3.6 조건연산자(계속) 예제 3.23 키보드로부터 두 정수 값을 입력받아 큰 수가 출력하는 프로그램을 조건연산자를 이용하여 작성하라. 프로그램 결과 #include<stdio.h> /* 헤드파일 */ main() { int a, b, c; /* 변수 선언 */ printf("첫 번째 숫자를 입력하시오.\n"); scanf("%d",&a); /* 입력 함수 */ printf("두 번째 숫자를 입력하시오.\n"); scanf("%d",&b); c=((a<b)?b:a); printf("%d\n",c); /* 출력함수 */ } 첫 번째 숫자를 입력하시오 15 두 번째 숫자를 입력하시오. 11 YES C 제 3 장 연산자

3.7 비트연산자 비트 연산자는 주어진 데이터를 비트 단위에서 인식하여 연산을 수행하는 연산자 비트 연산자의 종류와 기능 YES C 제 3 장 연산자

3.7 비트연산자(계속) 예제 3.25 255와 173을 2진수에 대한 논리곱, 논리합, 배타적 논리합 연산을 수행하는 프로그램을 작성하라. 프로그램 결과 #include<stdio.h> /* 헤드파일 */ main() { int a=255,b=173; /* 변수 선언, 초기값 할당 */ int i,j,k; i=a&b; j=a|b; k=a^b; printf(" 255 & 173 = %d \n",i); /* 출력함수 */ printf(" 255 | 173 = %d \n",j); printf(" 255 ^ 173 = %d \n",k); } 255 & 173 = 173 255 | 173 = 255 255 ^ 173 = 82 YES C 제 3 장 연산자

3.7 비트연산자(계속) 예제 3.26 11을 비트 단위에서 1만큼 오른쪽으로 이동한 결과와, 3을 비트 단위에서 3만큼 왼쪽으로 이동하는 연산을 수행하는 프로그램을 작성하라. 프로그램 결과 #include<stdio.h> /* 헤드파일 */ main() { int a=3,b=11; /* 변수 선언, 초기값 할당 */ int f, g; f= b>>1; g=a<<3; printf("a=%d, b=%d, f=%d, g=%d\n", a, b, f, g); /* 출력함수 */ } a=3, b=11, f=5, g=24 YES C 제 3 장 연산자

3.7 비트연산자(계속) 예제 3.27 두 정수를 임시변수를 쓰지 않고 교환하는 프로그램을 XOR(^)를 사용하여 작성하라. 프로그램 결과 #include <stdio.h> void main(void) {        int i = 100, j = 200;        i ^= j;        j ^= i;        printf("%d, %d\n", i, j); } 200, 100 YES C 제 3 장 연산자

표 3.15 연산자의 우선순위 YES C 제 3 장 연산자

연산 우선 순위 예제 연산 우선 순위 예 char c = 'd'; int i = 10, j = 10, k = 20; float x = 3.4; YES C 제 3 장 연산자

실습 문제 1 두수를 입력받아 사칙연산 및 나머지 연산을 수행하는 프로그램을 작성하시오. 프로그램 결과 프로그램 결과 #include <stdio.h> main() { int a,b; printf(" input(a)==>"); scanf("%d",&a); printf("\n input(b)==>"); scanf("%d",&b); printf("%4d + %4d = %4d\n",a, b, a+b); printf("%4d - %4d = %4d\n",a, b, a-b); printf("%4d * %4d = %4d\n",a ,b, a*b); printf("%4d / %4d = %4.2f\n",a, b, (float)a/(float)b); printf("%4d mod %4d = %4d\n",a, b, a%b); } input(a)==>12 input(b)==>4 12 + 4 = 16 12 - 4 = 8 12 * 4 = 48 12 / 4 = 3 12 mod 4 = 0 YES C 제 3 장 연산자

실습 문제 2 프로그램 결과 키보드에서 3개의 정수를 입력받아 가장 큰 수를 출력하는 프로그램을 작성하시오. 프로그램 결과 #include <stdio.h> void main() { int a,b,c,max,min;   printf("input(a,b,c) ==>"); scanf("%d %d %d",&a,&b,&c); max = (a>b) ? a:b; max = (max > c)? max:c; printf("Max(%d,%d,%d) = %d\n",a,b,c,max); } input(a,b,c) ==>10 20 30 Max(10,20,30) = 30 Min(10,20,30) = 10 YES C 제 3 장 연산자

연습 문제 I 1. a가 8이고, b가 0일 경우 a AND(&&) b, a OR(||) b를 구하는 프로그램을 작성하라. 2. a를 99, b를 55로 하여 a<b이면 b2를, a<b가 아닌 경우에는 a2를 c에 대입하는 프로그램을 작성하라. 3. 아래의 실행 결과와 같은 결과를 얻을 수 있도록 프로그램을 수정하라. #include <stdio.h> void main() { int a=3,b=11; int f, g; f= b>>2; g=a<<5; printf("f=%d, g=%d\n", f, g); } 실행결과 f=1, g=96 YES C 제 3 장 연산자

연습 문제 II 4. a가 10, b가 12인 경우 a == b, a != b, ++a==--b의 값을 구하는 프로그램을 작성하라. 5. a가 50인 경우 차례로 ++a, a++, --a, a--를 수행하는 프로그램을 작성하라. 6. 15와 7의 비트 연산 AND, OR, XOR를 구하는 프로그램을 작성하라. 7. 두 수 x, y를 입력받아 비교하여 큰 수를 작은 수로 나눈 몫과 나머지를 출력하는 프로그램을 작성하라. 8. 세 수를 입력받아 삼각형인지 아닌지를 판별하라. 9. 날짜(1998년 2월 14일)를 입력받아 총 몇 일인지를 출력하는 프로그램을 작성하라. 10. 키보드에서 3개의 정수를 입력받아 가장 작은 수를 출력하는 프로그램을 작성하라. YES C 제 3 장 연산자

연습 문제 III 11. 4개의 정수를 입력받아 오림차순으로 정렬하여 출력하는 프로그램을 작성하라. (단 " ? "의 연산자만을 사용하여라.) 12. scanf()를 이용하여 10쌍(a, b)의 수를 입력받아 큰 수들의 합과 작은 수들의 합을 구하는 프로그램을 작성하라. 13. 다음 변수들을 선언하여 초기화를 시킨 후 이들의 계산을 한 결과를 출력하는 프로그램을 작성하고 그 결과가 어떻게 나왔는지를 조사하라. a= ---i; b= j- --i; c= j ---i; d= -j -- -k; e= k ++=i; f= m++ /++i * --j; g= ++i /m++ * ++n; 14. 4개의 정수를 입력받아 내림차순으로 정렬하여 출력하는 프로그램을 작성하시오. 단 " ? "의 연산자만을 사용하여라. 15. 정수(초, sec)를 입력받아 몇 시, 몇 분, 몇 초인지를 나타내는 프로그램을 작성하라. (단 음수일 경우 에러 메시지 출력) YES C 제 3 장 연산자