PowerPoint 프레젠테이션

Similar documents
프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap-06.pptx

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

OCW_C언어 기초

Microsoft PowerPoint - chap-05.pptx

<4D F736F F F696E74202D20C1A635C0E520BCF6BDC4B0FABFACBBEAC0DA>

untitled

중간고사

C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap04-연산자.pptx

C 언어 프로그래밊 과제 풀이

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - chap03-변수와데이터형.pptx

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 sum - 10 (a+b) / 2 연산자 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - Chapter_04.pptx

<4D F736F F F696E74202D2032C1D6C2F72D32C2F7BDC32028B0ADC0C7C0DAB7E D20BAAFBCF6BFCD20BFACBBEAC0DA>

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - [2009] 02.pptx

untitled

Microsoft PowerPoint - chap-04.pptx

Microsoft PowerPoint - chap-04.pptx

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

1.1.1 컴퓨터의 구성 p.19

untitled

Microsoft PowerPoint - chap05-제어문.pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - gnu-w10-c-chap11

TEST BANK & SOLUTION

<4D F736F F F696E74202D20C1A634C0E520BAAFBCF6BFCDC0DAB7E1C7FC>

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

OCW_C언어 기초

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - chap-07.pptx

Microsoft PowerPoint - Chapter_02.pptx

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - ch03 - 조건문과 반복문 pm0215

Microsoft PowerPoint - gnu-w10-c-chap12

Microsoft PowerPoint - Lesson6.pptx

프로그래밍 및 연습 1

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - 2장 변수와 자료형 pptx

본 강의에 들어가기 전

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint 프레젠테이션

C 프로그래밊 개요

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

Chapter_06

11장 포인터

ABC 3장

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - c2.ppt

쉽게

06 세상을 변화시키는 연산자

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

ABC 3장

Microsoft PowerPoint - 5장 조건문 pptx

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

Microsoft PowerPoint - Chapter_05.pptx

Microsoft PowerPoint - chap03.ppt

PowerPoint 프레젠테이션

Microsoft PowerPoint - 7장 배열 pptx

Microsoft PowerPoint - CP_02_Convert_To_C_02_Step.pptx

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

슬라이드 1

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - 제11장 포인터


금오공대 컴퓨터공학전공 강의자료

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

쉽게풀어쓴 C 언어 Express 제 4 장변수와자료형 이번장에서학습할내용 제 4 장변수와자료형 제 4 장변수와자료형 * 변수와상수의개념이해 * 자료형 * 정수형 * 실수형 * 문자형 * 기호상수사용 * 오버플로우와언더플로우이해 이번장에서는변수와각종자료형을살펴봅니다.

ch15

슬라이드 1

슬라이드 1

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

Infinity(∞) Strategy

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - 제11장 포인터(강의)

PowerPoint 프레젠테이션

03 상수, 변수, 자료형

Transcription:

김서형 : 010 9320-8604

printf() 와 scanf()

기본예제

scanf() 함수 키보드로부터입력된데이터를지정된형식으로변환하여변수에저장하는함수

scanf() 의형식지정자

예제 #include <stdio.h> int main() { double grade; printf(" 학점을입력하시오 : "); scanf("%lf", &grade); } printf(" 학점이 %f 이시군요! \n", grade); return 0; 학점을입력하시오 : 4.3 학점이 4.300000 이시군요!

입력안내메시지 프로그램이 scanf() 에도달하면, 실행을중지하고사용자의입력을기다린다. scanf() 함수앞에는반드시 사용자에게입력을지시하는문장이있어야한다.

예제 #include <stdio.h> int main() { double number; 입력안내메시지가없어서무엇을하라는지알수없다. } scanf("%lf", &number); printf(" 입력된값은 %f 입니다. \n", number); return 0; 3.14 엽력된값은 3.140000 입니다.

핵심예제 사용자로부터 2 개의정수를입력받아서덧셈연산을한후에, 연산의결과를화면으로출력하는프로그램을작성해보자.

