총정리 : 다양한 예제 분석

59
총총총 : 총총총 총총 총총

Upload: glynn

Post on 31-Jan-2016

54 views

Category:

Documents


0 download

DESCRIPTION

총정리 : 다양한 예제 분석. 출력형식. # include // printf() #include // getch() void main() { int i=65; // i 를 int 형으로 선언, 초기값->65 printf("i => %d\n\n", i); printf("i(%%d) : %d\n", i); // 10 진수로 출력 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 총정리 : 다양한 예제 분석

총정리 : 다양한 예제 분석

Page 2: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // getch()

void main(){ int i=65; // i 를 int 형으로 선언 , 초기값 ->65

printf("i => %d\n\n", i);

printf("i(%%d) : %d\n", i); // 10 진수로 출력 printf("i(%%x) : %x\n", i); // 16 진수로 출력 printf("i(%%c) : %c\n", i); // 애스키 문자로 출력

printf("\ni : %d \ni^2 : %d", i, i*i);

getch(); // 키입력을 대기}

출력형식

Page 3: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // getch()

void main(){ int i=123; // i 를 int 형 변수로 선언 float f=12.34567;

printf("|%5d|\n", i); // 폭 : 5, 오른쪽 맞춤 printf("|%-5d|\n", i); // 왼쪽 맞춤 printf("|%5ld|\n\n",123456789); // 폭 : 9

printf("|%10f|\n", f); // 폭 : 10, 오른쪽 맞춤 printf("|%010.3f|\n", f); // 소숫점 이하 3 자리 getch(); // 키입력을 대기}

출력형식

Page 4: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf(), scanf()#include <conio.h> // getch()

void main(){ int i, suja;

printf("suja ...? "); scanf("%d", &suja);

if (suja >= 100) // 100 이상이면 printf("100 YeeSang\n"); else if (suja >= 0) // 100 미만 , 0 이상이면 printf("0 ~ 100 SaYee\n"); else if (suja >= -100) // 0 미만 , -100 이상이면 printf("-100 ~ 0 SaYee\n"); else // -100 미만이면 printf("-100 MiMan\n"); getch();}

If-else

Page 5: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ int i, hab=0;

// 1 ~ 10 의 hab 을 계산 for (i=1 ; i <= 10 ; i++) {

printf("%-3d", i); hab += i;

} printf("\n1 ~ 10 hab : %d\n", hab); getch();}

For문

Page 6: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ int i=0; long hab=0; // hab 을 구하려면 0 으로

// 초기화되어 있어야 한다 while ( i<=100 ) // i<=100 인한 반복 { hab += i; // hab 을 i 만큼 증가시킴 i++; // i 를 1 만큼 증가시킴 }

printf("1 ~ 100 hab : %ld", hab); getch();}

While

Page 7: 총정리 : 다양한 예제 분석

#include <stdio.h>

void main(){ char i=0; // char 형 범위 : -128 ~ 127

while ( 1 ) // 무한 while 루프 { printf("%5d", i);

i++; }}

Char 형 범위

Page 8: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ int i=0, n; long hab=0;

printf("n....? "); scanf("%d", &n);

do { hab += i; i++; } while ( i<=n ); // i<=n 인한 반복

printf("i : %d\n", i); printf("1 ~ n hab : %ld\n", hab); getch();}

Do-while

Page 9: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf(), scanf()#include <conio.h> // getch()

void main(){ int n;

printf("n....? "); scanf("%d", &n); printf("\n n %% 5 : %d\n", n % 5);

switch (n % 5) { case 0: printf("\nNaMerJi 0"); break; case 1: printf("\nNaMerJi 1"); break; case 2: printf("\nNaMerJi 2"); break;

default : printf("\nNaMerJi 3 or 4"); break; } getch();}

switch

Page 10: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf(), scanf() #include <conio.h> // getch()

