1. 간단한 프로그램 -- Mission 1 1) C 컴파일러 사용법 익히기 - C source file 작성: test.c, test.cpp - compile: VC++, Turbo-C, Unix 2) 간단한 C 프로그램 작성 - printf() 함수 - 자기 소개 프로그램 - 10 + 20 2. C 프로그램 예 #include void main() { printf(“This is a C program\n”); printf(“My name: Hong, Kil-Dong\n”); printf(“My home: Seoul, Korea\n”); printf(“Home: 02)123-4567\n”); printf(“Mobile: 011)987-6543\n”); printf(“C program is interesting\n”); } 3. printf()와 scanf() 함수 #include void main() { int num; /* 정수형 변수 */ printf(“정수 입력 : ”); scanf(“%d”, &num); printf(“읽어온 정수는 %d 입니다\n”, num); } 4. printf(), scanf() 연습 -- Mission 2 1) 2개의 정수를 입력하여 덧셈 결과 출력 - int 형 변수 선언 - scanf() 함수 응용 1. 사각형(삼각형, 원) 둘레와 넓이 계산 2) 달러 <-> 원화 변환 프로그램 작성 - float 형 변수 선언 응용 1. Km <-> mile 변환: 1.609 km/mile 응용 2. 섭씨 <-> 화씨 온도변환: 9/5*C+32 5. 자료형, if 문 -- Mission 3 1) 자료형 : int, char, float, double, void - int와 float의 차이점 - int와 char의 차이점 추가 1. 변환문자 종류, type 수정자 2) If 문 사용법 - 정수를 입력하여 양수, 음수 판단 프로그램 응용 1. 정수를 입력하여 홀수, 짝수 판단 응용 2. 정수를 입력하여 3의 배수인지... 6. 연산자 우선순위 1. primary 연산자: (), [], ->(구조체포인터), .(구조체 항목) 2. 단항 연산자 : !, ~, ++, --, -, (type명), *(포인터), &(주소 연산자) , sizeof 3. 곱셈, 나눗셈: *, /, %(나머지 연산자: 정수) 4. 덧셈, 뺄셈 : +, - 5. shift 연산자: <<, >> 6. 비교 연산자 : <, <=, >, >= 7. 등가 연산자 : ==, != 8. 비트 연산자 : &, |, ^(exclusive OR) 9. 논리 연산자 : &&, ||, ! 10. 조건 연산자 : ?: 11. 치환 연산자 : =, +=, -=, *=, /=, %= >>=, <<=, &=, ^=, |= 12. comma 연산자: , 우선순위 -- 위로 갈수록 우선순위가 높아진다! 7. 자료형(data type) -- 보충 char: 한 문자(1 byte) -128 ~ 127 또는 0 ~ 255까지 int : 정수(2 or 4 bytes) -(2의 15승) ~ (2의 15승)-1 또는 0 ~ (2의 16승)-1 -(2의 31승) ~ (2의 31승)-1 또는 0 ~ (2의 32승)-1 float: 실수 하나를 저장하는 기억장소(4 bytes) 10의 -64승 ~ 10의 63승, 유효숫자는 최대 8자리 (double인 경우는 2배까지 허용!) 8. 자료형 수정자(type modifier) short, long : int 앞에만 사용 signed, unsigned : int, char 앞에만 사용 double : float 앞에만 사용 short (int) long (int) signed (int) unsigned (int) signed char signed short (int) unsigned short (int) signed long (int) unsigned long (int) double (float) 9. printf(), scanf()의 변환문자 정수 %d -- digit(10진수) %10d %-10d %ld -- long digit %u -- unsigned %o -- octal(8진수) %x -- hexa(16진수) 실수 %f %10.2f %-10.2f %e(10의 지수승 형태, 예: 0.1234e+2) %g 문자 %c %s(문자열) [연습] 16진수 정수 2개를 입력하여 덧셈결과를 16진수로 10. 변환문자 실습 #include #define PI 3.14159 void main() /* Example of printf 함수 */ { char ch = ‘A’; short i = 0x41; float pi = 3.14; printf(“ch = %c, %d, %x”, ch, ch, ch); printf(“ i = %d, %u, %o, %x, %c”, i, i, i, i, i); printf(“pi = %f, %e”, pi); printf(“The value of PI is %f or %e”, PI, PI); } [연습] char, short, float를 type 수정자로 수정하여 실습하시오. 11. 상수의 표현 정수: -123, +456, 789, 123U, 123L, 123u, 123l, 123UL, 123ul - 8진수는 0 으로 시작 : 0123, 0101 - 16진수는 0x 로 시작 : 0x41 - 1,000,000과 같이 comma가 삽입되면 error 실수: 1.23, -1.23, +1.23, 0.12e-3, 12.34F, -12.34f, 12.34L, 12.34l 문자 : 'A', '0', ‘\0123’, ‘\0x41’, ‘\n’, ‘\t’, ‘\r’, ‘\’’, ‘\\’, ‘\0’, ‘\007’ 스트링 : “This is a string”, “abc\tdef\nxyz” 12. 변수선언과 초기화 int i, j, k; long i, j, k; unsigned i, j, k; int i=0, j=0101, k=0x10; long i=100000L, j=10*20+30, k; int num1, num2, sum, product; int num1, num2, sum=0, product=1; char c = ‘A’; char c = 0x41; float pi = 3.141592; float x = 0.1234e+2; 13. 조건문 : if문 #include void main() { int num; printf(“정수를 입력하시오 : ”); scanf(“%d”, &num); if (num < 0) printf(“%d 는 음수\n”, num); else printf(“%d 는 양수 or 0\n”, num); } 14. if문 유형-1. if (조건식) 문장1; else 문장2; else부는 생략 가능! 유형-2. if (조건식) { 문장1-1; … 문장1-a; } else { 문장2-1; … 문장2-b; } 유형-3. if (조건식) { 문장1-1; … 문장1-a; } else if (조건식) { 문장2-1; … 문장2-b; } else if (조건식) { … } else { 문장n-1; … 문장n-x; } 조건식 1. 비교연산자 : <, >, >=, <=, ==, != 2. 논리연산자 : &&, ||, ! 15. if문 사용 예제 /* 섭씨를 화씨로, 화씨를 섭씨로... */ #include void main() { int n; float x; printf(“Select menu\n”); printf(“ 1. Celcius to Farenheit\n”); printf(“ 2. Farenheit to Celcius\n”); printf(“Input 1 or 2 : ”); scanf(“%d”, &n); /* 1 또는 2 입력 */ if (n == 1) { /* 섭씨를 화씨로 */ printf(“Input Celcius : ”); scanf(“%f”, &x); printf(“F = %f\n”, x*9.0/5.0+32); } else { /* 화씨를 섭씨로 */ printf(“Input Farenheit : ”); scanf(“%f”, &x); printf(“C = %f\n”, (x-32)*5.0/9.0); } } 16. 숙제 #1. 도량형 환산 프로그램 여러가지 도량형 환산 프로그램을 작성하시오. 1. Km -> mile 2. 섭씨 -> 화씨 3. 원화 -> 달러 4. Kg -> pound 5. feet -> cm …. 1) 메뉴를 보여주고 해당 메뉴를 선택 예) 1번: km -> mile, 2번: 섭씨 -> 화씨, … 2) 해당 기능을 수행하기 위해 숫자를 입력 3) 해당 기능에 대한 답을 출력 17. 반복문 -- Mission 4 1) 1부터 5까지 제곱수를 출력하는 프로그램 작성 1의 제곱은 1 2의 제곱은 4 3의 제곱은 9 4의 제곱은 16 5의 제곱은 25 2) 1~100까지, 혹은 n값을 입력하여 1~n까지 … 응용 1. 1+2+...+100을 구하려면? 응용 2. 1~100 사이의 홀수만 더하기 18. 반복문 예: for문 1) 반복문 사용안한 예 #include void main() { printf(“%d %d\n”, 1, 1*1); printf(“%d %d\n”, 2, 2*2); printf(“%d %d\n”, 3, 3*3); printf(“%d %d\n”, 4, 4*4); printf(“%d %d\n”, 5, 5*5); } 2) 반복문 사용한 예 #include void main() { int i, n; printf(“Enter a number : ”); scanf(“%d”, &n); for (i = 1; i <= n; i = i+1) printf(“%d %d\n”, i, i*i); } 19. for문 형식 for (초기화; 수식; 변경식) 문장; for (초기화; 수식; 변경식) { 문장 1; 문장 2; ... 문장 n; } [참고] 반복 종료 -- 임시변수(count 변수) 사용! /* 1부터 100까지 정수의 합 --> 1 + 2 + ... + 100 */ #include void main() { int i; /* 임시변수 */ int sum=0; for (i=1; i <= 100; i++) { sum = sum + i; printf(“%d : %d\n”, i, sum); } } 20. for 문 연습 1. 1부터 n까지 홀수(짝수)만 더하는 프로그램 2. n + (n-1) + … + 2 + 1 3. 12 + 22 + 32 + … + n2 4. 1/1 + 1/2 + 1/3 + … + 1/n 5. 1~n 사이의 3의 배수만 출력하는 프로그램 6. 1~n 사이의 3의 배수 또는 5의 배수만 출력 7. 1~n 사이의 3의 배수들의 제곱의 합 8. n! 계산 --> 1*2*…*n 9. 2n 계산 --> 2를 n번 곱한 것 10. Xy --> x, y를 입력하여 계산 11. C(n, k) = n! / [k! * (n - k)!] 계산 21. while 문 while (수식) 문장; while (수식) { 문장 1; 문장 2; ... 문장 n; } [참고] '수식'이 true인 동안 반복, '수식'이 거짓(0)이 되면 종료! #include void main() { int i; /* 임시변수 */ int sum=0; i = 1; while (i <= 100) { sum = sum + i; printf(“%d : %d\n”, i, sum); i++; /* i = i+1 */ } } 22. do~while 문 do { 문장; } while (수식); do { 문장 1; 문장 2; ... 문장 n; } while (수식); [참고] 최소한 1번 이상 반복 -> while문과 차이 #include void main() { int i; /* 임시변수 */ int sum=0; i = 1; do { sum = sum + i; printf(“%d : %d\n”, i, sum); i++; /* i = i+1 */ } while (i <= 100); } 23. for, while, do~while문 예 #include void main() { int i, n; printf(“Enter a number : ”); scanf(“%d”, &n); for (i=0; i < n; i++) printf(“%d %d\n”, i, i*i); } ========= while문으로 ========================= i = 0; while (i < n) { printf(“%d %d\n”, i, i*i); i = i + 1; } ========= do~while문으로 ====================== i = 0; do { printf (“%d %d\n”, i, i*i); i = i + 1; } while (i < n); =============================================== 24. 숙제 #2. 구구단 출력 프로그램 1부터 9까지 중에서 하나의 숫자를 입력하여 해당 구구단을 출력해 주는 프로그램을 작성하시오. 예) 5를 입력했을 때 5 * 1 = 5 5 * 2 = 10 …… 5 * 9 = 45 [주의] "1. for문, 2. while문, 3. do~while문"을 출력하고, 숫자 1-3을 입력하면 해당 반복문을 이용하도록 한다. [참고] 0을 입력하면 1~9단까지 모두 출력하게 하려면 어떻게 할까? 25. 연습: 소수(prime number) 1) 1~n 사이의 모든 소수들을 출력하시오. 2) 정수 i가 소수인지 판단 방법 (정수 i를 2,3,4, …, (i-1)로 나눈 나머지가 0인지) for (k=2; k < i; k++) { if ((i % k) == 0) printf(“%d는 소수가 아니다\n”, i); } printf("%d는 소수이다\n", i); 26. 연습: 반복문 1) 아래와 같이 출력하는 프로그램 1111111111 2222222222 … 9999999999 2) 구구단 1단~9단까지 출력하는 프로그램 3) (1) + (1+2) + (1+2+3) + ... + (1+2+...+n) 27. 함수작성법 -- Mission 4 1) 함수의 필요성 : 긴 프로그램 2) 함수실행 과정 3) 인자전달 4) return문 비트연산자, shift 연산자 & (and), | (or), ^ (x-or), ~ (complement) << (left-shift), >> (right-shift) 치환연산자 : =, +=, -=, *=, /=, <<=, >>=, &=, |= 28. 함수작성 예 #include void my_profile() { printf("My name: Hong, Kil-Dong\n"); printf("My home: Seoul, Korea\n"); } void my_phone() { printf("Home: 02)123-4567\n"); printf("Mobile: 011)987-6543\n"); } void main() { printf("This is a C program\n"); my_profile(); /* 함수 호출 */ my_phone(); /* 함수 호출 */ printf("C program is interesting\n"); } 29. 함수의 필요성 #include int input() { int i; printf("enter a number : "); printf("%d", &i); return i; } void sum_of(int x, int y) { printf("1st integer = %d\n", x); printf("2nd integer = %d\n", y); printf("%d +%d = %d\n", x, y, x +y); } void main() { int num1, num2; sum_of(10, 20); num1 = input(); /* 1st 정수 */ num2 = input(); /* 2nd 정수 */ sum_of(num1, num2); } 30. 함수작성 예 /* 섭씨를 화씨로, 화씨를 섭씨로... */ #include int input_menu() { int i; printf(“Select menu\n”); printf(“ 1. Celcius to Farenheit\n”); printf(“ 2. Farenheit to Celcius\n”); printf(“Input 1 or 2 : ”); scanf(“%d”, &i); /* 1 or 2 */ return i; } void celcius2faren() { … } void faren2celcius() { … } void main() { int n; n = input_menu(); if (n == 1) celcius2faren(); else faren2celcius(); } 31. 함수 실습 1) 2개의 정수를 입력하여 사칙연산을 수행하는 프로그램 (아래와 같이 4개의 함수를 작성) 사칙연산 --- add(), sub(), divide(), multiply() 2) 정수 i가 소수이면 1, 아니면 0을 반환하는 함수 is_prime(i)를 작성 3) is_prime()을 이용하여 2~n까지 중에서 소수만 출력하는 프로그램을 작성