예제 // 사용자로부터입력받은 2 개의정수의합을계산하여출력 #include <stdio.h> int main() { int x; int y; int sum; printf(" 첫번째숫자를입력하시오 :"); scanf("%d", &x); printf(" 두번째숫자를입력하시오 :"); scanf("%d", &y); sum = x + y; printf(" 두수의합 : %d", sum); // 첫번째정수를저장할변수 // 두번째정수를저장할변수 // 2 개의정수의합을저장할변수 // 입력안내메시지출력 // 하나의정수를받아서 x 에저장 // 입력안내메시지출력 // 하나의정수를받아서 y 에저장 // 변수 2 개를더한다. // sum 의값을 10 진수형태로출력 } return 0;

핵심예제 사용자로부터세개의정수를입력받은후, 합계와평균값을계산하여화면에출력하는프로그램을작성하라.

예제 #include <stdio.h> int main() { int x; int y; int z; int sum; int avg; // 정수형변수 x 선언 // 정수형변수 y 선언 // 정수형변수 z 선언 // 정수형변수 sum 선언 // 정수형변수 avg 선언 printf(" 정수를입력하시오 : "); // 사용자에게값을입력하라는메시지를출력한다. scanf("%d", &x); // 사용자로부터값을받아서변수 x 에저장한다. printf(" 정수를입력하시오 : "); // 사용자에게값을입력하라는메시지를출력한다. scanf("%d", &y); // 사용자로부터값을받아서변수 y 에저장한다. printf(" 정수를입력하시오 : "); // 사용자에게값을입력하라는메시지를출력한다. scanf("%d", &z); // 사용자로부터값을받아서변수 z 에저장한다. sum = x + y + z; avg = sum / 3; // 3개의정수를합하여 sum에저장한다. // sum을 3으로나눈값을 avg에저장한다. printf(" 평균값은 %d입니다. ", avg); // avg를화면에출력한다. } return 0;

복습문제 키보드로입력한정수값을그대로출력하는프로그램을작성해보자.

Lab: 원의면적계산 원의면적을구하는프로그램을작성하여보자. 원의반지름을 r 이라고하면원의면적은 3.14*r*r 가된다.

예제 #include <stdio.h> int main() { double r; double area; double peri; // 원의반지름을나타내는변수를선언 // 원의면적을나타내는변수를선언 // 원의둘레를나타내는변수를선언 printf(" 원의반지름을입력하시오 : "); scanf("%lf", &r); // 변수 r 로반지름을입력받는다. area = 3.14*r*r; peri = 2.0*3.14*r; // 원의면적을계산하여 area에저장 // 원의둘레를계산하여 peri에저장 printf(" 원의면적 : %f", area); // 원의면적을출력한다. printf(" 원의둘레 : %f", peri); // 원의둘레를출력한다. } return 0;

두개의값바꾸기 두개의문자를입력받은후순서를바꿔출력해보자. ( 문자구분은띄워쓰기로합니다.)

세개그대로출력 키보드로입력한세개의정수값을그대로출력해보자. ( 입력할때콤마 (,) 로구분해주고콤마도그대로출력한다.)

자료형이란? 데이터의종류를자료형 (data type) 이라고한다. 변수를선언할때는자료형을적어주어야함.

자료형 데이터의타입 ( 종류 ) 을자료형 (data type) 이라고한다. 자료형 정수형 실수형 문자형 int short long float double char 많이사용되는자료형 변수를공부할때보았던내용

비트? 바이트? 비트 (bit) - Binary Digit : 0 과 1 로표현하는최소단위 바이트 (byte) : 한문자를표현하는단위 2 진수 8 개로이루어진세트 0 ~ 255 까지 256 개의경우의수를표현한다. [ 1byte = 8bit ] 1byte = 8bit = 2^8 = 256 2byte = 16bit = 2^16 = 65536 3byte = 24bit = 2^24 = 16777216 4byte = 32bit = 2^32 = 4294967296

정수형 정수를저장하는자료형 2^16 = 65536 / 2 = 32768 (3 만 2 천 7 백 ) 2^32 = 4294967296 / 2 = 2147483648 (21 억 4 천 7 백만..)

예제 #include <stdio.h> int main() { short year = 0; int sale = 0; long long total_sale = 0; year = 10; sale = 200000000; 64 비트정수형 // 약 3만2천을넘지않도록주의 // 약 21억을넘지않도록주의 total_sale = year * sale; // 웬만하면넘지않으니마음껏사용한다. printf("year : %d, sale : %d, total_sale : %d",year,sale,total_sale); } return 0; 넘으면어떻게될까? 최대값에서 + 1 year = 32768; sale = 2147483648;