void main(){ int suja,hab=0;

while ( 1 ) // 무한 while 루프 {

printf(" suja(IbRyuk End :0)...? "); scanf("%d", &suja);

if (suja == 0) // suja==0 이면 while 루프 종료 break;

hab += suja; // hab 에 suja 를 더한다 } printf("\n hab : %d", hab); getch();}

Break

Page 11: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf(), scanf() #include <conio.h> // getch() #include <math.h> // sqrt()

void main(){ int suja=1;

while ( suja != 0 ) // suja 가 0 이 아닌한 반복 {

printf("\n suja...? "); scanf("%d", &suja);

if (suja < 0) // 음수이면 { printf(" 0 YeeSang JungSu !\n"); continue; }

printf(" %d JeGobGun : %g\n", suja, sqrt(suja));}

printf("\n\n End"); getch();}

Continue

Page 12: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf(), scanf() #include <conio.h> // getch()

void main(){ int i, n, c='A';

while ( 1 ) // 무한 while 루프 {

printf("\n\n n ....? "); scanf("%d", &n);

for (i=1 ; i<=n ; i++) // n 회 반복 실행된다 { printf(" %c", c); if (c == 'Q') // c 가 Q 이면

goto END; c++; // c 값을 1 증가 }

} END: printf("\n\n End"); getch();}

goto

Page 13: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ int i, hab;

for (i=1 ; i<=10 ; i++) // 1 ~ 10 의 hab 을 계산 hab = hab+i; // hab += i; 와 동일

printf("1 ~ 10 hab : %d\n", hab); getch();}

초기화

Page 14: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ int i, a=1;

printf("\na : %d\n", a); for (i=1 ; i<=3 ; i++ ) printf("a : %d\t", a++); // a++ : 사용후 1 증가 printf("\na : %d\n\n", a); // a : 4

a = a*10; // a : 40

printf("\na : %d\n", a); for (i=1 ; i<=3 ; i++ ) printf("a : %d\t", ++a); // ++a : 1 증가후 사용 printf("\na : %d\n", a); // a : 43 getch();}

++ 연산자

Page 15: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ short s; // short 형 범위 : -32768 ~ 32767 long l; // long 형 범위 : 약 -21 억 ~ 21 억 s = 1000000; // short 형 범위를 넘어서는 값 l = 1000000;

printf("s : %d\n", s); printf("l : %d\n", l); getch();}

형범위

Page 16: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ long n;

while ( 1 ) // 무한 while 루프 { do {

printf(" n(Keut : 0 or 100)...? "); scanf("%d", &n);

} while (! (n>=0 && n<=100) ); // 0~100 사이가 아닌한 반복

if (n==0 || n==100) // 0 또는 100 이면 break;

printf(" n^2 : %ld\n\n", n*n); } printf("\n Keut"); getch();}

무한 while

Page 17: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ int x=20, y=10, z; char op; printf(" x : %d y : %d\n\n", x, y);

//------------------------------------ printf(" +/-...? "); op = getche();

if (op == '+') z=x+y; else z=x-y;

printf("\n %d\n", z);

//-------------------------------------- printf("\n +/-...? "); op = getche();

z = (op == '+') ? x+y : x-y ;

printf("\n %d", z); getch();}

연산자

Page 18: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ int i=2, j=3;

printf("i : %d j : %d\n\n",i,j);

printf("i/j : %d\n", i/j); printf("(float)i/j : %f\n", (float)i/j); printf("(float)(i/j) : %f\n", (float)(i/j)); printf("(int)3.789 : %d\n", (int)3.789); printf("(char)65.987 : %c\n", (char)65.987); getch();}

형변환

Page 19: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ // unsigned char 형 범위 : 0 ~ 0xFF unsigned char a=0xA7;

printf("a : %X\n\n", a);

printf("a & F0 : %X\n", a & 0xF0); printf("a | F0 : %X\n", a | 0xF0); printf("a ^ F0 : %X\n", a ^ 0xF0);

getch();}

논리연산자

Page 20: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

