C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국
머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr..
,. 2013 12
Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12 1.3 13 1.4 printf() 17 1.5 21 1.6 22 25 2장 C 프로그램을 이루는 구성 요소 2.1 31 2.2 33 2.3 34 2.4 36 2.5 39 2.6 40 2.7 41 49 5
3장 기본 자료형 3.1 57 3.2 60 3.3 63 3.4 int 65 3.5 char 69 3.6 _Bool 72 3.7 73 3.8 76 3.9 sizeof 78 3.10 79 84 4장 제어의 흐름 4.1,, 93 4.2 if if-else 96 4.3 103 4.4 while 105 4.5 for 110 4.6 114 4.7 do-while 115 4.8 break, continue, goto 116 4.9 switch 122 126 5장 함수 5.1 133 5.2 139 5.3 return exit() 142 5.4 144 6
5.5 148 5.6 151 5.7 155 160 6장 배열 6.1 1 166 6.2 171 6.3 174 6.4 179 6.5 187 6.6 192 6.7 198 201 7장 포인터 7.1 207 7.2 213 7.3 215 7.4 220 7.5 226 7.6 231 7.7 main() 236 7.8 237 240 7
8장 사용자 정의형 8.1 251 8.2 260 8.3 262 8.4 266 8.5 269 273 9장 비트단위 연산자 9.1 278 9.2 286 9.3 287 291 10장 입력과 출력 10.1 getchar() putchar() 296 10.2 printf() 298 10.3 scanf() 303 10.4 sprintf() sscanf() 307 10.5 309 10.6 314 10.7 316 328 A. 333 336 8
1장 프로그래밍 시작. CPU,,,. PC Windows, Windows. Windows 7/8, Mac OS X, Windows Server 2012, Linux, UNIX.,,.. (programming environment). (text editor) (compiler).,., UNIX, Linux, Windows. Windows.. C, C++, Fortran, Java, JaveScript, Basic, Perl, Python... C. C. C,,. 1장 프로그래밍 시작 9
1.1 C C Bell Dennis Ritchie 1972 PDP-11. C UNIX, C. C 1980 C, C 1990 ANSI(American National Standards Institute) C ANSI C. ANSI C 1990 ISO(International Organization for Standardization) C. C ANSI C ANSI C ISO C. C. ISO C. C 1999 ISO C. 1990 C C90, 1999 C C99. C ANSI C. C90 C99 C. C 40. 40 C. C C. C. C. C (type),.. C UNIX, Linux, Windows 7, MAX OS X.,,, C. C.. C 10
. C. C. C,. ++..... C. C.. static.. C C++ Java. C C++ Java. C C++ Java. C. C C. C.. C. C. C,. * =., == =. C. C.. 1장 프로그래밍 시작 11
1.2 프로그래밍 준비.,.. Windows MS Visual C++, Borland C++, Linux Kylix.... C. C C..... Visual C++ Borland C++, GNU gcc. gcc.. C. UNIX Linux gcc. Windows Windows Linux Cygwin gcc. Windows Cygwin, Linux. Linux. Linux,. 12
1.3 첫 번째 프로그램.,. C.. 1.1 "Hello World!". 프로그램 1.1 int main(void) printf("hello World!"); return 0; 1.1.. C. int main(void)...... return 0; C, C. C... 1장 프로그래밍 시작 13
printf("hello World!"); printf().. printf(" 출력하고자 하는 내용 ");... (C ) (source file).... UNIX, Linux, Cygwin vi, Windows,. Windows. Cygwin vi Windows Cygwin. Cygwin..c. first.c... C (high-level programming language) (mid-level programming language) C. (machine language), 0 1., C. C. (compile) (compiler)... 14
$ 컴파일러 소스파일 UNIX, Linux, Cygwin gcc first.c. $ gcc first.c., Visual C++ cl.exe Bolrand C++ bcc32. exe. Windows Windows (시작 실행 cmd). Visual C++. C:\TEMP> cl first.c first.c C:\TEMP\, c1.exe path. first.c, first.c (executable file).. first.c UNIX Linux gcc a.out, Cygwin gcc a.exe. Windows first.exe. gcc a.out a.exe, Windows exe. gcc -o a.out. Cygwin first.c first.exe. $ gcc -o first first.c.... UNIX Linux. 1장 프로그래밍 시작 15
$ a.out Cygwin. $ a a a.exe.. C:\TEMP> first first first.exe. "Hello World!". Cygwin. $ vi first.c $ gcc -o first first.c $ first Hello World! $ $ "Hello World!"..... 16
first.c (vi first.c) # include <stdio.h> i nt main(void) printf( ); retrun 0; f irst (gcc -o first first.c) 1 0010101010 1 0101010101... 0 0011101010 1 0101010000 (first) Hello World! 1.4 printf() 1.1 printf(). printf(). printf() (screen). 2-. printf(), printf() printf(). 1.1 1.2. 프로그램 1.2 int main(void) printf("hello "); printf("world!"); return 0; 1장 프로그래밍 시작 17
$ first Hello World! $ printf() printf() (new-line) ('\n'). '\' 'n'. (escape sequence). "Enter". 1.1. 프로그램 1.3 int main(void) printf("hello\n"); printf("world!\n"); return 0; 1.3. 18
$ first Hello World! $ printf() : \n printf() : \n printf(),.. 프로그램 1.4 int main(void) printf("%d * %d = %d\n", 7, 8, 7 * 8); return 0; 1.4 printf() " ".. 1.4 printf(). 첫 번째 인자 : "%d * %d = %d\n" 두 번째 인자 : 7 세 번째 인자 : 8 네 번째 인자 : 7 * 8 printf(), " ".. printf(),. 1장 프로그래밍 시작 19
printf(). %. 1.4 printf() %d... 1.4 printf(). printf("%d * %d = %d\n", 7, 8, 7 * 8); c, d, e, E, f, g, G, i, n, o, p, u, x, X, %. d f 10. 1.4 d. 7 * 8 56.. 7 * 8 = 56 f. 1.5. 프로그램 1.5 int main(void) printf("%f * %f = %f\n", 12.9, 8.8, 12.9 * 8.8); return 0; %f. 1.5. 20
12.900000 * 8.800000 = 113.520000 1.5 입력 프로그램 C scanf(). scanf() printf(). scanf(),,.. 1.6 (2014 ). 프로그램 1.6 int main(void) int year; printf("input your birth year : "); scanf("%d", &year); printf("you are %d years old.\n", 2014 - year + 1); return 0;. scanf(). year, int year. scanf(). scanf(). scanf(" 입력 데이터 형 ", &변수); printf(). %d, %f.. 1장 프로그래밍 시작 21
&. &. %d year int. 1.6 2000. Input your birth year : 2000 Enter You are 15 years old. scanf() scanf(). 1.6 "what". Input your birth year : what Enter You are -2672025 years old. -2672025. scanf(). gets() getchar() sscanf(), scanf(). 1.6 디버깅 1.3 C. C C,. C.. (debugging).. 22
.,. 프로그램 1.7 int main(void) printf("hello World!") return 0; 1.7 1.1 4 (;). gcc.. first.c: In function 'main': first.c:5: parse error before 'return' first.c main ( ) first.c 5 return ( )........ 1장 프로그래밍 시작 23
프로그램 1.8 float main(void) printf("hello World!"); 1.8 int float, return 0;. gcc. first.c: In function 'main': first.c:3: warning: return type of 'main' is not 'int', (warning).... 24
연습 문제 1 C c. C *.c. 1.1 first.c first_test... $ cp first.c first_test $ gcc first_test 2.,. ******* * * * ******* ***** * * * * * * * * * * * * * * * * * * * * * * * * * ******* ***** * ******* * * * * * * * * * * * * * ** * * * * ******* ***** 3 printf(). %. 3 4 printf().. int main(void) int num = 1234; printf("12345678901234567890\n"); printf("===%d===\n", num); return 0; 1장 프로그래밍 시작 25
(a). (b) printf() %d %6d. (c) printf() %d %06d. (d) printf() %d %-6d. (e) (b) (d) 6, 0, -. 4. int main(void) float num = 1.234512345; printf("12345678901234567890\n"); printf("===%f===\n", num); return 0; (a).? (b) printf() %f %7.2f. (c) printf() %f %07.2f. (d) printf() %f %-7.2f. (e) (b) (d) 7,., 2, 0, -. 5. int main(void) int num; printf("input a number : "); scanf("%d", num); printf("%d X %d = %d\n", num, num, num * num); return 0; 26
(a)?.,. 힌트 : scanf(). 1.5. (b) (a) 7.8?. 6. int main(void) float num1, num2, sum; printf("input 2 real numbers : "); scanf("%f %f", &num1, &num2); sum = num1 + num2; printf("%f + %f = %f\n", num1, num2, sum); return 0; (a) 3.5 8.9. : float, scanf() printf() %f. (b) 4. Input 2 real numbers : 3.5 8.9 Enter 3.50 + 8.90 = 12.40 7 1.4 1.4... 1.4.. 1장 프로그래밍 시작 27
Input 2 integer numbers : 9 8 Enter 9 * 8 = 72 8.. for, while, do-while printf(). Input a number : 5 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20... 5 * 9 = 45 9 x 4. f(x) = 3 * x 2 - x + 20,. Input x value : 4 Enter f(4) = 64 10 a, b, c x. f(x) = a * x 2 + b * x + c,. Input coefficients a, b, c : 3-1 20 Enter Input x value : 4 Enter f(4) = 64 28
11 printf().. int main(void) int i = 30, cnt; printf("12345678901234567890\n"); cnt = printf("i = %d", i); printf("\nnumber of output characters : %d\n", cnt); return 0; (a) printf().. (b) printf() printf("i = %d\n", i). 12 scanf().. int main(void) int a1, a2, a3, cnt; printf("input three integers : "); cnt = scanf("%d%d%d", &a1, &a2, &a3); printf("number of entered data : %d\n", cnt); return 0; (a) 10 20 30. (b) 10 20?. (c) 10? 30. (d)? 20 30. 1장 프로그래밍 시작 29