형식지정자의종류 형식지정자 의미 예 실행결과 %d 정수로출력 printf("%d", 10); 10 %f 실수로출력 printf("%f", 3.14); 3.140000 %c 문자로출력 printf("%c", 'a'); a %s 문자열로출력 printf("%s", "Hello"); Hello

형식지정자의종류 + 형식지정자 출력대상 ( 자료형 ) 출력형태 %ld long 부호있는 10진수정수 %lld long long 부호있는 10진수정수 %u unsigned int 부호없는 10진수정수 %o unsigned int 부호없는 8진수정수 %x unsigned int 부호없는 16진수정수

sizeof() 연산자 자료형의크기를계산한다.( 바이트값 ) #include <stdio.h> int main(void) { printf("%d \n", sizeof(short)); printf("%d \n", sizeof(int)); printf("%d \n", sizeof(long)); printf("%d \n", sizeof(long long)); return 0; } 2 4 4 8

부호없는정수 음수가필요없다면앞에 unsigned 키워드를붙인다.

실수형 실수는 IEEE754 표준에따른부동소수점 (floating point) 방식으로표현된다. 128 비트

예제 #include <stdio.h> int main() { float x = 1.234567890123456789; double y = 1.234567890123456789; long double z = 1.234567890123456789; printf("float 의크기 =%d", sizeof(float)); printf("double 의크기 =%d", sizeof(double)); printf("long double 의크기 =%d", sizeof(long double)); } printf("x = %.25f",x); printf("y = %.25f",y); printf("z = %.25f",z); float 의크기 =4 double 의크기 =8 long double 의크기 =16 x = 1.2345678806304932000000000 y = 1.2345678901234567000000000 z = 1.2345678901234567000000000

여러가지자료형사용하기 사용자로부터정수, 실수로데이터를받아서다시출력하여보자.

예제 #include <stdio.h> int main() { int month, day, year; int ticket; float discount; printf(" 오늘의날짜를입력하시오 (YYYY.DD.YY 형식으로 ): "); scanf("%d.%d.%d", &year, &month, &day); printf(" 요즘영화한편보려면얼마나하나요? "); scanf("%d", &ticket); printf(" 멤버쉽카드가있으면몇퍼센트나할인되나요? "); scanf("%f", &discount); printf("%d 년 %d 월 %d 일저녁에 ", year, month, day); printf("%d 원으로영화한편보면어때요? ", ticket); printf("%.2f%% 나할인받을수있는데요!", discount); } return (0);

문자형 문자는컴퓨터보다는인간에게중요 문자도숫자를이용하여표현 C 에서문자는숫자로표현됩니다. 65 69 71 74 78

문자형 문자는컴퓨터보다는인간에게중요 문자도숫자를이용하여표현공통적인규격이필요하다. 아스키코드 (ASCII: American Standard Code for Information Interchange) 8 비트를사용하여영어알파벳표현 ( 예 )! 는 33, A 는 65, B 는 66, a 는 97, b 는 98!"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ `abcdefghijklmnopqrstuvwxyz{ }~

아스키코드표 ( 일부 )

핵심예제 : 문자입출력 아래의실행결과와같이사용자로부터문자를입력받아서변수에저장하고다시출력하는프로그램을작성하여보자.

예제 ( 오류... why?) #include <stdio.h> int main() { char initial, grade; printf(" 영어이름첫글자는무엇인가요 : "); scanf("%c", &initial); printf(" 프로그래밍과목학점을물어보아도되나요?(A 부터 F) "); scanf("%c", &grade); } printf("\n"); printf("%c 군의프로그래밍과목성적은 %c 입니다. ", initial, grade); return 0;

예제 ( 엔터처리 ) #include <stdio.h> int main() { char initial, grade; printf(" 영어이름첫글자는무엇인가요 : "); scanf("%c", &initial); getchar(); // 엔터는여기에걸림 printf(" 프로그래밍과목학점을물어보아도되나요?(A 부터 F) "); scanf("%c", &grade); getchar(); // 엔터는여기에걸림 printf("\n"); printf("%c 군의프로그래밍과목성적은 %c 입니다. ", initial, grade); return 0; }