#define MSG "suja...? "#define MAX 100

void main(){ int i, suja;

printf("The largest input number : %d\n\n", MAX);

// MAX(==100) 보다 큰 숫자가 입력되는한 반복 do {

printf(MSG); scanf("%d", &suja);

} while (suja > MAX);

printf("\nThe largest input number : MAX\n"); printf( "Input number : %d\n", suja); getch();}

매크로

Page 21: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ short a[3][2] = { {1,2}, {3,4}, {5,6} }; int i;

printf("\n a : %p", a); printf("\n a[0] : %p", a[0]); printf("\n a[1] : %p", a[1]); printf("\n a[2] : %p\n", a[2]);

for (i=0 ; i<3 ; i++) {

printf("\n a[%d][0] : %d", i, a[i][0]);printf("\n a[%d][1] : %d", i, a[i][1]);

}

printf("\n\n sizeof(a) : %2d", sizeof(a)); printf( "\n sizeof(a[0]) : %2d", sizeof(a[0])); getch();}

2 차원배열

Page 22: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // getch()

void main(){ char *cp[4] = {"YeJeRo BaeUNun", "Visual C++",

"ShinDongJun", "GiJunYunGuSa" }; int i;

// 메모리 주소와 수록된 자료를 출력 for (i=0 ; i<4 ; i++) printf( "\ncp[%d] : %d => %s", i, cp[i], cp[i]);

getch();}

문자열배열

Page 23: 총정리 : 다양한 예제 분석

#include <stdio.h> // puts() #include <conio.h> // getch() #include <malloc.h> // malloc() #include <ctype.h> // toupper()

char *DaeMunJa(char *str) // 함수값 : str 의 각 문자를 대문자로 바꾼 문자열 { int i, j; char *p;

// 문자열 str 의 문자수를 i 에 구한다 i = 0; while (str[i] != 0) i++;

// str 의 문자열을 수록할 메모리 할당 p = (char *)malloc(i+1);

// str 의 각 문자를 대문자로 변환 , 할당된 메모리에 수록 for (j=0 ; j<i ; j++) p[j] = toupper(str[j]);

p[j] = 0; // 공문자열로 만든다 return p;}

void main(){ puts( DaeMunJa("Visual VC++. Exciting !!") ); puts( DaeMunJa(”Written by ShinDJ ???") ); getch();}

문자열 함수값

Page 24: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // getch()

long Hab(int *, int *, int *); // 함수의 원형을 선언

void main(){ int a=10, b=20, c=30;

printf("\nHab(&a, &b, &c) : %d", Hab(&a, &b, &c) ); printf("\n a : %d", a); printf("\n b : %d", b); printf("\n c : %d", c); getch();}

long Hab(int *x, int *y, int *z) // 함수값 : *x + *y + *z{ int hab = *x + *y + *z; *x = 9; *y = 8; *z = 7; return hab;}

함수인자

Page 25: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

int gob(int *x, int *y){ int h, c, g;

h = *x + *y; c = *x - *y; g = *x * *y;

*x = h; // 합 . 실인자 a 에 인도된다 *y = c; // 차 . 실인자 b 에 인도된다

return g; // 곱 : 함수값}

void main(){ int a=10, b=20;

printf("\n a : %d b : %d\n\n", a, b);

printf("\n gob(&a, &b) : %d", gob(&a, &b)); printf("\n a(Hab) : %d", a); printf("\n b(Cha) : %d", b); getch();}

함수인자 - 주소

Page 26: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // getch() #include <stdlib.h> // rand(), srand(), RAND_MAX#include <time.h> // time(), time_t#include <malloc.h> // malloc(), free()

void main(){ int i; long *lp[5]; time_t t;

// 실행시마다 다른 계열의 난수 발생되게 한다 srand( time(&t) );

// 메모리 할당 , 할당된 메모리에 난수 수록 for (i=0 ; i<5 ; i++) {

lp[i] = (long *)malloc( sizeof(long) ); *lp[i] = ( rand()*9/RAND_MAX+1 )*100000;

}

// 할당된 메모리의 주소와 수록된 자료를 출력 for (i=0 ; i<5 ; i++) { printf( "\nlp[%d] : %d BunJi", i, lp[i]); printf("\t*lp[%d] : %ld", i, *lp[i]); free( lp[i] ); // 사용이 끝나면 메모리 해제 } getch();}

포인터배열

Page 27: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // getch()

void main(){ long *p; int i;

p = (long *)1000; printf("p : %d\n", p);

// --p 는 p 의 주소를 4 바이트씩 감소 for (i=0 ; i<5 ; i++) printf("\n--p : %d", --p); getch();}

포인터주소

Page 28: 총정리 : 다양한 예제 분석

#include <stdio.h> // putchar()#include <conio.h> // getch()

void main(){ int ch;

for (ch=65 ; ch<=70 ; ch++) {

putchar(ch); // 애스키 코드가 ch 인 문자를 출력 printf(" Ascii Code : %d", ch); putchar('\n');

} getch();}

Putchar()

Page 29: 총정리 : 다양한 예제 분석

#include <stdio.h> // puts() #include <conio.h> // getch() void main(){ char *mjyul1 = "YeJeRo BaeUNun"; // char 형 포인터 char *mjyul2 = "VC++";

puts(mjyul1); puts(mjyul2);

puts("\n\aKeut"); getch(); // \a : 삑 소리}

Puts()

Page 30: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf(), scanf() #include <conio.h> // getch()

long hab(int) ; // 함수 원형 선언

long hab(int n) // 함수값 : 1 ~ n 사이의 정수합 { if (n == 1) return 1; else return n + hab(n-1);}

void main(){ int n; long h; printf("\n n... ? "); scanf("%d", &n);

h = hab(n); printf("\n 1 ~ %d hab : %d\n", n, h); getch();}

재귀호출

Page 31: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf(), NULL #include <conio.h> // getch()

void ListPyoSi(struct _gujoche *p);

struct _gujoche { char c; int i; struct _gujoche *next;};

void main(){ struct _gujoche x = { 'X', 1, NULL },

y = { 'Y', 2, NULL }, z = { 'Z', 3, NULL }, w = { '#', 77, NULL };

struct _gujoche *p;

// x->y->z 로 연결 ( 연결 리스트 ) x.next = &y, y.next = &z, z.next = NULL;

p = &x; // 연결 리스트 시작 주소를 p 에 대입 ListPyoSi(p); // 리스트 각 노드의 멤버를 출력 printf("\n");

// y 와 z 노드 사이에 w 노드를 삽입 (x->y->w->z) y.next = &w, w.next = &z;

p = &x; ListPyoSi(p); getch();}

자기참조구조체

Page 32: 총정리 : 다양한 예제 분석

void ListPyoSi(struct _gujoche *p) // p 가 가리키는 리스트의 각 노드 멤버를 출력 { // 마지막 노드에 도달할 때까지 반복 while ( p != NULL ) { printf("\n %c %2d", p->c, p->i);

p = p->next; // p 를 다음 노드로 이동 }}

Page 33: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch() #include <math.h> // sqrt(), log(), exp()...

#define PI 3.14159265

void main(){ printf("\n sqrt(123.45) : %g\n", sqrt(123.45)); printf( " log(10) : %g\n", log(10)); printf( " exp(1) : %g\n", exp(1)); printf( " sin(PI/6) : %g\n", sin(PI/6)); printf( " tan(PI/4) : %g\n", tan(PI/4)); printf( " pow(12.34, 2) : %g\n", pow(12.34,2)); getch();}

수학함수

Page 34: 총정리 : 다양한 예제 분석

Strchr()

#include <stdio.h> // printf() #include <conio.h> // getch() #include <string.h> // stchr()

void main(){ char *str1 = "C & Pointer. Powerful !"; char *str2;

str2 = strchr(str1, 'o'); // 'o' 이후 문자열만 구한다

printf("\n str1 : %s", str1); printf("\n str2 : %s", str2); getch();}

Page 35: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // getch() #include <string.h> // strlen(), strcmp()

void main(){ char *str1 = "C & POINTER"; char *str2 = "C & Pointer";

printf( "\n %u", strlen(str1)); printf("\n\n %d", strcmp( str1, str2)); printf("\n\n %d", strncmp(str1, str2, 5)); getch();}

Strcmp()

Page 36: 총정리 : 다양한 예제 분석

Strcpy()#include <stdio.h> // printf() #include <conio.h> // getch() #include <malloc.h> // malloc() #include <string.h> // strcpy(), strncpy()

void main(){ char *str1, str2[10];

str1 = (char *)malloc(10);

strcpy( str1, "ABCDEFGHI"); strncpy(str2, "ABCDEFGHI", 3);

printf("str1 : %s\n", str1); printf("str2 : %s\n", str2); // 쓰레기가 따라 붙기도 한다 getch();}

Page 37: 총정리 : 다양한 예제 분석

사용자함수#include <stdio.h> // printf(), scanf() #include <conio.h> // getch() long hab(int m, int n); // hab() 의 원형을 선언

void main(){ int i,j; long h;

//----------------- 숫자 입력 (0 을 입력하면 종료 ) do {

printf("\n i.... ? " ); scanf("%d", &i); printf( " j.... ? " ); scanf("%d", &j); h = hab(i,j); printf("\n hab : %ld\n", h);

} while ( i != 0 ); getch();}

long hab(int m, int n)// 함수값 : m ~ n 사이의 정수합 { int i; long sum=0;

for (i=m ; i<=n ; i++) sum += i;

return sum;}

Page 38: 총정리 : 다양한 예제 분석

문자열#include <stdio.h> // printf(), puts() #include <conio.h> // getche(), putch(), cputs() #include <malloc.h> // malloc() void main(){ char *cp; int n=0, i; cp = (char *)malloc(200);

// 엔터 키가 입력될 때까지 문자를 입력받는다 do {

*cp = getche(); // 문자 입력 , *cp 에 수록 n++;

} while (*cp++ != '\r');

*cp = 0; // 공문자열로 만든다 cp--; // 마지막 문자 위치로 이동

printf("\n\n");

// 입력된 문자열의 문자들을 역순으로 출력 for (i=0 ; i != n ; i++) putch( *cp-- ); printf("\n\n");

cp++; puts(cp); getch();}

Page 39: 총정리 : 다양한 예제 분석

Main 인자#include <stdio.h> /* printf() */

void main(int argc, char **argv){ int i;

printf("\n ==== : %d\n", argc);

for (i=0 ; i<argc ; i++) printf("\n *(argv+%d) : %s", i, *(argv+i) );}

Page 40: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

void main() { int i, j; int a[4][5] = { 'A', 80, 70, 0, 1,

'B', 65, 60, 0, 1, 'C', 50, 85, 0, 1, 'D', 90, 90, 0, 1 };

// i 번째 학생의 합을 a[i][3] 에 구한다 for (i=0 ; i<4 ; i++) a[i][3] = a[i][1] + a[i][2];

// i 번째 학생의 석차를 a[i][4] 에 구한다 for (i=0 ; i<4 ; i++) for (j=0 ; j<4 ; j++) if (a[j][3] > a[i][3])

a[i][4]++; printf("Name Kor Math Sum Rank\n");

// i 번째 학생의 성적을 출력 for (i=0 ; i<4 ; i++) { printf("%c %d %d %d %d",

a[i][0], a[i][1], a[i][2], a[i][3], a[i][4]); printf("\n"); } getch(); }