getchar()?? #include <stdio.h> int main() { char initial, grade; printf(" 영어이름첫글자는무엇인가요 : "); initial = getchar(); // scanf("%c", &initial); getchar(); printf(" 프로그래밍과목학점을물어보아도되나요?(A 부터 F) "); grade = getchar(); // scanf("%c", &grade); getchar(); } printf("\n"); printf("%c 군의프로그래밍과목성적은 %c 입니다. ", initial, grade); return 0;

예제 : getchar() 안하려면 #include <stdio.h> int main() { char initial, grade; printf(" 영어이름첫글자는무엇인가요 : "); scanf("%c", &initial); printf(" 프로그래밍과목학점을물어보아도되나요?(A 부터 F) "); scanf(" %c", &grade); // %c 앞에공백 } printf("\n"); printf("%c 군의프로그래밍과목성적은 %c 입니다. ", initial, grade); return (0);

대입연산시의자동적인형변환 int x; 내림변환 x = 3.141592; // x 에는 3 이저장된다.

Lab: 태양빛도달시간 태양에서오는빛이몇초만에지구에도착하는지를컴퓨터로계산해보고자한다. 빛의속도는 1 초에 30 만 km 를이동한다. 태양과지구사이의거리는약 1 억 4960 만 km 이다.

실행결과

힌트 문제를해결하기위해서는먼저필요한변수를생성하여야한다. 여기서는빛의속도, 태양과지구사이의거리, 도달시간을나타내는변수가필요하다. 변수의자료형은모두실수형이어야한다. 왜냐하면매우큰수들이기때문이다. 빛이도달하는시간은 ( 도달시간 = 거리 / ( 빛의속도 )) 으로 계산할수있다. 실수형을 printf() 로출력할때는 %f 나 %lf 를사용한다.

소스 #include <stdio.h> int main() { double light_speed = 300000; double distance = 149600000; double time; // 빛의속도 (300000km/sec) // 태양과지구사이거리 // 149600000km 로초기화한다. // 시간을나타내는변수 time = distance / light_speed; // 거리를빛의속도로나눈다. printf(" 빛의속도는 %fkm/s ", light_speed); printf(" 태양과지구와의거리 %fkm ", distance); printf(" 도달시간은 %f 초 ", time); // 시간을출력한다. } return 0;

컴퓨터와수식 컴퓨터 (computer) 는기본적으로계산하는기계

수식 (expression) 상수, 변수, 연산자의조합연산자와피연산자로나누어진다. 3.14 radius * 피연산자연산자피연산자

산술연산자 산술연산 : 컴퓨터의가장기본적인연산 덧셈, 뺄셈, 곱셈, 나눗셈등의사칙연산을수행하는연산자 연산자 기호 의미 덧셈 x+y x와 y를더한다 뺄셈 x-y x에서 y를뺀다. 곱셈 x*y x와 y를곱한다. 나눗셈 x/y x를 y로나눈다. 나머지 x%y x를 y로나눌때의나머지값

나눗셈연산자 정수형끼리의나눗셈에서는결과가정수형으로생성하고부동소수점형끼리는부동소수점값을생성된다. 정수형끼리의나눗셈에서는소수점이하는버려진다. 형변환에서자세히학습합니다.

#include <stdio.h> 예제 int main() { int x, y, result; printf(" 두개의정수를입력하시오 : "); scanf("%d %d", &x, &y); result = x + y; printf("%d + %d = %d \n", x, y, result); 7 x 4 y } result = x - y; // 뺄셈 printf("%d - %d = %d \n", x, y, result); result = x * y; // 곱셈 printf("%d + %d = %d \n", x, y, result); result = x / y; // 나눗셈 printf("%d / %d = %d \n", x, y, result); return 0; 두개의정수를입력하시오 : 7 4 7 + 4 = 11 7-4 = 3 7 + 4 = 28 7 / 4 = 1

#include <stdio.h> 나누기몫소수점필요할때 int main() { int x, y, result; printf(" 두개의정수를입력하시오 : "); scanf("%d %d", &x, &y); } result = x + y; printf("%d + %d = %d \n", x, y, result); result = x - y; // 뺄셈 printf("%d - %d = %d \n", x, y, result); result = x * y; // 곱셈 printf("%d + %d = %d \n", x, y, result); // 나눗셈 printf("%d / %d = %.2f \n", x, y, (float)x/y); return 0; %.2f 는소수점이하두자리까지만화면에나오라는의미 정수 / 정수 말고 실수 / 정수 되도록함 두개의정수를입력하시오 : 7 4 7 + 4 = 11 7-4 = 3 7 + 4 = 28 7 / 4 = 1.75