배열

Page 41: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf()#include <conio.h> // getch()

// a[i] 의 값을 모두 3 씩 증가시킨다 . n : 배열의 요소수

void SamJeungGa(int *a, int n) { int i;

for (i=0 ; i<n ; i++) a[i] += 3;

}

void main(){ int i, byul[] = { 10,20,30,40,50 };

SamJeungGa(byul, sizeof(byul)/sizeof(int));

for (i=0 ; i<5 ; i++) printf("\n %d", byul[i]); getch();}

배열인자

Page 42: 총정리 : 다양한 예제 분석

배열주소#include <stdio.h> // printf() #include <conio.h> // getch()

void main(){ short byul[5]; int i;

printf("\n byul : %p\n", byul);

for (i=0 ; i<5 ; i++) printf("\n &byul[%d] : %p", i, &byul[i]);

printf("\n\n byul ByteSu : %d\n", sizeof(byul)); getch();

}

Page 43: 총정리 : 다양한 예제 분석

배열포인터#include <stdio.h> // printf() #include <conio.h> // getch()

void main() { char byul[] = "BEYUL"; char *ptr = "POINTER";

int i;

// 배열 (byul) 을 포인터 형식으로 참조 for (i=0 ; i<5 ; i++)

printf("*(byul+%d) : %c\n", i, *(byul+i));

// 포인터 (ptr) 를 배열 형식으로 참조 for (i=0 ; i<7 ; i++)

printf("\nptr[%d] : %c", i, ptr[i] );

getch();}

Page 44: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // getch()

void main(){ char irum[] = "SHINDJ"; char juso[] = {'S', 'E', 'O', 'U', 'L', 0}; char chwimi[] = {'S', 'O', 'O', 'L'};

printf("\nirum : %s", irum); printf("\njuso : %s", juso); printf("\nchwimi : %s", chwimi);

getch();}

문자배열

Page 45: 총정리 : 다양한 예제 분석

문자열#include <stdio.h> // printf()#include <conio.h> // getch()

void main(){ char alpha[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char n;

printf(" alpha : %s", alpha);

printf("\n\n MyutGulJa..."); scanf("%d", &n); alpha[n] = 0;

printf("\n alpha : %s", alpha); getch();}

Page 46: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // printf()

void main() { char *p = "SHINDJ"; int i=0;

// 문자열 p 의 끝에 도달할 때까지 반복 do { printf("*(p+%d) : %c(%d)\n", i, *(p+i), *(p+i)); } while ( *(p + i++) != 0 );

getch(); }

문자포인터

Page 47: 총정리 : 다양한 예제 분석

함수값 , 함수인자#include <stdio.h> // printf() #include <conio.h> // getch()

//1 ~ n 사이의 정수를 출력 . 함수값 :1 ~ n 사이의 정수합long PyoSiHab(int n){ int i; long h=0;

// 1 ~ n 사이의 정수를 출력 for (i=1 ; i<=n ; i++)

printf("%8d", i), h += i;

return h; // 1 ~ n 사이의 정수합}

void main(){ long hab;

hab = PyoSiHab(50); printf("\n hab : %ld", hab); getch();}

Page 48: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // getche() #include <ctype.h> // isupper(), islower()....

void main(){ int c;

do { printf("\nMunJa ... ? " ); c = getche();

if (isupper(c)) printf("\n\t DaeMunJa\n"); else if (islower(c)) printf("\n\t SoMunJa\n"); else if (isdigit(c)) printf("\n\t SuJa\n"); else printf("\n\t GiTaMunJa\n");

} while ( ! isspace(c) ); // 공란 , 탭 , 엔터가 아닌한 반복

printf("\nKeut"); getch();}

Ctype.h

Page 49: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // getch() #include <malloc.h> // malloc()

void main(){ char *cp ; int danersu = 0; // 500 바이트를 할당 , 시작 주소를 cp 에 대입 cp = (char *)malloc(500); printf(" MunJaYul ... ? "); gets(cp); // 문자열의 끝 문자에 도달할 때까지 반복 while (*cp != 0) { // 공란이 아니고 문자열 끝이 아니면 ( 단어 중간이면 ) while (*cp != ' ' && *cp != 0) cp++; // cp 를 다음 문자로 이동 danersu++; while ( *cp == ' ' ) // 공란이면

cp++; // cp 를 다음 문자로 이동 } printf("\n DaNerSu : %d", danersu);

getch();}

Malloc()

Page 50: 총정리 : 다양한 예제 분석

전역 , 지역변수#include <stdio.h > // printf() #include <conio.h> // getch()

int x; // 전역변수 . HamSu(), main() 에서 모두 유효 void HamSu(){ int m; // 지역변수 . HamSu() 에서만 유효

m = 1234; x = 5678;

printf("\n\n\t\t m(HamSu): %d ", m); printf(" \n\t\t x(HamSu): %d ", x);}