나머지연산자 나머지연산자 (modulus operator) 는첫번째피연산자를두번째피연산자로나누었을경우의나머지를계산 10 % 2 는 0 이다. 5 % 7 는 5 이다. 30 % 9 는 3 이다. 나머지연산자를이용한짝수와홀수를구분 x % 2 가 0 이면짝수 아주유용한연산자입니다. 나머지연산자를이용한 5 의배수판단 x % 5 가 0 이면 5 의배수

나머지연산자 #include <stdio.h> int main() { int remainder; int n; printf(" 정수를입력하시오 : "); scanf("%d", &n); remainder = n % 2; printf("2 로나누었을때나머지 =%d \n", remainder); return 0; } 정수를입력하시오 : 10 2 로나누었을때나머지 =0 정수를입력하시오 : 7 2 로나누었을때나머지 =1

핵심예제 : 몫과나머지구하기 사용자로부터 2 개의정수를입력받아서첫번째정수를두번째정수로나눈몫과나머지를계산하여출력하여본다.

핵심예제소스 #include <stdio.h> int main() { int x, y, q, r; printf("2 개의정수를입력하시오 ( 예 9 2): "); scanf("%d %d", &x, &y); q = x / y; r = x % y; printf(" 몫은 %d 입니다. ", q); printf(" 나머지는 %d 입니다. ", r); } return 0;

핵심예제 : 거스름돈계산프로그램 상점에서고객이상품을사고돈을냈을경우에거스름돈을계산해주는프로그램을작성하여보자.

핵심예제소스 #include <stdio.h> int main() { int money, price, change; printf(" 고객으로부터받은돈 : "); scanf("%d", &money); printf(" 물건값 : "); scanf("%d", &price); change = (money - price); printf(" 오천원 :%d \n", change / 5000); printf(" 천원 :%d \n", (change % 5000) / 1000); printf(" 오백원 :%d \n", (change % 5000 % 1000) / 500); printf(" 백원 :%d \n", (change % 5000 % 1000 % 500) / 100); printf(" 오십원 :%d \n", (change % 5000 % 1000 % 500 % 100) / 50); printf(" 십원 :%d \n", (change % 5000 % 1000 % 500 % 100 % 50) / 10); } return 0;

만약거스름돈으로내줘야할화폐가천원, 오백원, 십원짜리만남아있다면... #include <stdio.h> int main(void) { int money, price, change; printf(" 고객으로부터받은돈 : "); scanf("%d", &money); printf(" 물건값 : "); scanf("%d", &price); change = (money - price); printf(" 천원 :%d \n", change / 1000); printf(" 오백원 :%d \n", (change % 1000) / 500); printf(" 십원 :%d \n", (change % 1000 % 5000) / 10); } return 0;

수식에서의자동적인형변환 서로다른자료형이혼합하여사용되는경우, 더큰자료형으로통일된다.

명시적인형변환 ( 캐스팅 ) 형변환 (type cast): 사용자가데이터의타입을변경하는것 (int) 1.23456 (double) x (long) (x+y) // double 형으로변환 // double 형으로변환 // long 형으로변환 1.23456 (int) 1

예제 #include <stdio.h> int main() { int i; printf("%d\n", 3/2); printf("%f\n", 3.0/2); printf("%f\n", (double)3/ 2); i = (int)1.3+ (int)1.8; } printf("%d\n", i); return 0; 1 1.500000 1.500000 2

Lab: 화씨온도를섭씨로바꾸기 5 섭씨온도 = ( 화씨온도 32) 9

잘못된부분은어디에? #include <stdio.h> int main() { double f_temp; double c_temp; printf(" 화씨온도를입력하시오 : "); scanf("%lf", &f_temp); c_temp = 5 / 9 * (f_temp - 32); printf(" 섭씨온도는 %f입니다.\n", c_temp); } return 0;