void main(){ int m; // 지역변수 . main() 에서만 유효

m=12, x=34;

printf( "\n HamSu() SilHaengJun"); printf("\n\t m(main) : %d", m); printf("\n\t x(main) : %d", x);

HamSu();

printf("\n\n HamSu() SilHaengHoo"); printf("\n\t m(main) : %d", m); printf("\n\t x(main) : %d", x); getch();}

Page 51: 총정리 : 다양한 예제 분석

구조체배열#include <stdio.h> // printf()#include <conio.h> // getch()

struct _haksaeng { char irum[8]; int guger; int sansu; char sukcha;};

void main(){ struct _haksaeng hs[4] = { "Shin DJ", 99, 90, 1,

"Kim GM" , 10, 20, 1, "Goo YT", 85, 80, 1, "Choi JS", 30, 20, 1 };

int i, j, hab[4];

// i 번째 학생의 합을 hab[i] 에 구한다 for (i=0 ; i<4 ; i++) hab[i] = hs[i].guger + hs[i].sansu;

// i 번째 학생의 석차를 hs[i].sukcha 에 구한다 for (i=0 ; i<4 ; i++) for (j=0 ; j<4 ; j++)

if (hab[j] > hab[i]) hs[i].sukcha++;

printf(" Irum GuGer SanSu Hab SukCha\n");

// i 번째 학생의 성적을 출력 for (i=0 ; i<4 ; i++) { printf(" %-8s %3d %3d %3d %d",

hs[i].irum, hs[i].guger, hs[i].sansu, hab[i], hs[i].sukcha );

printf("\n"); }

getch(); }

Page 52: 총정리 : 다양한 예제 분석

구조체함수#include <stdio.h> // printf() #include <conio.h> // getch()

struct _gujoche { int hab; int cha; long gob; float mok;};typedef struct _gujoche gujoche;

gujoche hamsu(int x, int y){ gujoche a;

a.hab = x + y; a.cha = x - y; a.gob = (long) x * y; a.mok = (float)x / y;

return a;}

void main(){ gujoche x;

x = hamsu(9000,7000); printf("\n Hab : %d", x.hab); printf("\n Cha : %d", x.cha); printf("\n Gob : %d", x.gob); printf("\n Mok : %g", x.mok); getch();}

Page 53: 총정리 : 다양한 예제 분석

구조체인자#include <stdio.h> // printf()#include <conio.h> // getch()

struct _gujoche { int hab; int cha; long gob; float mok; };typedef struct _gujoche gujoche;

void hamsu(int x, int y, gujoche *p) { p->hab = x + y; p->cha = x - y; p->gob = (long) x * y; p->mok = (float)x / y; }

void main(){ gujoche x;

hamsu(9000,7000, &x);

printf("\n Hab : %d", x.hab); printf("\n Cha : %d", x.cha); printf("\n Gob : %d", x.gob); printf("\n Mok : %g", x.mok);

getch(); }

Page 54: 총정리 : 다양한 예제 분석

구조체포인터#include <stdio.h> // printf()#include <conio.h> // getch()

struct _haksaeng { char irum[10]; int guger; int sansu; char sukcha; };

// 자료형 struct _haksaeng 을 haksaeng 으로 정의 typedef struct _haksaeng haksaeng;

void main(){ haksaeng hs[4] = { "1. ShinDJ", 99, 90, 1,

"2. Kim GM", 10, 20, 1,"3. Goo YT", 85, 80, 1,"4. ChoiJS", 30, 20, 1 };

haksaeng *p;

p = hs; // p 는 hs[0] 을 가리키게된다 printf("%s %d %d\n", p->irum, p->guger, p->sansu);

p += 3; // 3 개 다음 구조체로 이동 printf("%s %d %d\n", p->irum, p->guger, p->sansu);

p--; // 하나 전 구조체로 이동 printf("%s %d %d\n", p->irum, p->guger, p->sansu); getch();}

Page 55: 총정리 : 다양한 예제 분석

#include <stdio.h> // printf() #include <conio.h> // getch() #include <math.h> // sqrt(), pow()

void main(){ double x, y;

x = sqrt(2); // 2 의 제곱근 y = pow(3,4); // 3 의 4 승

printf("\n x(sqrt(2)) : %g\n", x); printf( " y(pow(3,4)) : %g\n", y); getch();}

인자값

Page 56: 총정리 : 다양한 예제 분석

Itoa()#include <stdio.h> // printf() #include <conio.h> // getch() #include <stdlib.h> // itoa()

void main(){ int n; char mjyul[20]; // 최대 19 문자까지 수록 가능 */

while ( 1 ) {

printf("\n\n50 MyutJinSu(2 ~ 36)...? "); scanf("%d", &n);

if (n<2 || n>36) // 2 ~ 36 이 아니면 break;

itoa(50, mjyul, n); // 50 을 n 진수로 변환 printf("%s", mjyul);

} printf("\n\nKeut"); getch();}

Page 57: 총정리 : 다양한 예제 분석

매크로함수#include <stdio.h> // printf()#include <conio.h> // getch()#include <math.h> // sqrt()

#define BitByun(x, y) ( sqrt( (x)*(x) + (y)*(y) ) )#define MyunJuk(x, y) ( (x)*(y)/2 )

void main(){ int mb, np;

printf("MitByun...? "); scanf("%d", &mb); printf("NoPi......? "); scanf("%d", &np);

printf("\nBitByun : %g", BitByun(mb, np)); printf("\nMyunJuk : %d", MyunJuk(mb, np)); getch(); }

Page 58: 총정리 : 다양한 예제 분석

구조체#include <stdio.h> // printf()#include <conio.h> // getch()

struct _haksaeng { char irum[8]; int guger; int sansu; char sukcha; };

void main(){ _haksaeng sdj = {"ShinDJ", 99, 95, 3};

printf("sdj.irum : %s\n", sdj.irum); printf("sdj.guger : %d\n", sdj.guger); printf("sdj.sansu : %d\n", sdj.sansu); printf("sdj.sukcha : %d\n", sdj.sukcha);

printf("\nsizeof(_haksaeng) : %d Byte", sizeof(_haksaeng)); printf("\nsizeof(sdj) : %d Byte", sizeof(sdj)); getch();}

Page 59: 총정리 : 다양한 예제 분석

중첩구조체#include <stdio.h> // printf() #include <conio.h> // getch()

struct _JikUp { char hoisa[20]; char buser[10];};void main(){ int i; struct _SaRam x[3] = {

"Shin DJ", 18, { "ManMulSang", "WoiPan" }, "Choi JS", 21, { "BukGyungJang", "BaeDal" }, "Gang HD", 28, { "JangSuYut", "HangSang" } };

printf("\n Irum Nai HoiSa BuSer"); for (i=0 ; i<3 ; i++)

printf("\n %-8s %6d %-20s %-10s", x[i].irum, x[i].nai, x[i].jikup.hoisa, x[i].jikup.buser );getch();

}

struct _SaRam { char irum[8]; int nai; struct _JikUp jikup;};