정답 #include <stdio.h> int main() { double f_temp; double c_temp; 5.0 혹은 9.0 중에하나만바꿔도되지만, 혼돈되지않게모두실수로바꾸는편이나을수도있습니다. printf(" 화씨온도를입력하시오 : "); scanf("%lf", &f_temp); c_temp = 5.0 / 9.0 * (f_temp - 32); printf(" 섭씨온도는 %f 입니다.\n", c_temp); } return 0; 화씨온도를입력하시오 : 90

증감연산자 증감연산자 : ++, -- 변수의값을하나증가시키거나감소시키는연산자

++x 와 x++ 의차이 y = ++x y= x++;

증감연산자정리 증감연산자 의미 ++x 수식의값은증가된 x값이다. x++ 수식의값은증가되지않은원래의x값이다. --x 수식의값은감소된 x값이다. x-- 수식의값은감소되지않은원래의x값이다.

#include <stdio.h> int main() { int x=10, y=10; ++x; printf("x=%d", x); --y; printf("y=%d", y); 예제 #include <stdio.h> int main() { int x=10, y=10; x--; printf("x=%d", x); y--; printf("y=%d", y); #include <stdio.h> int main() { int x=10, y=10; printf("x=%d", ++x); printf("y=%d", y--); } return 0; } return 0; } return 0; x=11 y=9 x=9 y=9 x=11 y=10

대입 ( 배정, 할당 ) 연산자 왼쪽에있는변수에오른쪽의수식의값을계산하여대입 변수 (variable) = 수식 (expression); ( 예 ) z = x + y;

대입연산자주의점 100 = x + y; // 컴파일오류!

대입연산자주의점 x = x + 1; 변수의값을 1 만큼증가시킨다.

복합연산자 복합연산자란 += 처럼대입연산자 = 와산술연산자를합쳐놓은연산자 소스를간결하게만들수있음 x = x + y 와의미가같음! x += y

복합대입연산자 복합대입연산자 x += y x -= y x *= y x /= y x %= y 의미 x = x + y x = x - y x = x * y x = x / y x = x % y

복합대입연산자 // 복합대입연산자프로그램 #include <stdio.h> int main() { int x = 10, y = 10; x += 1; y *= 2; 10 x 10 y } printf("x = %d return 0; y = %d \n", x, y); x = 11 y = 20

핵심예제 : 구의부피 구의부피를계산하는프로그램을작성하여보자. 구의부피는다음과같은공식으로계산된다. 4 V = 3 πr 3

핵심예제소스 #include <stdio.h> int main() { double volume; double radius = 3; const double PI = 3.141592; #define PI 3.141592 기억나나요? } volume = 4.0 * PI * (radius * radius * radius)/ 3.0; printf(" 반지름 3 인구의부피 : %f \n", volume ); return 0;

우선순위 어떤연산자를먼저계산할것인지에대한규칙 -- -- ++ ++ / * / * % % + + - -

우선순위

우선순위의일반적인지침 콤마 < 대입 < 논리 < 관계 < 산술 < 단항 괄호연산자는가장우선순위가높다. 모든단항연산자들은이항연산자들보다우선순위가높다. 콤마연산자를제외하고는대입연산자가가장우선순위가낮다. 연산자들의우선순위가생각나지않으면괄호를이용 ( x <= 10 ) && ( y >= 20 ) 관계연산자나논리연산자는산술연산자보다우선순위가낮다. x + 2 == y + 3

결합규칙 만약같은우선순위를가지는연산자들이여러개가있으면어떤것을먼저수행하여야하는가의규칙 * 와 % 의우선순위가같으므로왼쪽에서오른쪽으로연산을수행한다. 2 * 1 5 % 3 10 % 3 2 1

결합규칙 만약같은우선순위를가지는연산자들이여러개가있으면어떤것을먼저수행하여야하는가의규칙 = 연산자는오른쪽우선결합이므로오른쪽부터계산된다. x = y = z = 5 1 x = y = 5 2 x = 5 3 5

조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장 제어문 조건에따라서여러개의같은처리를반복

관계연산자 두개의피연산자를비교하는연산자결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. x y

관계연산자 연산자 의미 x == y x와 y가같은가? x!= y x와 y가다른가? x > y x가 y보다큰가? x < y x가 y보다작은가? x >= y x가 y보다크거나같은가? x <= y x가 y보다작거나같은가?

예제 #include <stdio.h> int main() { int x, y; printf(" 두개의정수를입력하시오 : "); scanf("%d%d", &x, &y); } printf("x == y 의결과값 : %d \n", x == y); printf("x!= y 의결과값 : %d \n", x!= y); printf("x > y 의결과값 : %d \n", x > y); printf("x < y 의결과값 : %d \n", x < y); printf("x >= y 의결과값 : %d \n", x >= y); printf("x <= y 의결과값 : %d \n", x <= y); return 0; 두개의정수를입력하시오 : 3 4 x == y 의결과값 : 0 x!= y 의결과값 : 1 x > y 의결과값 : 0 x < y 의결과값 : 1 x >= y 의결과값 : 0 x <= y 의결과값 : 1

주의할점! (x = y) y 의값을 x 에대입한다. 이수식의값은 x 의값이다. (x == y) x 와 y 가같으면 1, 다르면 0 이수식의값이된다. (x == y) 를 (x = y) 로잘못쓰지않도록주의!

논리연산자 여러개의조건을조합하여참과거짓을따지는연산자결과값은참 (1) 아니면거짓 (0) x && y x 와 y 가모두참인경우에만참이된다.

논리연산자 연산자 x && y x y 의미 AND 연산, x 와 y 가모두참이면참, 그렇지않으면거짓 OR 연산, x 나 y 중에서하나만참이면참, 모두거짓이면거짓!x NOT 연산, x 가참이면거짓, x 가거짓이면참

AND 연산자 27 800 (age <= 30) && (toeic >= 700) 참 (1) 참 (1) 참 (1)

OR 연산자 27 699 (age <= 30) (toeic >= 700) 참 (1) 거짓 (0) 참 (1)

NOT 연산자 피연산자의값이참이면연산의결과값을거짓으로만들고, 피연산자의값이거짓이면연산의결과값을참으로만든다. result =!1; result =!(2==3); // result 에는 0 가대입된다. // result 에는 1 이대입된다.

예제 #include <stdio.h> int main() { int x, y; printf(" 두개의정수를입력하시오 : "); scanf("%d%d", &x, &y); printf("%d && %d 의결과값 : %d \n", x, y, x && y); printf("%d %d 의결과값 : %d \n", x, y, x y); printf("!%d 의결과값 : %d \n", x,!x); return 0; } 두개의정수를입력하시오 : 10 1 && 0 의결과값 : 0 1 0 의결과값 : 1!1 의결과값 : 0

if-else 문 날씨가좋은가? 거짓 참 테니스를친다. 공부를한다. if( 조건식 ) 문장 1; else 문장 2; 조건식이참이면실행된다. 조건식이거짓이면실행된다.

if-else 문 if ( number > 0 ) { printf( 양수입니다. \n"); } else { } printf(" 양수가아닙니다.\n");

핵심예제 : 홀수, 짝수구별하기 키보드에서입력받은정수가홀수인지짝수인지를말해주는프로그램을작성하여보자.

예제 #1 // if-else 문을이용하여홀수와짝수를구분한다. #include <stdio.h> int main() { int number; printf(" 정수를입력하시오 :"); scanf("%d", &number); 2 로나누어서나머지가 0 이면짝수이다. if( number % 2 == 0 ) printf(" 입력된정수는짝수입니다.\n"); else printf(" 입력된정수는홀수입니다.\n"); } return 0; 정수를입력하시오 : 23 입력된정수는홀수입니다.

핵심예제 : 큰수출력하기 사용자로부터두개의정수를입력받아서둘중에서큰수를출력한다.

예제 #1 #include <stdio.h> int main() { int x, y, max; printf(" 첫번째정수 : "); scanf("%d", &x); printf(" 두번째정수 : "); scanf("%d", &y); if (x > y) else max = x; max = y; } printf(" 큰수는 %d \n", max); return 0;

Lab: 윤년판단 입력된연도가윤년인지아닌지를판단하는프로그램을만들어보자.

예제 #3 // 윤년판단프로그램 #include <stdio.h> int main(void) { int year; printf(" 연도를입력하시오 : "); scanf("%d", &year); if((year % 4 == 0 && year % 100!= 0) year % 400 == 0) printf("%d 년은윤년입니다.\n", year); else printf("%d 년은윤년이아닙니다.\n", year); } return 0;

복합문 복합문 (compound statement) 중괄호를사용하여문장들을그룹핑하는것, 블록 (block) 이라고도한다. 단일문대신들어갈수있다. if( score >= 60 ) { printf(" 합격입니다.\n"); } printf(" 장학금도받을수있습니다.\n"); 조건식이참이면 2 개의문장이묶여서실행된다.

중첩 if if 문에다시 if 문이포함 if( 조건식 1 ) if( 조건식 2 ) 문장 ;

중첩 if if( score >= 80 ) if( score >= 90 ) printf(" 당신의학점은 A 입니다.\n"); if 문안의문장자리에 if 문이들어간경우 if( score >= 80 ) if( score >= 90 ) else printf(" 당신의학점은 A 입니다.\n"); printf(" 당신의학점은 B 입니다.\n"); if 문안의문장자리에 if-else 문이들어간경우

if 와 else 의매칭문제 else 절은가장가까운 if 절과매치된다. if(score > 80) if( score >= 90) X O printf( 당신의학점은 A입니다 \n ); else printf( 당신의학점은 B입니다 \n ) if( score >= 80 ) { if( score >= 90 ) printf(" 당신의학점은 A입니다.\n"); } else printf(" 당신의학점은 A 나 B 가아닙니다.\n"); 만약다른 if 절과 else 절을매치시키려면중괄호를사용하여블록으로묶는다.

핵심예제 : 학점결정하기 성적이 90 점이상이면 A 학점, 80 점이상이고 90 점미만이면 B 학점, 70 점이상이고 80 점미만이면 C 학점과같이결정하는것이다.

소스 #include <stdio.h> int main() { int score; printf(" 성적을입력하시오 : "); scanf("%d", &score); } if (score >= 90) printf(" 합격 : 학점 A\n"); else if (score >= 80) printf(" 합격 : 학점 B\n"); else if (score >= 70) printf(" 합격 : 학점 C\n"); else if (score >= 60) printf(" 합격 : 학점D\n"); else printf(" 불합격 : 학점F\n"); return 0;

실습 : 이차방정식 1. 사용자에게이차방정식의계수 a, b, c를입력하도록한다. 2. 만약 a가 0이면근은 -c/b이다. 3. 판별식 (b 2 4ac) 가음수이면실근은존재하지않는다. 4. 위의조건에해당되지않으면다음과같은공식을이용하여실근을구한다. x = b ± b2 4ac 2a

실행결과

알고리즘 사용자로부터 a, b, c를읽는다. if a == 0이면일차방정식의근을구한다. 실근을출력한다. (-c/b) else 판별식 (b 2-4ac) 을계산한다. if 판별식 >= 0 근의공식을이용하여실근을구한다. 실근을출력한다. else 실근은없다는메시지출력

#include <stdio.h> #include <math.h> int main() { } double a, b, c, dis, value; printf(" 계수 a 를입력하시오 : "); scanf("%lf", &a); printf(" 계수 b 를입력하시오 : "); scanf("%lf", &b); printf(" 계수 c 를입력하시오 : "); scanf("%lf", &c); if( a == 0 ) else { } return 0; printf(" 방정식의근은 %f 입니다.", -c/b); dis = b*b - 4.0*a*c; if( dis > 0 ) { } else if( dis == 0 ) else 이차방정식소스 value = sqrt(dis); printf(" 방정식의근은 %f 입니다.\n", (-b+value)/(2.0*a)); printf(" 방정식의근은 %f 입니다.\n", (-b-value)/(2.0*a)); printf(" 방정식의근은 %f 입니다.\n", (-b)/(2.0*a)); printf(" 실근이존재하지않습니다.\n");

Lab: 산술계산기

#include <stdio.h> 계산기소스 int main() { char op; int x, y, result; printf(" 수식을입력하시오 \n"); printf("( 예 : 2 + 5) \n"); printf(">>"); scanf("%d %c %d", &x, &op, &y); if( op == '+' ) result = x + y; else if( op == '-' ) result = x - y; else if( op == '*' ) result = x * y; else if( op == '/' ) result = x / y; else if( op == '%' ) result = x % y; else printf(" 지원되지않는연산자입니다. \n"); } printf("%d %c %d = %d \n", x, op, y, result); return 0;