메뉴 건너뛰기

아시아평생교육원

프로그래밍자료실

동영상URL

 

************************************************************************

#include <stdio.h>

 

int main(void)

{

printf("Hello World\n");

 

return 0;

}

 

 

************************************************************************

/* Ex02_01.c */

//#include <stdio.h>

 

int main(void)

{

    printf("Hello World\n");

    

    return 0;

}

 

 

************************************************************************

/* Ex02_02.c */

#include <stdio.h>

 

int main(void)

{

float num;

int i_part;

float f_part;

 

printf("실수를 입력하세요 : ");

scanf("%f", &num);

 

i_part = num;

f_part = num - i_part;

 

printf("%f의 정수부는 %d이고, 실수부는 %f입니다.\n", 

        num, i_part, f_part);

 

return 0;

}

 

 

************************************************************************

/* Ex03_01.c */

#include <stdio.h>

 

int main(void)

{

    int amount;

    int price = 1000;

 

    printf("수량 : %d, 가격 : %d\n", amount, price);

    amount = 100;

    price = 2000;

    printf("수량 : %d, 가격 : %d\n", amount, price);

 

    return 0;

}

 

 

 

************************************************************************

/* Ex03_02.c */

#include <stdio.h>

 

int main(void)

{

    char grade = '\x41';

    int data = 0x7b;

    unsigned int age = 75U;

    long fileSize = 1234567L;

    double area = 123.25;

    double taxRate = 25e-2;

    float temperature = 17.5F;

 

    printf("grade = %c\n", grade);

    printf("data = %d, %o, %x\n", data, data, data);

    printf("age = %u\n", age);

    printf("fileSize = %d\n", fileSize);

    printf("area = %f, %e, %g\n", area, area, area);

    printf("taxRate = %f\n", taxRate);

    printf("temperature = %f\n", temperature);

 

    return 0;

}   

 

 

************************************************************************

/* Ex03_03.c */

#include <stdio.h>

 

#define MAX 100

 

int main(void)

{

    int num1 = MAX;

    int num2 = MAX - 1;

    int num3 = -MAX;

 

    printf("num1 = %d\n", num1);

    printf("num2 = %d\n", num2);

    printf("num3 = %d\n", num3);

    printf("MAX = %d\n", MAX);

 

    return 0;

}

 

 

 

************************************************************************

/* Ex03_04.c */

#include <stdio.h>

 

int main(void)

{

    const double pi = 3.14;

    const int max;

 

    printf("pi = %f\n", pi);

    printf("max = %d\n", max);

 

    //pi = 3.1415;

    //max = 100;

 

    return 0;

}

 

 

 

************************************************************************

/* Ex03_05.c */

 

#include <stdio.h>

 

int main()

{

    char ch;

 

    scanf("%c", &ch);

    printf("%c 문자의 ASCII 코드 : %d (%x)\n", ch, ch, ch);

 

    return 0;

}

 

 

************************************************************************

/* Ex03_06.c */

#include <stdio.h>

 

int main(void)

{

    short num1 = -10;

    unsigned short num2 = num1;

 

    printf("부호 있는 정수 : %d\n", num1);

    printf("부호 없는 정수 : %d\n", num2);

 

    return 0;

}

 

 

************************************************************************

/* Ex03_07.c */

#include <stdio.h>

 

int main(void)

{

    short num1 = 32767;

    short num2 = -32768;

    unsigned short num3 = 65535; 

    unsigned short num4 = 0;     

 

    num1 = num1 + 1;

    num2 = num2 - 1;

    num3 = num3 + 1;

    num4 = num4 - 1;

 

    printf("num1 = %d\n", num1);

    printf("num2 = %d\n", num2);

    printf("num3 = %d\n", num3);

    printf("num4 = %d\n", num4);

 

    return 0;

}

 

 

************************************************************************

/* Ex03_08.c */

#include <stdio.h>

#include <limits.h>

 

int main(void)

{

    short num1 = SHRT_MAX; // SHRT_MAX는 short 형의 최대값

    short num2 = SHRT_MIN; // SHRT_MIN는 short 형의 최소값

    unsigned short num3 = USHRT_MAX;   // USHRT_MAX는 unsigned short 형의 최대값

    unsigned short num4 = 0;

 

    num1 = num1 + 1;

    num2 = num2 - 1;

    num3 = num3 + 1;

    num4 = num4 - 1;

 

    printf("num1 = %d\n", num1);

    printf("num2 = %d\n", num2);

    printf("num3 = %d\n", num3);

    printf("num4 = %d\n", num4);

 

    return 0;

}

 

 

************************************************************************

/* Ex03_09.c */

#include <stdio.h>

 

int main(void)

{

    float   pi1 = 3.141592653589793;

    double  pi2 = 3.141592653589793;

 

    printf("float  형의 pi 값 : %f\n", pi1);

    printf("double 형의 pi 값 : %f\n", pi2);

 

    printf("float  형의 pi 값 : %30.25f\n", pi1);

    printf("double 형의 pi 값 : %30.25f\n", pi2);

 

    return 0;

}

 

 

 

************************************************************************

/* Ex03_10.c */

#include <stdio.h>

 

int main(void)

{

    float num1 = 3.5e39;    // float 형으로 표현할 수 없는 아주 큰 값

    float num2 = 1.8e-39;   // float 형으로 표현할 수 없는 아주 작은 값

 

    printf("num1 = %30.25f\n", num1);

    printf("num2 = %30.25f\n", num2);

 

    return 0;

}

 

 

************************************************************************

/* Ex03_11.c */

#include <stdio.h>

 

int main(void)

{

    char ch;

    int num;

    double fnum;

 

    printf("ch  의 바이트 크기 : %d\n", sizeof ch);   // 변수의 크기를 구할 때는 () 생략 가능

    printf("num 의 바이트 크기 : %d\n", sizeof num);

    printf("fnum의 바이트 크기 : %d\n", sizeof fnum);

 

    printf("3.14f의 바이트 크기 : %d\n", sizeof 3.14f);

 

    printf("char   형의 바이트 크기 : %d\n", sizeof(char));    // 데이터 형의 크기를 구할 때는 () 필요

    printf("short  형의 바이트 크기 : %d\n", sizeof(short));

    printf("int    형의 바이트 크기 : %d\n", sizeof(int));

    printf("long   형의 바이트 크기 : %d\n", sizeof(long));

    printf("float  형의 바이트 크기 : %d\n", sizeof(float));

    printf("double 형의 바이트 크기 : %d\n", sizeof(double));

 

    return 0;

}

 

 

 

************************************************************************

/* Ex04_01.c */

#include <stdio.h>

 

int main(void)

{

    int num1, num2;

    int result;

 

    printf("두 개의 정수를 입력하세요 : ");

    scanf("%d %d", &num1, &num2);

 

    result = num1 + num2;

    printf("%d + %d = %d\n", num1, num2, result);

 

    result = num1 - num2;

    printf("%d - %d = %d\n", num1, num2, result);

 

    result = num1 * num2;

    printf("%d * %d = %d\n", num1, num2, result);

 

    result = num1 / num2;

    printf("%d / %d = %d\n", num1, num2, result);

 

    result = num1 % num2;

    printf("%d %% %d = %d\n", num1, num2, result);

 

    return 0;

}

 

 

************************************************************************

/* Ex04_02.c */

#include <stdio.h>

 

int main(void)

{

    int num;

    int thousands, tens;

 

    printf("6자리 정수를 입력하세요 : ");

    scanf("%d", &num);

 

    thousands = num / 1000;

    tens = num % 1000;

    printf("%d,%d\n", thousands, tens);

 

    return 0;

}

 

 

************************************************************************

/* Ex04_03.c */

#include <stdio.h>

 

int main(void)

{

    int count;

    int value1, value2;

    float temperature = 10.5f;

 

    count = 10;

    value1 = ++count;

    printf("value1 = %d, count = %d\n", value1, count);

 

    count = 10;

    value2 = count++;

    printf("value2 = %d, count = %d\n", value2, count);

 

    count = 10;

    ++count;

    printf("count = %d\n", count);

 

    count = 10;

    count++;

    printf("count = %d\n", count);

 

    temperature++;

    printf("temperature = %f\n", temperature);

 

    return 0;

}

 

 

************************************************************************

/* Ex04_04.c */

#include <stdio.h>

 

int main(void)

{

    int a = 10;

    int b = 20;

 

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

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

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

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

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

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

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

 

    return 0;

}

 

 

************************************************************************

/* Ex04_05.c */

#include <stdio.h>

 

int main(void)

{

    int score = 95;

 

    printf("90점 이상 100점 이하인가? : %d\n", 

        score >= 90 && score <= 100);

 

    printf("0점 또는 100점인가? : %d\n", 

        score == 0 || score == 100);

 

    printf("0점인가? : %d\n", !score);

 

    return 0;

}

 

 

************************************************************************

/* Ex04_06.c */

#include <stdio.h>

 

int main(void)

{

    int a = 10; // 0x0a

    int b = 12; // 0x0c

    int c;

 

    c = a & b;

    printf("a & b = %08x(%d)\n", c, c);

 

    c = a | b;

    printf("a | b = %08x(%d)\n", c, c);

 

    c = a ^ b;

    printf("a ^ b = %08x(%d)\n", c, c);

 

    c = ~a;

    printf("~a = %08x(%d)\n", c, c);

 

    return 0;

}

 

 

************************************************************************

/* Ex04_07.c */

#include <stdio.h>

 

int main(void)

{

    int a = 10; // 0x0a

    int b;

 

    b = a << 2;

    printf("a << 2 = %08x(%d)\n", b, b);

 

    b = a >> 2;

    printf("a >> 2 = %08x(%d)\n", b, b);

 

    return 0;

}

 

 

 

************************************************************************

/* Ex04_08.c */

#include <stdio.h>

 

int main(void)

{

    int num;

 

    num = 5;

    printf("num = %d\n", num);

 

    num += 2;

    printf("num = %d\n", num);

 

    num *= 2;

    printf("num = %d\n", num);

 

    num |= 3;

    printf("num = %d\n", num);

    

    num <<= 2;

    printf("num = %d\n", num);

 

    return 0;

}

 

 

 

************************************************************************

/* Ex04_09.c */

#include <stdio.h>

 

int main(void)

{

    int a, b;

    int min, max;

 

    printf("두 개의 정수를 입력하세요 : ");

    scanf("%d %d", &a, &b);

 

    min = a < b ? a : b;

    max = a > b ? a : b;

 

    printf("min = %d, max = %d\n", min, max);

 

    return 0;

}

 

 

 

 

 

************************************************************************

/* Ex04_10.c */

#include <stdio.h>

 

int main(void)

{

    short a = 500;

    short b = 800;

    short c;

 

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

 

    c  = a * b;

    printf("c = %d\n", c);

 

    return 0;

}

 

 

 

************************************************************************

/* Ex04_11.c */

#include <stdio.h>

 

int main(void)

{

    int num;

    double f;

 

    num = 3.14;

    printf("num = %d\n", num);

 

    f = 123;

    printf("f = %f\n", f);

 

    return 0;

}

 

 

 

************************************************************************

/* Ex04_12.c */

#include <stdio.h>

 

int main(void)

{

    int num;

    float f;

 

    f = 10 / 3;

    printf("f = %f\n", f);

 

    f = (float) 10 / 3;

    printf("f = %f\n", f);

 

    f = (float) 10 / (float) 3;

    printf("f = %f\n", f);

 

    num = (int) (12.5 + 10.7);

    printf("num = %d\n", num);

 

    num = (int)12.5 + (int)10.7;

    printf("num = %d\n", num);

 

    return 0;

}

 

 

 

************************************************************************

/* Ex04_13.c */

#include <stdio.h>

 

int main(void)

{

    int a = 1, b = 2, c = 3;

    int result;

 

    result = a + b * c % 2;

    printf("result = %d\n", result);

 

    result = a > b || c > 0;

    printf("result = %d\n", result);

 

    result = a > b || c > 0 && b > c;

    printf("result = %d\n", result);

 

    result = ++a * b--;

    printf("result = %d\n", result);

 

    result = a = b = c;

    printf("result = %d\n", result);

 

    return 0;

}

 

 

 

************************************************************************

/* Ex05_01.c */

#include <stdio.h>

 

int main(void)

{

    int score;

 

    printf("점수를 입력하세요 : ");

    scanf("%d", &score);

 

    if( score < 60 )

        printf("%d점은 불합격입니다.\n", score);

 

    if( score >= 60 )

        printf("%d점은 합격입니다.\n", score);

 

    return 0;

}

 

 

************************************************************************

/* Ex05_02.c */

#include <stdio.h>

 

int main(void)

{

    int score;

 

    printf("점수를 입력하세요 : ");

    scanf("%d", &score);

 

    if( score < 60 )

        printf("%d점은 불합격입니다.\n", score);

    else

        printf("%d점은 합격입니다.\n", score);

 

    return 0;

}

 

 

************************************************************************

/* Ex05_03.c */

#include <stdio.h>

 

int main(void)

{

    int score;

    char grade;

 

    printf("점수를 입력하세요 : ");

    scanf("%d", &score);

 

    if( score >= 90 )

        grade = 'A';

    else if( score >= 80 )

        grade = 'B';

    else if( score >= 70 )

        grade = 'C';

    else if( score >= 60 )

        grade = 'D';

    else 

        grade = 'F';

 

    printf("%c 학점입니다.\n", grade);

 

    return 0;

}

 

 

************************************************************************

/* Ex05_04.c */

#include <stdio.h>

 

int main(void)

{

    int score;

    char grade;

 

    printf("점수를 입력하세요 : ");

    scanf("%d", &score);

 

    if( score < 0 || score > 100 )

    {

        printf("잘못 입력하셨습니다.\n");

    }    

    else

    {

        if( score >= 90 )

            grade = 'A';

        else if( score >= 80 )

            grade = 'B';

        else if( score >= 70 )

            grade = 'C';

        else if( score >= 60 )

            grade = 'D';

        else 

            grade = 'F';

 

        printf("%c 학점입니다.\n", grade);

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex05_05.c */

#include <stdio.h>

 

int main(void)

{

    int a, b;

    char op;

 

    printf("수식을 입력하세요 : ");

    scanf("%d %c %d", &a, &op, &b);

 

    switch( op )

    {

    case '+':

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

        break;

    case '-':

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

        break;

    case '*':

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

        break;

    case '/':

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

        break;

    default:

        printf("계산할 수 없습니다.\n");

        break;

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex05_06.c */

#include <stdio.h>

 

int main(void)

{

    int a, b;

    char op;

 

    printf("수식을 입력하세요 : ");

    scanf("%d %c %d", &a, &op, &b);

 

    if( op == '+' )

    {

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

    }

    else if( op == '-' )

    {

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

    }

    else if( op == '*' )

    {

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

    }

    else if( op == '/' )

    {

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

    }

    else

    {

        printf("계산할 수 없습니다.\n");

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex05_07.c */

#include <stdio.h>

 

int main(void)

{

    int a, b;

    char op;

 

    printf("수식을 입력하세요 : ");

    scanf("%d %c %d", &a, &op, &b);

 

    switch( op )

    {

    case '+':

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

    case '-':

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

    case '*':

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

    case '/':

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

    default:

        printf("계산할 수 없습니다.\n");

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex05_08.c */

#include <stdio.h>

 

int main(void)

{

    int i;

 

    for( i = 1 ; i <= 10 ; i++)

        printf("%d ", i);

 

    printf("\n");

 

    return 0;

}

 

 

************************************************************************

/* Ex05_09.c */

#include <stdio.h>

 

int main(void)

{

    int i;

    int sum = 0;

    int factorial = 1;

 

    for( i = 1 ; i <= 10 ; i++)

    {

        sum += i;

        factorial *= i;

    }

 

    printf("1~10의 합 : %d\n", sum);

    printf("1~10의 곱 : %d\n", factorial);

 

    return 0;

}

 

 

************************************************************************

/* Ex05_10.c */

#include <stdio.h>

 

int main(void)

{

    int i, j;

 

    for( i = 1 ; i < 10 ; i++ )

    {

        for( j = 1 ; j < 10 ; j++ )

        {

            printf("%d*%d=%2d ", i, j, i*j);

        }

        printf("\n");

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex05_11.c */

#include <stdio.h>

 

int main(void)

{

    int i;

 

    i = 1;

    while( i <= 10 )

        printf("%d ", i++);

 

    printf("\n");

 

    return 0;

}

 

 

************************************************************************

/* Ex05_12.c */

#include <stdio.h>

 

int main(void)

{

    int i;

    int sum = 0;

    int factorial = 1;

 

    i = 1;

    while( i <= 10 )

    {

        sum += i;

        factorial *= i;

        i++;

    }

 

    printf("1~10의 합 : %d\n", sum);

    printf("1~10의 곱 : %d\n", factorial);

 

    return 0;

}

 

 

************************************************************************

/* Ex05_13.c */

#include <stdio.h>

 

int main(void)

{

    int a, b;

    char op;

 

    printf("수식을 입력하세요 (0 0 0 입력시 종료) : ");

    scanf("%d %c %d", &a, &op, &b);

 

    while ( a != 0 || b != 0 || op != '0' )

    {

        switch( op )

        {

        case '+':

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

            break;

        case '-':

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

            break;

        case '*':

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

            break;

        case '/':

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

            break;

        default:

            printf("계산할 수 없습니다.\n");

            break;

        }

 

        printf("수식을 입력하세요 (0 0 0 입력시 종료) : ");

        scanf("%d %c %d", &a, &op, &b);

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex05_14.c */

#include <stdio.h>

 

int main(void)

{

    int num;

    int i;

 

    while ( 1 )

    {

        printf("정수를 입력하세요 (Ctrl+C 입력 시 종료) : ");

        scanf("%d", &num);

 

        for ( i = 1 ; i < 10 ; i++)

            printf("%d*%d=%2d ", num, i, num * i);

        printf("\n");

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex05_15.c */

#include <stdio.h>

 

int main(void)

{

    int i;

 

    i = 1;

    do 

        printf("%d ", i++);

    while ( i <= 10 );

 

    printf("\n");

 

    return 0;

}

 

 

************************************************************************

/* Ex05_16.c */

#include <stdio.h>

 

int main(void)

{

    int i;

 

    for ( i = 1 ; i <= 10 ; i++ )

    {

        if ( i % 2 == 0 )

            break;

        printf("%d ", i);

    }

    printf("\n");

 

    return 0;

}

 

 

************************************************************************

/* Ex05_17.c */

#include <stdio.h>

 

int main(void)

{

    int num, sum;

    int i;

 

    while ( 1 )

    {

        printf("정수를 입력하세요 (-1 입력시 종료) : ");

        scanf("%d", &num);

 

        if ( num == -1 )

            break;

 

        sum = 0;

        for ( i = 1 ; i <= num ; i++)

            sum += i;

        printf("%d까지의 합계 : %d\n", num, sum);

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex05_18.c */

#include <stdio.h>

 

int main(void)

{

    int i;

 

    for ( i = 1 ; i <= 10 ; i++ )

    {

        if ( i % 2 == 0 )

            continue;

        printf("%d ", i);

    }

    printf("\n");

 

    return 0;

}

 

 

************************************************************************

/* Ex05_19.c */

#include <stdio.h>

 

int main(void)

{

    int i;

 

    for ( i = 1 ; i <= 10 ; i++ )

    {

        if ( i % 2 == 0 )

            goto exit;

        printf("%d ", i);

    }

exit:

    printf("\n");

 

    return 0;

}

 

 

************************************************************************

/* Ex05_20.c */

#include <stdio.h>

 

int main(void)

{

    int i;

 

    for ( i = 1 ; i <= 10 ; i++ )

    {

        if ( i % 2 == 0 )

            return 1;

        printf("%d ", i);

    }

    printf("프로그램을 종료합니다.\n");

 

    return 0;

}

 

 

************************************************************************

/* Ex06_01.c */

#include <stdio.h>

 

void PrintHello(void) 

{

     printf("프로그램을 시작합니다.\n");

}

 

void PrintBye(void)

{

printf("프로그램을 종료합니다.\n");

 

}

 

int main(void)

{

    PrintHello();

    PrintBye();

 

    return 0;

}

 

 

************************************************************************

/* Ex06_02.c */

#include <stdio.h>

 

void PrintSumAndAverage(int a, int b)

{

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

    printf("평균 : %f\n", (double) (a + b) / 2);

}

 

int main(void)

{

    int x, y;

 

PrintSumAndAverage(10, 20);

 

    printf("두 정수를 입력하세요 : ");

    scanf("%d %d", &x, &y);

PrintSumAndAverage(x, y);

 

    return 0;

}

 

 

************************************************************************

/* Ex06_03.c */

#include <stdio.h>

 

int GetFactorial(int num) 

{

    int i;

    int fact = 1;

    for(i = 1 ; i <= num ; i++)

        fact *= i;

    return fact;

}

 

int GetSum(int num) 

{

    int i;

    int sum = 0;

    for(i = 1 ; i <= num ; i++)

        sum += i;

    return sum;

}

 

int main(void)

{

    int result1, result2;

 

    result1 = GetFactorial(10);

    printf("10 팩토리얼 = %d\n", result1);

 

    result2 = GetSum(10);

    printf("1~10의 합계 = %d\n", result2);

    

    return 0;

}

 

 

************************************************************************

/* Ex06_04.c */

#include <stdio.h>

 

double GetMax(double a, double b, double c)

{

    double max;

    max = a > b ? a : b;

    max = c > max ? c : max;

    return max;

}

 

int main(void)

{

    double x, y, z;

    double result;

 

    printf("세 개의 실수를 입력하세요 : ");

    scanf("%lf %lf %lf", &x, &y, &z);

    result = GetMax(x, y, z);

    printf("result = %f\n", result);

 

    //result = GetMax(0.5, 10.5);

    //result = GetMax(0.5, 10.5, 12.5, 1.5);

 

    return 0;

}

 

 

************************************************************************

/* Ex06_05.c */

#include <stdio.h>

 

int main(void)

{

    int i_res;

    float f_res;

 

 

    i_res = GetFactorial(5);

    printf("5! = %d\n", i_res);

 

    f_res = GetMax(0.5, 10.5, 12.5);

    printf("최대값 = %f\n", f_res);

 

    return 0;

}

 

int GetFactorial(int num) 

{

    int i;

    int fact = 1;

    for(i = 1 ; i <= num ; i++)

        fact *= i;

    return fact;

}

 

float GetMax(float a, float b, float c) 

{

    float max;

    max = a > b ? a : b;

    max = c > max ? c : max;

    return max;

}

 

 

************************************************************************

/* Ex06_06.c */

#include <stdio.h>

 

int GetFactorial(int num);

double GetMax(double a, double b, double c);

 

int main(void)

{

    int i_res;

    double f_res;

 

    i_res = GetFactorial(5);

    printf("5! = %d\n", i_res);

 

    f_res = GetMax(0.5, 10.5, 12.5);

    printf("최대값 = %f\n", f_res);

 

    return 0;

}

 

int GetFactorial(int num) 

{

    int i;

    int fact = 1;

    for(i = 1 ; i <= num ; i++)

        fact *= i;

    return fact;

}

 

double GetMax(double a, double b, double c) 

{

    double max;

    max = a > b ? a : b;

    max = c > max ? c : max;

    return max;

}

 

 

************************************************************************

/* Ex06_07.c */

#include <stdio.h>

 

void PrintCount(void);

 

int main(void)

{

    int count = 0;

 

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

 

    return 0;

}

 

void PrintCount(void)

{

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

}

 

 

 

************************************************************************

/* Ex06_08.c */

#include <stdio.h>

 

void PrintCount(void);

 

int main(void)

{

    int count = 0;

 

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

 

    PrintCount();

 

    return 0;

}

 

void PrintCount(void)

{

    int count = 100;

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

}

 

 

 

************************************************************************

/* Ex06_09.c */

#include <stdio.h>

 

void TestLocal(void);

 

int main(void)

{

    TestLocal();

    TestLocal();

 

    return 0;

}

 

void TestLocal(void)

{

    int num = 0;

 

    printf("num = %d\n", num++);

}

 

 

 

************************************************************************

/* Ex06_10.c */

#include <stdio.h>

 

void PrintCount(void);

void Increment(void);

void Decrement(void);

 

int count;

 

int main(void)

{

    count = 0;

 

    PrintCount();

    Increment();

    Increment();

    PrintCount();

 

    Decrement();

    PrintCount();

 

    return 0;

}

 

void PrintCount(void)

{

    printf("count = %d\n", count);

}

 

void Increment(void)

{

    count++;

}

 

void Decrement(void)

{

    count--;

}

 

 

************************************************************************

/* Ex06_11.c */

#include <stdio.h>

 

void PrintCount(void);

void Increment(void);

void Decrement(void);

 

int main(void)

{

    count = 0;

 

    Increment();

    PrintCount();

 

    return 0;

}

 

int count;

 

void PrintCount(void)

{

    printf("count = %d\n", count);

}

 

 

void Increment(void)

{

    count++;

}

 

void Decrement(void)

{

    count--;

}

 

 

 

************************************************************************

/* Ex06_12.c */

#include <stdio.h>

 

void PrintCount(void);

void Increment(void);

void Decrement(void);

 

int count;

 

int main(void)

{

    Increment();

    PrintCount();

 

    return 0;

}

 

void PrintCount(void)

{

    printf("count = %d\n", count);

}

 

void Increment(void)

{

    count++;

}

 

void Decrement(void)

{

    count--;

}

 

 

 

************************************************************************

/* Ex06_13.c */

#include <stdio.h>

 

void Test(void);

 

int num = 10;

 

int main(void)

{

    int num = 20;

 

    while( 1 )

    {

        int num = 30;

 

        printf("num = %d\n", num++);

 

        if(num > 25)

           break;

    }

    printf("num = %d\n", num);

 

    Test();

 

    return 0;

}

 

void Test(void)

{

    printf("num = %d\n", num);

}

 

 

 

************************************************************************

/* Ex06_14.c */

#include <stdio.h>

 

void Swap(int x, int y);

 

int main(void)

{

    int a = 10;

    int b = 20;

 

    printf("Swap 전의 a = %d, b = %d\n", a, b);

 

    Swap(a, b);

 

    printf("Swap 후의 a = %d, b = %d\n", a, b);

 

    return 0;

}

 

void Swap(int x, int y)

{

    int temp;

 

    temp = x;

    x = y;

    y = temp;

}

 

 

************************************************************************

/* Ex06_15.c */

#include <stdio.h>

 

void GetSmallerAndLarger(int a, int b, int smaller, int larger);

 

int main(void)

{

    int smaller = 0, larger = 0;

 

    GetSmallerAndLarger(10, 20, smaller, larger);

 

    printf("smaller = %d, larger = %d\n", smaller, larger);

 

    return 0;

}

 

void GetSmallerAndLarger(int a, int b, int smaller, int larger)

{

    smaller = a < b ? a : b;

    larger = a > b ? a : b;

}

 

 

 

************************************************************************

/* Ex07_01.c */

#include <stdio.h>

 

int main(void)

{

    int arr[5];

    int i;

 

    arr[0] = 10;

    arr[1] = 20;

    arr[2] = 30;

    arr[3] = 40;

    arr[4] = 50;

 

    for(i = 0 ; i < 5 ; i++)

        printf("arr[%d] = %d\n", i, arr[i]);

 

    return 0;

}

 

 

************************************************************************

/* Ex07_02.c */

#include <stdio.h>

 

int main(void)

{

    int arr[5];

    int i;

 

    arr[0] = 10;

    arr[1] = 20;

    arr[2] = 30;

    arr[3] = 40;

    arr[4] = 50;

    arr[5] = 60;

 

    for(i = 0 ; i < 5 ; i++)

        printf("arr[%d] = %d\n", i, arr[i]);

 

    return 0;

}

 

 

************************************************************************

/* Ex07_03.c */

#include <stdio.h>

 

int main(void)

{

    int arr[5] = { 1, 2, 3, 4, 5 };

    int i;

 

    for(i = 0 ; i < 5 ; i++)

        printf("%d ", arr[i]);

    printf("\n");

 

    return 0;

}

 

 

************************************************************************

/* Ex07_04.c */

#include <stdio.h>

 

#define MAX 5

 

int main(void)

{

    int arr[MAX] = { 0 };

    int i;

    int sum;

    double average;

 

    printf("%d개의 정수를 입력하세요 : ", MAX);

    for(i = 0 ; i < MAX ; i++)

        scanf("%d", &arr[i]);

 

    for(i = 0, sum = 0 ; i < MAX ; i++)

        sum += arr[i];

 

    average = (double)sum / (double)MAX;

    printf("합계 : %d, 평균 : %5.2f\n", sum, average);

 

    return 0;

}

 

 

************************************************************************

/* Ex07_05.c */

#include <stdio.h>

 

#define SIZE 10

 

int main(void)

{

    int array[SIZE] = { 23, 96, 35, 42, 81, 19, 8, 77, 50, 64 };

    int i, j, index;

    int temp;

 

    for(i = 0; i < SIZE-1 ; i++)

    {

        index = i;  

        for(j = i+1 ; j < SIZE ; j++)

        {

            if( array[index] > array[j] )

                index = j;

        }

        temp         = array[i];

        array[i]     = array[index];

        array[index] = temp;

    }

 

    printf("정렬 결과 : ");

    for(i = 0 ; i < SIZE ; i++)

        printf("%d ", array[i]);

    printf("\n");

 

    return 0;

}

 

 

************************************************************************

/* Ex07_06.c */

#include <stdio.h>

 

int main(void)

{

    short data[2][3];

    int i, j;

 

    data[0][0] = 1;

    data[0][1] = 2;

    data[0][2] = 3;

    data[1][0] = 4;

    data[1][1] = 5;

    data[1][2] = 6;

 

    for(i = 0; i < 2 ; i++)

    {

        for(j = 0 ; j < 3 ; j++)

        {

            printf("%d ", data[i][j]);

        }

        printf("\n");

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex07_07.c */

#include <stdio.h>

 

int main(void)

{

    char str1[4] = "abc";

    char str2[10] = "12345";

    char str3[] = "Hello World";

 

    printf("str1 = %s\n", str1);

    printf("str2 = %s\n", str2);

    printf("str3 = %s\n", str3);

 

    return 0;

}

 

 

************************************************************************

/* Ex07_08.c */

#include <stdio.h>

#include <string.h>

 

int main(void)

{

    char str1[20], str2[20];

  

    strcpy(str1, "abcde");

    printf("str1 = %s\n", str1);

 

    strcpy(str2, str1);

    printf("str2 = %s\n", str2);

 

    return 0;

}

 

 

************************************************************************

/* Ex07_09.c */

#include <stdio.h>

#include <string.h>

 

int main(void)

{

    char str1[] = "abcde";

    char str2[10] = "";

  

    printf("str1의 길이 = %d\n", strlen(str1));

    printf("str2의 길이 = %d\n", strlen(str2));

    printf("문자열의 길이 = %d\n", strlen("Hello World"));

 

    return 0;

}

 

 

************************************************************************

/* Ex07_10.c */

#include <stdio.h>

#include <string.h>

 

int main(void)

{

    char str1[20];

    char str2[20] = "ABCDE";

 

    strcpy(str1, "abcde");

 

    if( strcmp(str1, "abcde") == 0 )

        printf("두 문자열이 같습니다.\n");

    else

        printf("두 문자열이 다릅니다.\n");

 

    if( strcmp(str1, str2) == 0 )

        printf("두 문자열이 같습니다.\n");

    else

        printf("두 문자열이 다릅니다.\n");

 

    return 0;

}

 

 

************************************************************************

/* Ex07_11.c */

#include <stdio.h>

#include <string.h>

 

int main(void)

{

    char str[20] = "abcde";

 

    strcat(str, "12345");

 

    printf("str = %s\n", str);

 

    return 0;

}

 

 

************************************************************************

/* Ex07_12.c */

#include <stdio.h>

#include <string.h>

 

int main(void)

{

    char name[20];

 

    printf("이름을 입력하세요 : ");

    scanf("%s", name);

    printf("%s씨, 안녕하세요?\n", name);

 

    return 0;

}

 

 

************************************************************************

/* Ex07_13.c */

#include <stdio.h>

#include <string.h>

 

int main(void)

{

    char name[20];

    char msg[40];

 

    printf("이름을 입력하세요 : ");

    gets(name);

 

    sprintf(msg, "%s씨, 안녕하세요?", name);

    puts(msg);

 

    return 0;

}

 

 

************************************************************************

/* Ex07_14.c */

#include <stdio.h>

#include <string.h>

 

int main(void)

{

    char s[3][5];

    int i;

 

    strcpy(s[0], "ab");

    strcpy(s[1], "cdef");

    strcpy(s[2], "ghi");

 

    s[2][0] = 'G';

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

        printf("%s 문자열의 길이 : %d\n", s[i], strlen(s[i]));

    

    return 0;

}

 

 

************************************************************************

/* Ex08_01.c */

#include <stdio.h>

 

int main(void)

{

    char *pc;

    int *pi;

    double *pd;

 

    printf("pc의 크기 : %d\n", sizeof(pc));

    printf("pi의 크기 : %d\n", sizeof(pi));

    printf("pd의 크기 : %d\n", sizeof(pd));

 

    printf("char*  의 크기 : %d\n", sizeof(char*));

    printf("short* 의 크기 : %d\n", sizeof(short*));

    printf("int*   의 크기 : %d\n", sizeof(int*));

    printf("float* 의 크기 : %d\n", sizeof(float*));

    printf("double*의 크기 : %d\n", sizeof(double*));

 

    return 0;

}

 

 

************************************************************************

/* Ex08_02.c */

#include <stdio.h>

 

int main(void)

{

    int x;

    int *p;

 

    p = &x;

    *p = 10;

 

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

    printf("x  = %d\n", x);

 

    printf("p  = %p\n", p);

    printf("&x = %p\n", &x);

 

    printf("&p = %p\n", &p);

 

    return 0;

}

 

 

************************************************************************

/* Ex08_03.c */

#include <stdio.h>

 

int main(void)

{

    char ch;

    char *pc = &ch;

 

    int n;

    int *pi = &n;

 

    double d;

    double *pd = &d;

 

    int arr[3];

    int i;

 

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

        printf("pc+%d = %p\n", i, pc+i);

 

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

        printf("pi+%d = %p\n", i, pi+i);

 

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

        printf("pd+%d = %p\n", i, pd+i);

 

    for(i = 0 ; i < 5 ; i++)

        printf("&arr[%d]-&arr[0] = %d\n", i, &arr[i]-&arr[0]);

    

    return 0;

}

 

 

************************************************************************

/* Ex08_04.c */

#include <stdio.h>

 

int main(void)

{

    int arr[5] = {10, 20, 30, 40, 50};

    int *p = &arr[0];

    int i;

 

    for(i = 0 ; i < 5 ; i++, p++)

        printf("%d\n", *p);

    

    return 0;

}

 

 

************************************************************************

/* Ex08_05.c */

#include <stdio.h>

 

int main(void)

{

    int arr[5] = {10, 20, 30, 40, 50};

    int i;

 

    for(i = 0 ; i < 5 ; i++)

    {

        printf("&arr[%d] = %p, ", i, &arr[i]);

        printf("arr+%d = %p\n", i, arr+i);

    }

 

    for(i = 0 ; i < 5 ; i++)

    {

        printf("arr[%d] = %d, ", i, arr[i]);

        printf("*(arr+%d) = %d\n", i, *(arr+i));

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex08_06.c */

#include <stdio.h>

 

int main(void)

{

    int arr[5] = {10, 20, 30, 40, 50};

    int * p = arr;

    int i;

 

    for(i = 0 ; i < 5 ; i++)

    {

        printf("arr+%d = %p, ", i, arr+i);

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

    }

 

    for(i = 0 ; i < 5 ; i++)

    {

        printf("arr[%d] = %d, ", i, arr[i]);

        printf("p[%d] = %d\n", i, p[i]);

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex08_07.c */

#include <stdio.h>

#include <string.h>

 

int main(void)

{

    char *p = "abcde";

 

    printf("p = %s\n", p);

    printf("p = %p\n", p);

    printf("p = %p\n", "abcde");

 

    p[0] = 'A';

    strcpy(p, "hello");

 

    return 0;

}

 

 

************************************************************************

/* Ex08_08.c */

#include <stdio.h>

#include <string.h>

 

int main(void)

{

    char *p = "abcde";

 

    printf("p = %s\n", p);

    printf("p = %p\n", p);

    printf("p = %p\n", "abcde");

 

    p = "hello";

 

    printf("p = %s\n", p);

    printf("p = %p\n", p);

    printf("p = %p\n", "hello");

 

    return 0;

}

 

 

************************************************************************

/* Ex09_01.c */

#include <stdio.h>

#include <string.h>

 

struct product {

char name[20];

int price;

int stock;

};

 

int main(void)

{

struct product prd1;

struct product prd2 = {"생수2L", 9500, 20};

 

prd1.price = 15000;

prd1.stock = 30;

strcpy(prd1.name, "커피믹스");

 

printf("%s : %d원, 재고량=%d\n", 

prd1.name, prd1.price, prd1.stock);

printf("%s : %d원, 재고량=%d\n", 

prd2.name, prd2.price, prd2.stock);

 

return 0;

}

 

 

************************************************************************

/* Ex09_02.c */

#include <stdio.h>

 

struct point {

    int x, y;

};

 

int main(void)

{

    struct point pt1, pt2;

 

    printf("pt1의 x, y 좌표를 입력하세요 : ");

    scanf("%d %d", &pt1.x, &pt1.y);

 

    printf("pt2의 x, y 좌표를 입력하세요 : ");

    scanf("%d %d", &pt2.x, &pt2.y);

 

if( pt1.x == pt2.x && pt1.y == pt2.y )

printf("두 점의 좌표가 같습니다.\n");

else

printf("두 점의 좌표가 다릅니다.\n");

 

    return 0;

}

 

 

************************************************************************

/* Ex09_03.c */

#include <stdio.h>

 

struct point {

int x, y;

};

 

int main(void)

{

struct point pt1 = { 10, 20 };

struct point pt2 = { 30, 40 };

struct point pt3 = pt1;

struct point pt4;

 

printf("pt1의 좌표 : %d, %d\n", pt1.x, pt1.y);

printf("pt3의 좌표 : %d, %d\n", pt3.x, pt3.y);

if( pt1.x == pt3.x && pt1.y == pt3.y )

printf("pt1과 pt3의 좌표가 같습니다.\n");

else

printf("pt1과 pt3의 좌표가 다릅니다.\n");

 

pt4 = pt2;

 

printf("pt2의 좌표 : %d, %d\n", pt2.x, pt2.y);

printf("pt4의 좌표 : %d, %d\n", pt4.x, pt4.y);

if( pt2.x == pt4.x && pt2.y == pt4.y )

printf("pt2과 pt4의 좌표가 같습니다.\n");

else

printf("pt2과 pt4의 좌표가 다릅니다.\n");

 

return 0;

}

 

 

************************************************************************

/* Ex09_04.c */

#include <stdio.h>

#include <string.h>

 

#define MAX_PRODUCT 5

 

typedef struct product {

char name[20];

int price;

int stock;

} PRODUCT;

 

int main(void)

{

PRODUCT prd[MAX_PRODUCT];

int i;

 

printf("%d 개의 상품 정보를 입력하세요. \n", MAX_PRODUCT);

for( i = 0; i < MAX_PRODUCT; i++ )

{

printf("상품명 : ");

scanf("%s", prd[i].name);

printf("가격, 재고량 : ");

scanf("%d %d", &prd[i].price, &prd[i].stock);

}

 

printf("\n상 품 명                 가 격      재 고 량\n");

for( i = 0; i < MAX_PRODUCT; i++ )

{

printf("%-20s  %8d  %10d", 

prd[i].name, prd[i].price, prd[i].stock);

if( prd[i].stock < 10 )

printf(" ==> 재고 부족! 주문 필요!\n");

else

printf("\n");

}

 

return 0;

}

 

 

************************************************************************

/* Ex09_05.c */

#include <stdio.h>

#include <math.h>

 

struct point {

    int x, y;

};

 

double GetDistance(struct point* p1, struct point* p2);

 

int main(void) 

{

    struct point pt1 = {0, 0};

    struct point pt2 = {10, 10};

    double distance;

 

    distance = GetDistance(&pt1, &pt2);

    printf("두 점 사이의 거리 : %5.2f\n", distance);

 

    return 0;

}

 

double GetDistance(struct point* p1, struct point* p2)

{

    int dx = p2->x - p1->x;

    int dy = p2->y - p1->y;

 

    return sqrt(dx*dx + dy*dy);

}

 

 

************************************************************************

/* Ex09_06.c */

#include <stdio.h>

 

struct time {

    unsigned int sec : 6;

    unsigned int min : 6;

    unsigned int hour : 5;

};

 

int main(void)

{

    struct time t1;

 

    printf("time 구조체의 크기 : %d\n", sizeof(struct time));

 

    t1.hour = 5;

    t1.min = 30;

    t1.sec = 70;

 

    printf("%02d:%02d:%02d\n", t1.hour, t1.min, t1.sec);

 

    return 0;

}

 

 

************************************************************************

/* Ex09_07.c */

#include <stdio.h>

 

union data {

    unsigned long dword;

    unsigned char byte[4];

};

 

int main(void)

{

    union data d1;

    int i;

 

    printf("data 공용체의 크기 : %d\n", sizeof(union data));

 

    d1.dword = 0x12345678;

    printf("d1.dword = %08x\n", d1.dword);

    for( i = 0 ; i < 4 ; i++ )

        printf("d1.byte[%d] = %02x\n", i, d1.byte[i]);

 

    return 0;

}

 

 

************************************************************************

/* Ex09_08.c */

#include <stdio.h>

 

enum week {sun, mon, tue, wed, thu, fri, sat};

 

int main(void)

{

    enum week weekday;

 

    weekday = mon;

 

    switch( weekday )

    {

    case sun:

        printf("일요일입니다.\n");

        break;

    case mon:

        printf("월요일입니다.\n");

        break;    

    case tue:

        printf("화요일입니다.\n");

        break;

    case wed:

        printf("수요일입니다.\n");

        break;    

    case thu:

        printf("목요일입니다.\n");

        break;

    case fri:

        printf("금요일입니다.\n");

        break;

    case sat:

        printf("토요일입니다.\n");

        break;

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex09_09.c */

#include <stdio.h>

 

struct point {

    int x;

    int y;

};

 

typedef struct point POINT;

 

int main(void)

{

    struct point pt1 = {10, 20};

    POINT pt2;

 

    pt2 = pt1;   

    printf("pt2의 좌표 : %d, %d\n", pt2.x, pt2.y);

 

    return 0;

}

 

 

************************************************************************

/* Ex10_01.c */

#include <stdio.h>

 

void Swap(int x, int y);

 

int main(void)

{

    int a = 10;

    int b = 20;

 

    printf("Swap 전의 a = %d, b = %d\n", a, b);

 

    Swap(a, b);

 

    printf("Swap 후의 a = %d, b = %d\n", a, b);

 

    return 0;

}

 

void Swap(int x, int y)

{

    int temp;

 

    temp = x;

    x = y;

    y = temp;

}

 

 

************************************************************************

/* Ex10_02.c */

#include <stdio.h>

 

void Swap(int *x, int *y);

 

int main(void)

{

    int a = 10;

    int b = 20;

 

    printf("Swap 전의 a = %d, b = %d\n", a, b);

 

    Swap(&a, &b);

 

    printf("Swap 후의 a = %d, b = %d\n", a, b);

 

    return 0;

}

 

void Swap(int *x, int *y)

{

    int temp;

 

    temp = *x;

    *x = *y;

    *y = temp;

}

 

 

************************************************************************

/* Ex10_03.c */

#include <stdio.h>

 

void GetSumProduct(int x, int y, int *sum, int *product);

 

int main(void)

{

    int a = 5, b = 8;

    int res1, res2;

 

    GetSumProduct(a, b, &res1, &res2);

 

    printf("%d + %d = %d\n", a, b, res1);

    printf("%d + %d = %d\n", a, b, res2);

 

    return 0;

}

 

void GetSumProduct(int x, int y, int *sum, int *product)

{

    *sum = x + y;

    *product = x * y;

}

 

 

 

************************************************************************

/* Ex10_04.c */

#include <stdio.h>

 

void PrintArray(int *arr, int size);

int GetSumOfArray(int *arr, int size);

 

int main(void)

{

    int x[5] = {10, 20, 30, 40, 50};

    int y[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

 

    printf("x 배열 : ");

    PrintArray(x, 5);

    printf("합계 : %d\n\n", GetSumOfArray(x, 5));

    

    printf("y 배열 : ");

    PrintArray(y, 10);

    printf("합계 : %d\n\n", GetSumOfArray(y, 10));

 

    printf("y 배열의 일부분 : ");

    PrintArray(y+2, 5);

    printf("합계 : %d\n\n", GetSumOfArray(y+2, 5));

 

    return 0;

}

 

void PrintArray(int *arr, int size)

{

    int i;

 

    for(i = 0 ; i < size ; i++)

        printf("%d ", arr[i]);

    printf("\n");

}

 

int GetSumOfArray(int *arr, int size)

{

    int i;

    int total;

 

    for(i = 0, total = 0 ; i < size ; i++)

        total += arr[i];

 

    return total;

}      

 

 

 

************************************************************************

/* Ex10_05.c */

#include <stdio.h>

 

void PrintArray(const int *arr, int size);

void SortArray(int *arr, int size);

 

int main(void)

{

    int x[5] = {43, 6, 24, 88, 34};

    int y[10] = {12, 35, 7, 45, 78, 22, 98, 77, 1, 28};

 

    printf("x 배열 : ");

    PrintArray(x, 5);

    SortArray(x, 5);

    printf("정렬후 : ");

    PrintArray(x, 5);

    

    printf("y 배열 : ");

    PrintArray(y, 10);

    SortArray(y, 10);

    printf("정렬후 : ");

    PrintArray(y, 10);

 

    return 0;

}

 

void PrintArray(const int *arr, int size)

{

    int i;

 

    //arr[0] = 100;

    for(i = 0 ; i < size ; i++)

        printf("%d ", arr[i]);

    printf("\n");

}

 

void SortArray(int *arr, int size)

{

    int i, j, index;

    int temp;

 

    for(i = 0; i < size-1 ; i++)

    {

        index = i;  

        for(j = i+1 ; j < size ; j++)

        {

            if( arr[index] > arr[j] )

                index = j;

        }

        temp       = arr[i];

        arr[i]     = arr[index];

        arr[index] = temp;

    }

}      

 

 

 

************************************************************************

/* Ex10_06.c */

#include <stdio.h>

 

typedef struct point {

    int x;

    int y;

} POINT;

 

void PrintPoint(POINT *p);

 

int main(void)

{

    POINT p1 = {100, 200};

    PrintPoint(&p1);

 

    return 0;

}

 

void PrintPoint(POINT *p)

{

    printf("(%d, %d)\n", p->x, p->y);

}

 

 

 

************************************************************************

/* Ex10_07.c */

#include <stdio.h>

 

typedef struct point {

    int x;

    int y;

} POINT;

 

void PrintPoint(const POINT *p);

void MovePoint(POINT *p, int dx, int dy);

 

int main(void)

{

    POINT pt1 = {100, 200};

    POINT pt2 = {300, 400};

 

    printf("pt1의 좌표: ");

    PrintPoint(&pt1);

    printf("pt2의 좌표: ");

    PrintPoint(&pt2);

 

    MovePoint(&pt1, 10, 10);

 

    printf("변경된 pt1의 좌표: ");

    PrintPoint(&pt1);

 

    return 0;

}

 

void PrintPoint(const POINT *p)

{

    //p->x = 100;

    printf("(%d, %d)\n", p->x, p->y);

}

 

void MovePoint(POINT *p, int dx, int dy)

{

    p->x += dx;

    p->y += dy;

}

 

 

 

************************************************************************

/* Ex10_08.c */

#include <stdio.h>

 

int GetGCD(int m, int n);

 

int main( )

{

int x, y;

 

printf("두 정수를 입력하세요 : ");

scanf("%d %d", &x, &y);

printf("%d과 %d의 최대 공약수는 %d입니다.\n", x, y, GetGCD(x, y));

 

return 0;

}

 

int GetGCD(int m, int n)

{

if( m % n == 0 ) 

return n;

return GetGCD(n, m % n);

}

 

/*

int GetGCD(int m, int n)

{

if(m % n == 0) { 

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

return n;

}

printf("calls GetGCD(%d, %d)\n", n, m%n);

return GetGCD(n, m % n);

}

//*/

 

 

************************************************************************

/* Ex10_09.c */

#include <stdio.h>

 

void TestStatic(void);

 

int main(void)

{

    int i;

  

    for(i = 0 ; i < 5 ; i++)

        TestStatic();

 

    return 0;

}

 

void TestStatic(void)

{

    int num = 0;

    static int count = 0;

 

    printf("num = %d, ", ++num);

    printf("count = %d\n" , ++count);

}

 

 

************************************************************************

/* Ex10_10.c */

#include <stdio.h>

#include <string.h>

 

char* Reverse(const char *str);

 

int main(void)

{

    char s1[] = "abc";

    char *res = NULL;

 

    res  = Reverse(s1);

    printf("res = %s\n", res);

 

    return 0;

}

 

char* Reverse(const char *str)

{

    char result[80];

    int i;

    int len = strlen(str);

 

    for( i = 0 ; i < len ; i ++)

        result[i] = str[len - i - 1];

    result[i] = '\0';

 

    return result;

}

 

 

 

************************************************************************

/* Ex10_11.c */

#include <stdio.h>

#include <string.h>

 

char* Reverse(const char *str);

 

int main(void)

{

    char s1[] = "abc";

    char *res = NULL;

 

    res  = Reverse(s1);

    printf("res = %s\n", res);

 

    return 0;

}

 

char* Reverse(const char *str)

{

    static char result[80];

    int i;

    int len = strlen(str);

 

    for( i = 0 ; i < len ; i ++)

        result[i] = str[len - i - 1];

    result[i] = '\0';

 

    return result;

}

 

 

 

************************************************************************

/* Ex11_01.c */

#include <stdio.h>

 

int main(void)

{

    int a=10, b=20, c=30, d=40, e=50;

    int* arr[5] = {&a, &b, &c, &d, &e};

    int i;

 

    for( i = 0 ; i < 5 ; i++ )

        printf("%d ", *arr[i]);

    printf("\n");

    

    return 0;

}

 

 

 

************************************************************************

/* Ex11_02.c */

#include <stdio.h>

 

int main(void)

{

    int x[3] = {1, 2, 3};

    int y[3] = {4, 5, 6};

    int z[3] = {7, 8, 9};

    int* arr[3] = {x, y, z};

    int i, j;

 

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

    {

        for( j = 0 ; j < 3 ; j++)

            printf("%d ", arr[i][j]);

        printf("\n");

    }

    

    return 0;

}

 

 

 

************************************************************************

/* Ex11_03.c */

#include <stdio.h>

#include <string.h>

 

typedef struct product {

char name[20];

int price;

int stock;

} PRODUCT;

 

int main(void)

{

PRODUCT prd1 = { "커피믹스", 15000, 30 };

PRODUCT prd2 = { "생수2L", 9500, 20 };

PRODUCT prd3 = { "A4용지", 3000, 5 };

PRODUCT* prd[] = { &prd1, &prd2, &prd3 };

 

int count = sizeof(prd) / sizeof(prd[0]);

int i;

 

printf("상 품 명                 가 격      재 고 량\n");

for( i = 0 ; i < count ; i++ )

{

printf("%-20s  %8d  %10d", prd[i]->name, prd[i]->price, prd[i]->stock);

if( prd[i]->stock < 10 )

printf(" ==> 주문 필요!!!\n");

else

printf("\n");

}

 

return 0;

}

 

 

************************************************************************

/* Ex11_04.c */

#include <stdio.h>

 

int main(void)

{

    int arr[5] = {10, 20, 30, 40, 50};

    int (*p)[5] = &arr;

    int i;

 

    for( i = 0 ; i < 5 ; i++ )

        printf("%d ", (*p)[i]); // p[0][i], *((*p)+i)

    printf("\n");

 

    return 0;

}

 

 

 

************************************************************************

/* Ex11_05.c */

#include <stdio.h>

 

int main(void)

{

    int arr[3][5] = { 

        { 1,  2,  3,  4,  5},

        { 6,  7,  8,  9, 10},

        {11, 12, 13, 14, 15}

    };

 

    int (*p)[5] = arr;

 

    int i, j;

 

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

    {

        for( j = 0 ; j < 5 ; j++ )

            printf("%2d ", p[i][j]);

        printf("\n");

    }

 

    return 0;

}

 

 

 

************************************************************************

/* Ex11_06.c */

#include <stdio.h>

 

int main(void)

{

    int x[5];

    int *p1 = x;

 

    int y[2][3];

    int (*p2)[3] = y;

 

    printf("p1 = %p, p2 = %p\n", p1, p2);

 

    p1++;

    p2++;

 

    printf("p1 = %p, p2 = %p\n", p1, p2);

 

    return 0;

}

 

 

 

************************************************************************

/* Ex11_07.c */

#include <stdio.h>

 

int GetFactorial(int n);

double Add(double x, double y);

 

int main(void)

{

    int (*pFunc)(int n) = &GetFactorial;

    double (*pf)(double, double) = Add;

    int num;

 

    printf("정수를 입력하세요 : ");

    scanf("%d", &num);

    printf("%d ! = %d\n", num, (*pFunc)(num));

 

    printf("0.5 + 1.3 = %f\n", pf(0.5, 1.3));

 

    return 0;

}

 

int GetFactorial(int n)

{

    int fact;

    int i;

 

    for( i = 1, fact = 1 ; i <= n ; i++ )

        fact *= i;

 

    return fact;

}

 

double Add(double x, double y)

{

    return x + y;

}

 

 

************************************************************************

/* Ex11_08.c */

#include <stdio.h>

#include <stdlib.h>

 

int Compare(const void *e1, const void *e2);

void PrintArray(const int* arr, int size);

 

int main()

{

    int x[10] = {34, 50, 5, 17, 82, 66, 73, 1, 48, 29};

 

    printf("정렬 전 : ");

    PrintArray(x, 10);

 

    qsort(x, 10, sizeof(int), Compare);

 

    printf("정렬 후 : ");

    PrintArray(x, 10);

 

    return 0;

}

 

int Compare(const void *e1, const void *e2) 

{

    const int *p1 = (const int*) e1;

    const int *p2 = (const int*) e2;

    return (*p1 - *p2);     // 오름차순 정렬

    //return -(*p1 - *p2); // 내림차순 정렬

}

 

void PrintArray(const int* arr, int size)

{

    int i;

 

    for( i = 0 ; i < size ; i++ )

        printf("%d ", arr[i]);

    printf("\n");

}

 

 

************************************************************************

/* Ex11_09.c */

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

typedef struct product {

char name[20];

int price;

int stock;

} PRODUCT;

 

int CompareByName(const void *e1, const void *e2);

int CompareByPrice(const void *e1, const void *e2);

void PrintProductsList(const PRODUCT *prd, int count);

 

int main(void)

{

PRODUCT prd[5] = {

{ "커피믹스", 15000, 30 },

{ "생수2L", 9500, 20 },

{ "A4용지", 3000, 5 },

{ "클리어파일", 1000, 15 },

{ "화장지", 12000, 9 }

};

 

printf("*** 정렬 전 ***\n");

PrintProductsList(prd, 5);

 

qsort(prd, 5, sizeof(PRODUCT), CompareByName);

printf("*** 상품명 순 정렬 ***\n");

PrintProductsList(prd, 5);

 

qsort(prd, 5, sizeof(PRODUCT), CompareByPrice);

printf("*** 가격 순 정렬 ***\n");

PrintProductsList(prd, 5);

 

return 0;

}

 

int CompareByName(const void *e1, const void *e2)

{

const PRODUCT *p1 = (const PRODUCT*) e1;

    const PRODUCT *p2 = (const PRODUCT*) e2;

return strcmp(p1->name, p2->name);

}

 

int CompareByPrice(const void *e1, const void *e2)

{

    const PRODUCT *p1 = (const PRODUCT*)e1;

    const PRODUCT *p2 = (const PRODUCT*)e2;

return p1->price - p2->price;

}

 

void PrintProductsList(const PRODUCT *prd, int count)

{

int i;

 

printf("\n상 품 명                 가 격      재 고 량\n");

for( i = 0 ; i < count ; i++ )

{

printf("%-20s  %8d  %10d\n", prd[i].name, prd[i].price, prd[i].stock);

}

printf("\n");

}

 

 

************************************************************************

/* Ex11_09.c */

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

    int size;

    int *arr = NULL;

    int sum = 0;

    double average = 0.0;

    int i;

 

    printf("몇 개의 정수를 입력하시겠습니까? : ");

    scanf("%d", &size);

 

    arr = malloc(sizeof(int)*size);

    if( arr == NULL )

    {

        printf("동적 메모리 할당 실패\n");

        return -1;

    }

 

    printf("%d개의 정수를 입력하세요 : ", size);

    for( i = 0 ; i < size ; i++ )

        scanf("%d", &arr[i]);

 

    for( i = 0 ; i < size ; i++ )

        sum += arr[i];

 

    average = (double)sum / (double)size;

 

    printf("합계 : %d, 평균 : %f\n", sum, average);

 

    free(arr);

    arr = NULL;

 

    return 0;

}

 

 

************************************************************************

/* Ex11_11.c */

#include <stdio.h>

#include <stdlib.h>

#include <ctype.h>

 

typedef struct rect {

    int x, y;

    int width, height;

} RECT;

 

int main(void)

{

    RECT *arr[100] = {NULL};

    int count = 0;

    int i;

 

    while(1)

    {

        char choice;

        printf("직사각형을 만들겠습니까? (Y/N) : ");

        scanf("%c", &choice);

        while( getchar() != '\n' );

        if( toupper(choice) == 'N' )

            break;

 

        arr[count] = malloc(sizeof(RECT));

        arr[count]->x = rand()%400;

        arr[count]->y = rand()%400;

        arr[count]->width = rand()%100;

        arr[count]->height = rand()%100;

        count++;

    }

    printf("%d개의 직사각형이 만들어졌습니다.\n", count);

 

    for(i = 0 ; i < count ; i++) 

    {

        printf("%d번째 직사각형 : (%3d,%3d) w=%3d, h=%3d\n",

            i+1, arr[i]->x, arr[i]->y, arr[i]->width, arr[i]->height);

    }

 

    for(i = 0 ; i < count ; i++)

    {

        free(arr[i]);

        arr[i] = NULL;

    }

 

    return 0;

}

 

 

 

 

************************************************************************

/* Ex12_01.c */

#include <stdio.h>

 

#define SQUARE(n) n*n

 

int square(int n)

{

    return n*n;

}

 

int main(void)

{

    int result = SQUARE(3);

    printf("3의 제곱 : %d\n", result);

 

    result = SQUARE(1+2);

    printf("SQUARE(1+2) = %d\n", result);

 

    result = square(1+2);

    printf("square(1+2) = %d\n", result);

 

    printf("SQUARE(2.5) = %f\n", SQUARE(2.5));

    printf("square(2.5) = %d\n", square(2.5));

 

    return 0;

}

 

 

 

************************************************************************

/* Ex12_02.c */

#include <stdio.h>

 

#define PRINT1(x)  printf("x = %d\n", x)

#define PRINT2(x)  printf(#x" = %d\n", x)

 

#define MAKE_FUNC(name) void fn##name(void) \

{\

    printf("fn"#name" 호출\n"); \

}

 

MAKE_FUNC(test1)

MAKE_FUNC(test2)

 

int main(void)

{

    int num = 10;

    PRINT1(num);

    PRINT2(num);

 

    fntest1();

    fntest2();

 

    return 0;

}

 

 

 

************************************************************************

/* Ex12_03.c */

#include <stdio.h>

 

#define DEBUG

 

int GetFactorial(int n);

 

int main(void)

{

    int result;

 

    result = GetFactorial(5);

 

    printf("result = %d\n", result);

 

    return 0;

}

 

int GetFactorial(int n)

{

#ifdef DEBUG

    printf("GetFactorial 함수 호출 : ");

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

#endif

 

    if( n <= 1 )

        return 1;

    return n * GetFactorial(n - 1);

}

 

 

 

************************************************************************

/* Array.c */

#include <stdio.h>

#include "Array.h"

 

void PrintArray(const int *arr, int size)

{

    int i;

 

    //arr[0] = 100;

    for(i = 0 ; i < size ; i++)

        printf("%d ", arr[i]);

    printf("\n");

}

 

int GetSumOfArray(int *arr, int size)

{

    int i;

    int total;

 

    for(i = 0, total = 0 ; i < size ; i++)

        total += arr[i];

 

    return total;

}

 

void SortArray(int *arr, int size)

{

    int i, j, index;

    int temp;

 

    for(i = 0; i < size-1 ; i++)

    {

        index = i;  

        for(j = i+1 ; j < size ; j++)

        {

            if( arr[index] > arr[j] )

                index = j;

        }

        temp       = arr[i];

        arr[i]     = arr[index];

        arr[index] = temp;

    }

}

 

 

************************************************************************

/* Main.c */

#include <stdio.h>

#include "Array.h"

 

int main(void)

{

    int x[5] = {43, 6, 24, 88, 34};

    int y[10] = {12, 35, 7, 45, 78, 22, 98, 77, 1, 28};

 

    printf("x 배열 : ");

    PrintArray(x, 5);

    printf("합계 : %d\n\n", GetSumOfArray(x, 5));

    

    printf("y 배열 : ");

    PrintArray(y, 10);

    SortArray(y, 10);

    printf("정렬후 : ");

    PrintArray(y, 10);

 

    return 0;

}

 

 

 

************************************************************************

/* Main.c */

#include <stdio.h>

#include "Point.h"

 

int main(void)

{

    POINT p1 = {0, 0};

    POINT p2 = {300, 400};

 

    printf("p1 = ");

    PrintPoint(&p1);

    printf("p2 = ");

    PrintPoint(&p2);

 

    printf("두 점 사이의 거리 : %f\n", GetDistance(&p1, &p2));

 

    MovePoint(&p2, 10, 10);

    printf("MovePoint 호출 후 p2 = ");

    PrintPoint(&p2);

 

    return 0;

}

 

 

 

 

************************************************************************

/* Point.c */

#include <stdio.h>

#include <math.h>

#include "Point.h"

 

void PrintPoint(const POINT *p)

{

    printf("(%d, %d)\n", p->x, p->y);

}

 

void MovePoint(POINT *p, int dx, int dy)

{

    p->x += dx;

    p->y += dy;

}

 

double GetDistance(const POINT *p1, const POINT *p2)

{

    int dx = p2->x - p1->x;

    int dy = p2->y - p1->y;

    return sqrt(dx*dx+dy*dy);

}

 

 

************************************************************************

/* Main.c */

#include <stdio.h>

#include "Point.h"

 

int main(void)

{

    POINT p1 = {10, 10};

    POINT p2 = {40, 50};

 

    printf("p1 = ");

    PrintPoint(&p1);

    printf("p2 = ");

    PrintPoint(&p2);

 

    printf("두 점 사이의 거리 : %f\n", GetDistance(&p1, &p2));

 

    printf("원점과 p2 사이의 거리 : %f\n", 

        GetDistance(&g_origin, &p2));

 

    return 0;

}

 

 

 

 

************************************************************************

/* Point.c */

#include <stdio.h>

#include <math.h>

#include "Point.h"

 

POINT g_origin;

 

void PrintPoint(const POINT *p)

{

    printf("(%d, %d)\n", p->x, p->y);

}

 

void MovePoint(POINT *p, int dx, int dy)

{

    p->x += dx;

    p->y += dy;

}

 

double GetDistance(const POINT *p1, const POINT *p2)

{

    int dx = p2->x - p1->x;

    int dy = p2->y - p1->y;

    return sqrt(dx*dx+dy*dy);

}

 

void SetOrigin(int x, int y)

{

    g_origin.x = x;

    g_origin.y = y;

}

 

 

************************************************************************

/* Main.c */

#include <stdio.h>

#include "Point.h"

#include "Point.h"

 

int main(void)

{

    POINT p1 = {10, 10};

    POINT p2 = {40, 50};

 

    printf("p1 = ");

    PrintPoint(&p1);

    printf("p2 = ");

    PrintPoint(&p2);

 

    printf("두 점 사이의 거리 : %f\n", GetDistance(&p1, &p2));

 

    printf("원점과 p2 사이의 거리 : %f\n", 

        GetDistance(&g_origin, &p2));

 

    return 0;

}

 

 

 

 

************************************************************************

/* Point.c */

#include <stdio.h>

#include <math.h>

#include "Point.h"

 

POINT g_origin;

 

void PrintPoint(const POINT *p)

{

    printf("(%d, %d)\n", p->x, p->y);

}

 

void MovePoint(POINT *p, int dx, int dy)

{

    p->x += dx;

    p->y += dy;

}

 

double GetDistance(const POINT *p1, const POINT *p2)

{

    int dx = p2->x - p1->x;

    int dy = p2->y - p1->y;

    return sqrt(dx*dx+dy*dy);

}

 

void SetOrigin(int x, int y)

{

    g_origin.x = x;

    g_origin.y = y;

}

 

 

************************************************************************

/* Ex12_08.c */

#include <stdio.h>

 

int main(int argc, char* argv[])

{

    int i;

 

    for( i = 0 ; i < argc ; i++ )

        printf("argv[%d] = %s\n", i, argv[i]);

 

    return 0;

}

 

 

************************************************************************

/* Ex12_09.c */

#include <stdio.h>

#include <stdlib.h>

 

int main(int argc, char* argv[])

{

    int lhs, rhs;

    char op;

 

    if( argc < 4 )

    {

        printf("Usage : Calc value1 op value2\n");

        return -1;

    }

 

    lhs = atoi(argv[1]);

    op = argv[2][0];

    rhs = atoi(argv[3]);

 

    switch( op )

    {

    case '+': 

        printf("%d + %d = %d\n", lhs, rhs, lhs+rhs);  

        break;

    case '-': 

        printf("%d - %d = %d\n", lhs, rhs, lhs-rhs);  

        break;

    case '*': 

        printf("%d * %d = %d\n", lhs, rhs, lhs*rhs);  

        break;

    case '/': 

        printf("%d / %d = %d\n", lhs, rhs, lhs/rhs);  

        break;

    default : 

        printf("잘 못 입력하셨습니다.\n"); 

        break;

    }

 

    return 0;

}

 

 

************************************************************************

/* Ex13_01.c */

#include <stdio.h>

 

int main(void)

{

    int a, b;

    char op;

    int result;

 

    while ( 1 )

    {

        printf("수식을 입력하세요 (0 0 0 입력시 종료) : ");

        result = scanf("%d %c %d", &a, &op, &b);

        while( getchar( ) != '\n' );

 

        if( result < 3 )

        {

            printf("잘못 입력하셨습니다.\n"

                   "<정수> <연산자> <정수>의 순으로 입력하세요.\n");

 

            continue;

        }

 

        if( a == 0 && op == '0' && b == 0 )

            break;

 

        switch ( op )

        {

        case '+':

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

            break;

        case '-':

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

            break;

        case '*':

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

            break;

        case '/':

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

            break;

        default:

            printf("잘못된 연산자입니다.\n");

            continue;

        }

    }

 

    return 0;

}

 

 

 

************************************************************************

/* Ex13_02.c */

#include <stdio.h>

 

int main(int argc, char *argv[])

{

    FILE *fp1, *fp2;

    char ch;

 

    if( argc < 3 )

    {

        printf("Usage: FCopy src_file dest_file\n");

        return -1;

    }

 

    fp1 = fopen(argv[1], "r");

    if( fp1 == NULL )

    {

        printf("%s 파일 열기 실패\n", argv[1]);

        return -1;

    }

 

    fp2 = fopen(argv[2], "w");

    if( fp2 == NULL )

    {

        printf("%s 파일 열기 실패\n", argv[2]);

        return -1;

    }

 

    while( (ch = fgetc(fp1)) != EOF )

        fputc(ch, fp2);

 

    fclose(fp1);

    fclose(fp2);

 

    return 0;

}

 

 

************************************************************************

/* Ex13_03.c */

#include <stdio.h>

 

#define MAX_BUF 100

 

int main(int argc, char *argv[])

{

    FILE *fp1, *fp2;

    char buffer[MAX_BUF];

 

    if( argc < 3 )

    {

        printf("Usage: FCopy src_file dest_file\n");

        return -1;

    }

 

    fp1 = fopen(argv[1], "r");

    if( fp1 == NULL )

    {

        printf("%s 파일 열기 실패\n", argv[1]);

        return -1;

    }

 

    fp2 = fopen(argv[2], "w");

    if( fp2 == NULL )

    {

        printf("%s 파일 열기 실패\n", argv[2]);

        return -1;

    }

 

    while( fgets(buffer, MAX_BUF, fp1) != NULL )

        fputs(buffer, fp2);

 

    fclose(fp1);

    fclose(fp2);

 

    return 0;

}

 

 

************************************************************************

/* Ex13_04.c */

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

#define MAX_PRODUCT 5

 

typedef struct product {

char name[20];

int price;

int stock;

} PRODUCT;

 

int main(void)

{

PRODUCT prd[MAX_PRODUCT];

int i;

FILE *fp = NULL;

 

printf("%d 개의 상품 정보를 입력하세요. \n", MAX_PRODUCT);

for( i = 0 ; i < MAX_PRODUCT ; i++ )

{

printf("상품명 : ");

scanf("%s", prd[i].name);

printf("가격, 재고량 : ");

scanf("%d %d", &prd[i].price, &prd[i].stock);

}

 

fp = fopen("productlist.txt", "w");

if( fp == NULL )

{

printf("파일 열기 실패\n");

return -1;

}

 

fprintf(fp, "상 품 명                 가 격      재 고 량\n");

for( i = 0 ; i < MAX_PRODUCT ; i++ )

{

fprintf(fp, "%-20s  %8d  %10d\n", prd[i].name, prd[i].price, prd[i].stock);

}

 

fclose(fp);

return 0;

}

 

 

************************************************************************

#include <stdio.h>

#include <stdlib.h>

 

int main(void)

{

    int arr1[10] = { 34, 90, 87, 65, 46, 21, 19, 53, 78, 2 };

    int arr2[10];

    int i;

    FILE *fp;

 

    fp = fopen("test.dat", "wb");

    if( fp == NULL )

    {

        printf("파일 열기 실패\n");

        return -1;

    }

 

    fwrite(arr1, sizeof(int), 10, fp);

    fclose(fp);

 

    fp = fopen("test.dat", "rb");

    if( fp == NULL )

    {

        printf("파일 열기 실패\n");

        return -1;

    }

 

    fread(arr2, sizeof(int), 10, fp);

    fclose(fp);

 

    for( i = 0 ; i < 10 ; i++ )

        printf("%d ", arr2[i]);

    printf("\n");

 

    return 0;

}

 

 

************************************************************************

/* Contact.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "contact.h"

#include "menu.h"

 

CONTACT* Initialize(int totalCnt)

{

    CONTACT *p = malloc(sizeof(CONTACT) * totalCnt);

    if( p != NULL )

        memset(p, 0, sizeof(CONTACT) * totalCnt);

    return p;

}

 

int AddContactInfo(CONTACT *contacts, int maxCnt, int *pCurCnt)

{

    CONTACT *p = NULL;

    int ring;

 

    if( maxCnt == *pCurCnt )

        return 0;

 

    p = &contacts[*pCurCnt];

    printf("\n이    름 : ");

    fgets(p->name, MAX_STR, stdin);

    p->name[strlen(p->name)-1] = '\0';  // 줄바꿈 문자 제거

    printf("전화번호 : ");

    fgets(p->phone, MAX_STR, stdin);

    p->phone[strlen(p->phone)-1] = '\0'; // 줄바꿈 문자 제거

 

    do {

        printf("[1.전화벨 2.피아노 3.마림바 4.하프] 벨소리 선택 : ");

        scanf("%d", &ring);

        CLEAR_INPUT( );

    } while( ring < 0 || ring > 4 );

    p->ring = ring - 1;

 

    ( *pCurCnt )++;

    return *pCurCnt;

}

 

void ListByName(CONTACT *contacts, int cnt)

{

    if( cnt == 0 )

    {

        printf("출력할 내용이 없습니다.\n");

        return;

    }

    qsort(contacts, cnt, sizeof(CONTACT), CompareByName);

    PrintAllContacts(contacts, cnt);

}

 

void PrintAllContacts(const CONTACT *contacts, int cnt)

{

    int i;

    const char* ringtones[] = { 

        "전화벨", "피아노", "마림바", "하프"

    };

 

    printf("\n==================================\n");

    printf(" 이름        전화번호     벨소리\n");

    printf("==================================\n");

    for( i = 0 ; i < cnt ; i++ )

    {

        printf("%-10s %-14s %s\n", contacts[i].name, contacts[i].phone,

            ringtones[contacts[i].ring]);

    }

    printf("==================================\n");

}

 

int CompareByName(const void* e1, const void* e2)

{

    const CONTACT *p1 = (const CONTACT*) e1;

    const CONTACT *p2 = (const CONTACT*) e2;

    return strcmp(p1->name, p2->name);

}

 

 

 

************************************************************************

/* Main.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include <stdlib.h>

#include "Contact.h"

#include "Menu.h"

 

int main(void)

{

    CONTACT *contacts = NULL;

    int max_contacts = 0;

    int contacts_cnt = 0;

    int menu = 0;

 

    do {

        printf("최대 연락처의 개수를 입력하세요 : ");

        if( scanf("%d", &max_contacts) == 0 )

        {

            printf("잘못 입력하셨습니다.\n");

            CLEAR_INPUT();

            continue;

        }

    } while( max_contacts <= 0 );

 

    contacts = Initialize(max_contacts);

    if( contacts == NULL )

    {

        printf("동적 메모리 할당 실패\n");

        exit(1);

    }

 

    while( 1 )

    {

        menu = SelectMenu();

        if( menu == QUIT_PROGRAM )

            break;

        switch( menu )

        {

        case ADD_CONTACT:

            if( AddContactInfo(contacts, max_contacts, &contacts_cnt) == 0 )

            {

                printf("더 이상 연락처를 추가할 수 없습니다.\n");

            }

            else

            {

                printf("연락처가 추가되었습니다.\n");

            }

            break;

        case LIST_BY_NAME:

            ListByName(contacts, contacts_cnt);

            break;

        }

    }

 

    free(contacts);

    contacts = NULL;

 

    return 0;

}

 

 

************************************************************************

/* Menu.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include "Menu.h"

 

int SelectMenu(void)

{

    int choice;

 

    while(1)

    {

        int result;

 

        printf("\n-------------------\n");

        printf("1. 연락처 추가\n");

        printf("2. 전체 연락처 목록\n");

        printf("0. 종료\n");

        printf("-------------------\n");

        printf("메뉴 선택 : ");

 

        result = scanf("%d", &choice);

        CLEAR_INPUT();

        if( result == 0 )

        {

            printf("잘못 입력하셨습니다.\n");

            continue;

        }

 

        if( choice >= 0 && choice <= 2 )

            return choice;

        else

        {

            printf("잘못 입력하셨습니다.\n");

            continue;

        }

    }

}

 

 

 

************************************************************************

/* Contact.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "contact.h"

#include "menu.h"

 

CONTACT* Initialize(int totalCnt)

{

    CONTACT *p = malloc(sizeof(CONTACT) * totalCnt);

    if( p != NULL )

        memset(p, 0, sizeof(CONTACT) * totalCnt);

    return p;

}

 

int AddContactInfo(CONTACT *contacts, int maxCnt, int *pCurCnt)

{

    CONTACT *p = NULL;

    int ring;

 

    if( maxCnt == *pCurCnt )

        return 0;

 

    p = &contacts[*pCurCnt];

    printf("\n이    름 : ");

    fgets(p->name, MAX_STR, stdin);

    p->name[strlen(p->name) - 1] = '\0';  // 줄바꿈 문자 제거

    printf("전화번호 : ");

    fgets(p->phone, MAX_STR, stdin);

    p->phone[strlen(p->phone) - 1] = '\0'; // 줄바꿈 문자 제거

 

    do {

        printf("[1.전화벨 2.피아노 3.마림바 4.하프] 벨소리 선택 : ");

        scanf("%d", &ring);

        CLEAR_INPUT( );

    } while( ring < 0 || ring > 4 );

    p->ring = ring - 1;

 

    ( *pCurCnt )++;

    return *pCurCnt;

}

 

void ListByName(CONTACT *contacts, int cnt)

{

    if( cnt == 0 )

    {

        printf("출력할 내용이 없습니다.\n");

        return;

    }

    qsort(contacts, cnt, sizeof(CONTACT), CompareByName);

    PrintAllContacts(contacts, cnt);

}

 

void PrintAllContacts(const CONTACT *contacts, int cnt)

{

    int i;

    const char* ringtones[] = { 

        "전화벨", "피아노", "마림바", "하프"

    };

 

    printf("\n==================================\n");

    printf(" 이름        전화번호     벨소리\n");

    printf("==================================\n");

    for( i = 0 ; i < cnt ; i++ )

    {

        printf("%-10s %-14s %s\n", contacts[i].name, contacts[i].phone,

            ringtones[contacts[i].ring]);

    }

    printf("==================================\n");

}

 

int CompareByName(const void* e1, const void* e2)

{

    const CONTACT *p1 = (const CONTACT*) e1;

    const CONTACT *p2 = (const CONTACT*) e2;

    return strcmp(p1->name, p2->name);

}

 

 

 

************************************************************************

/* FileIO.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include <stdlib.h>

#include "Contact.h"

#include "FileIO.h"

 

int ReadData(FILE *fp, CONTACT **pContacts, int *pMaxCnt, int *pCurCnt)

{

    int res;

 

    res = fread(pMaxCnt, sizeof(int), 1, fp);

    if( res == 0 )

        return 0;

 

    res = fread(pCurCnt, sizeof(int), 1, fp);

    if( res == 0 )

        return 0;

 

    *pContacts = malloc(sizeof(CONTACT) * *pMaxCnt);

    res = fread(*pContacts, sizeof(CONTACT), *pCurCnt, fp);

    if( res < *pCurCnt )

        return 0;

 

    return 1;

}

 

int WriteData(FILE *fp, const CONTACT *contacts, int maxCnt, int curCnt)

{

    fwrite(&maxCnt, sizeof(int), 1, fp);

    fwrite(&curCnt, sizeof(int), 1, fp);

    fwrite(contacts, sizeof(CONTACT), curCnt, fp);

 

    return 0;

}

 

 

************************************************************************

/* Main.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include <stdlib.h>

#include "Contact.h"

#include "Menu.h"

#include "FileIo.h"

 

int main(void)

{

    CONTACT *contacts = NULL;

    int max_contacts = 0;

    int contacts_cnt = 0;

    int menu = 0;

    FILE *fp = NULL;

 

    fp = fopen("contacts.dat", "rb");

    if( fp != NULL )

    {

        ReadData(fp, &contacts, &max_contacts, &contacts_cnt);

        printf("데이터 파일을 읽어옵니다.\n");

        printf("최대 연락처 개수 : %d, 현재 연락처 개수 : %d\n",

            max_contacts, contacts_cnt);

        fclose(fp);

    }

    else

    {

        do {

            printf("최대 연락처의 개수를 입력하세요 : ");

            if( scanf("%d", &max_contacts) == 0 )

            {

                printf("잘못 입력하셨습니다.\n");

                CLEAR_INPUT();

                continue;

            }

        } while( max_contacts <= 0 );

 

        contacts = Initialize(max_contacts);

        if( contacts == NULL )

        {

            printf("동적 메모리 할당 실패\n");

            exit(1);

        }

    }

 

    while( 1 )

    {

        menu = SelectMenu();

        if( menu == QUIT_PROGRAM )

            break;

        switch( menu )

        {

        case ADD_CONTACT:

            if( AddContactInfo(contacts, max_contacts, &contacts_cnt) == 0 )

            {

                printf("더 이상 연락처를 추가할 수 없습니다.\n");

            }

            else

            {

                printf("연락처가 추가되었습니다.\n");

            }

            break;

        case LIST_BY_NAME:

            ListByName(contacts, contacts_cnt);

            break;

        }

    }

 

    fp = fopen("contacts.dat", "wb");

    if( fp != NULL )

    {

        WriteData(fp, contacts, max_contacts, contacts_cnt);

        printf("\n데이터 파일을 저장합니다.\n");

        printf("최대 연락처 개수 : %d, 현재 연락처 개수 : %d\n",

            max_contacts, contacts_cnt);

        fclose(fp);

    }

 

    free(contacts);

    contacts = NULL;

 

    return 0;

}

 

 

************************************************************************

/* Menu.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include "Menu.h"

 

int SelectMenu(void)

{

    int choice;

 

    while(1)

    {

        int result;

 

        printf("\n-------------------\n");

        printf("1. 연락처 추가\n");

        printf("2. 전체 연락처 목록\n");

        printf("0. 종료\n");

        printf("-------------------\n");

        printf("메뉴 선택 : ");

 

        result = scanf("%d", &choice);

        CLEAR_INPUT();

        if( result == 0 )

        {

            printf("잘못 입력하셨습니다.\n");

            continue;

        }

 

        if( choice >= 0 && choice <= 2 )

            return choice;

        else

        {

            printf("잘못 입력하셨습니다.\n");

            continue;

        }

    }

}

 

 

 

************************************************************************

/* Contact.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "contact.h"

#include "menu.h"

 

CONTACT* Initialize(int totalCnt)

{

    CONTACT *p = malloc(sizeof(CONTACT) * totalCnt);

    if( p != NULL )

        memset(p, 0, sizeof(CONTACT) * totalCnt);

    return p;

}

 

int AddContactInfo(CONTACT *contacts, int maxCnt, int *pCurCnt)

{

    CONTACT *p = NULL;

    int ring;

 

    if( maxCnt == *pCurCnt )

        return 0;

 

    p = &contacts[*pCurCnt];

    printf("\n이    름 : ");

    fgets(p->name, MAX_STR, stdin);

    p->name[strlen(p->name) - 1] = '\0';  // 줄바꿈 문자 제거

    printf("전화번호 : ");

    fgets(p->phone, MAX_STR, stdin);

    p->phone[strlen(p->phone) - 1] = '\0'; // 줄바꿈 문자 제거

 

    do {

        printf("[1.전화벨 2.피아노 3.마림바 4.하프] 벨소리 선택 : ");

        scanf("%d", &ring);

        CLEAR_INPUT( );

    } while( ring < 0 || ring > 4 );

    p->ring = ring - 1;

 

    ( *pCurCnt )++;

    return *pCurCnt;

}

 

void ListByName(CONTACT *contacts, int cnt)

{

    if( cnt == 0 )

    {

        printf("출력할 내용이 없습니다.\n");

        return;

    }

    qsort(contacts, cnt, sizeof(CONTACT), CompareByName);

    PrintAllContacts(contacts, cnt);

}

 

void PrintAllContacts(const CONTACT *contacts, int cnt)

{

    int i;

    const char* ringtones[] = {

        "전화벨", "피아노", "마림바", "하프"

    };

 

    printf("\n==================================\n");

    printf(" 이름        전화번호     벨소리\n");

    printf("==================================\n");

    for( i = 0; i < cnt; i++ )

    {

        printf("%-10s %-14s %s\n", contacts[i].name, contacts[i].phone,

            ringtones[contacts[i].ring]);

    }

    printf("==================================\n");

}

 

int CompareByName(const void* e1, const void* e2)

{

    const CONTACT *p1 = (const CONTACT*) e1;

    const CONTACT *p2 = (const CONTACT*) e2;

    return strcmp(p1->name, p2->name);

}

 

CONTACT* ExpandContacts(CONTACT *contacts, int *pMaxCnt)

{

    CONTACT *temp = realloc(contacts, sizeof(CONTACT)*(*pMaxCnt)*2);

    if( temp == NULL )

        return NULL;

    *pMaxCnt = *pMaxCnt * 2;

    return temp;

}

 

 

 

************************************************************************

/* FileIO.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include <stdlib.h>

#include "Contact.h"

#include "FileIO.h"

 

int ReadData(FILE *fp, CONTACT **pContacts, int *pMaxCnt, int *pCurCnt)

{

    int res;

 

    res = fread(pMaxCnt, sizeof(int), 1, fp);

    if( res == 0 )

        return 0;

 

    res = fread(pCurCnt, sizeof(int), 1, fp);

    if( res == 0 )

        return 0;

 

    *pContacts = malloc(sizeof(CONTACT) * *pMaxCnt);

    res = fread(*pContacts, sizeof(CONTACT), *pCurCnt, fp);

    if( res < *pCurCnt )

        return 0;

 

    return 1;

}

 

int WriteData(FILE *fp, const CONTACT *contacts, int maxCnt, int curCnt)

{

    fwrite(&maxCnt, sizeof(int), 1, fp);

    fwrite(&curCnt, sizeof(int), 1, fp);

    fwrite(contacts, sizeof(CONTACT), curCnt, fp);

 

    return 0;

}

 

 

************************************************************************

/* Main.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include <stdlib.h>

#include "Contact.h"

#include "Menu.h"

#include "FileIo.h"

 

int main(void)

{

    CONTACT *contacts = NULL;

    int max_contacts = 0;

    int contacts_cnt = 0;

    int menu = 0;

    FILE *fp = NULL;

 

    fp = fopen("test.dat", "rb");

    if( fp != NULL )

    {

        ReadData(fp, &contacts, &max_contacts, &contacts_cnt);

        printf("데이터 파일을 읽어옵니다.\n");

        printf("최대 연락처 개수 : %d, 현재 연락처 개수 : %d\n",

            max_contacts, contacts_cnt);

        fclose(fp);

    }

    else

    {

        do {

            printf("최대 연락처의 개수를 입력하세요 : ");

            if( scanf("%d", &max_contacts) == 0 )

            {

                printf("잘못 입력하셨습니다.\n");

                CLEAR_INPUT();

                continue;

            }

        } while( max_contacts <= 0 );

 

        contacts = Initialize(max_contacts);

        if( contacts == NULL )

        {

            printf("동적 메모리 할당 실패\n");

            exit(1);

        }

    }

 

    while( 1 )

    {

        menu = SelectMenu();

        if( menu == QUIT_PROGRAM )

            break;

        switch( menu )

        {

        case ADD_CONTACT:

            if( AddContactInfo(contacts, max_contacts, &contacts_cnt) == 0 )

            {

                CONTACT *temp = ExpandContacts(contacts, &max_contacts);

                if( temp == NULL )

                {

                    printf("더 이상 연락처를 추가할 수 없습니다.\n");

                }

                else

                {

                    contacts = temp;

                    printf("최대 저장 가능한 연락처의 개수를 %d로 늘립니다.\n", max_contacts);

                }

            }

            else

            {

                printf("연락처가 추가되었습니다.\n");

            }

            break;

        case LIST_BY_NAME:

            ListByName(contacts, contacts_cnt);

            break;

        }

    }

 

    fp = fopen("test.dat", "wb");

    if( fp != NULL )

    {

        WriteData(fp, contacts, max_contacts, contacts_cnt);

        printf("\n데이터 파일을 저장합니다.\n");

        printf("최대 연락처 개수 : %d, 현재 연락처 개수 : %d\n",

            max_contacts, contacts_cnt);

        fclose(fp);

    }

 

    free(contacts);

    contacts = NULL;

 

    return 0;

}

 

 

************************************************************************

/* Menu.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include "Menu.h"

 

int SelectMenu(void)

{

    int choice;

 

    while(1)

    {

        int result;

 

        printf("\n-------------------\n");

        printf("1. 연락처 추가\n");

        printf("2. 전체 연락처 목록\n");

        printf("0. 종료\n");

        printf("-------------------\n");

        printf("메뉴 선택 : ");

 

        result = scanf("%d", &choice);

        CLEAR_INPUT();

        if( result == 0 )

        {

            printf("잘못 입력하셨습니다.\n");

            continue;

        }

 

        if( choice >= 0 && choice <= 2 )

            return choice;

        else

        {

            printf("잘못 입력하셨습니다.\n");

            continue;

        }

    }

}

 

 

 

************************************************************************

/* Contact.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "contact.h"

#include "menu.h"

 

CONTACT* Initialize(int totalCnt)

{

    CONTACT *p = malloc(sizeof(CONTACT) * totalCnt);

    if( p != NULL )

        memset(p, 0, sizeof(CONTACT) * totalCnt);

    return p;

}

 

int AddContactInfo(CONTACT *contacts, int maxCnt, int *pCurCnt)

{

    CONTACT *p = NULL;

    int ring;

 

    if( maxCnt == *pCurCnt )

        return 0;

 

    p = &contacts[*pCurCnt];

    printf("\n이    름 : ");

    fgets(p->name, MAX_STR, stdin);

    p->name[strlen(p->name) - 1] = '\0';  // 줄바꿈 문자 제거

    printf("전화번호 : ");

    fgets(p->phone, MAX_STR, stdin);

    p->phone[strlen(p->phone) - 1] = '\0'; // 줄바꿈 문자 제거

 

    do {

        printf("[1.전화벨 2.피아노 3.마림바 4.하프] 벨소리 선택 : ");

        scanf("%d", &ring);

        CLEAR_INPUT( );

    } while( ring < 0 || ring > 4 );

    p->ring = ring - 1;

 

    ( *pCurCnt )++;

    return *pCurCnt;

}

 

void ListByName(CONTACT *contacts, int cnt)

{

    if( cnt == 0 )

    {

        printf("출력할 내용이 없습니다.\n");

        return;

    }

    qsort(contacts, cnt, sizeof(CONTACT), CompareByName);

    PrintAllContacts(contacts, cnt);

}

 

void PrintAllContacts(const CONTACT *contacts, int cnt)

{

    int i;

    const char* ringtones[] = {

        "전화벨", "피아노", "마림바", "하프"

    };

 

    printf("\n==================================\n");

    printf(" 이름        전화번호     벨소리\n");

    printf("==================================\n");

    for( i = 0; i < cnt; i++ )

    {

        printf("%-10s %-14s %s\n", contacts[i].name, contacts[i].phone,

            ringtones[contacts[i].ring]);

    }

    printf("==================================\n");

}

 

int CompareByName(const void* e1, const void* e2)

{

    const CONTACT *p1 = (const CONTACT*) e1;

    const CONTACT *p2 = (const CONTACT*) e2;

    return strcmp(p1->name, p2->name);

}

 

CONTACT* ExpandContacts(CONTACT *contacts, int *pMaxCnt)

{

    CONTACT *temp = realloc(contacts, sizeof(CONTACT)*(*pMaxCnt)*2);

    if( temp == NULL )

        return NULL;

    *pMaxCnt = *pMaxCnt * 2;

    return temp;

}

 

void FindContact(CONTACT *contacts, int *pCurCnt)

{

    char name[MAX_STR];

    CONTACT *p = NULL;

    int i, j;

    int findMenu = 0;

    int ring;

 

    printf("찾을 이름 : ");

    fgets(name, MAX_STR, stdin);

    name[strlen(name) - 1] = '\0';  // 줄바꿈 문자 제거

 

    for( i = 0; i < *pCurCnt; i++ )

    {

        if( _strcmpi(contacts[i].name, name) == 0 )

        {

            p = &contacts[i];

            break;

        }

    }

 

    if( p == NULL )

    {

        printf("연락처를 찾을 수 없습니다.\n");

        return;

    }

 

    printf("%-10s %-14s\n", contacts[i].name, contacts[i].phone);

 

    while( 1 )

    {

        findMenu = SelectFindMenu( );

        if( findMenu == PREVIOUS_MENU )

            break;

        switch( findMenu )

        {

        case MODIFY_CONTACT:

            printf("\n이    름 : ");

            fgets(p->name, MAX_STR, stdin);

            p->name[strlen(p->name) - 1] = '\0';  // 줄바꿈 문자 제거

            printf("전화번호 : ");

            fgets(p->phone, MAX_STR, stdin);

            p->phone[strlen(p->phone) - 1] = '\0'; // 줄바꿈 문자 제거

            do {

                printf("[1.전화벨 2.피아노 3.마림바 4.하프] 벨소리 선택 : ");

                scanf("%d", &ring);

                CLEAR_INPUT( );

            } while( ring < 0 || ring > 4 );

            p->ring = ring - 1;

            printf("연락처를 수정했습니다.\n");

            break;

        case DELETE_CONTACT:

            for( j = i + 1; j < *pCurCnt; j++ )

            {

                contacts[j - 1] = contacts[j];

            }

            memset(&contacts[j], 0, sizeof(CONTACT));

            ( *pCurCnt )--;

            printf("연락처를 삭제했습니다.\n");

            break;

        }

    }

}

 

 

************************************************************************

/* FileIO.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include <stdlib.h>

#include "Contact.h"

#include "FileIO.h"

 

int ReadData(FILE *fp, CONTACT **pContacts, int *pMaxCnt, int *pCurCnt)

{

    int res;

 

    res = fread(pMaxCnt, sizeof(int), 1, fp);

    if( res == 0 )

        return 0;

 

    res = fread(pCurCnt, sizeof(int), 1, fp);

    if( res == 0 )

        return 0;

 

    *pContacts = malloc(sizeof(CONTACT) * *pMaxCnt);

    res = fread(*pContacts, sizeof(CONTACT), *pCurCnt, fp);

    if( res < *pCurCnt )

        return 0;

 

    return 1;

}

 

int WriteData(FILE *fp, const CONTACT *contacts, int maxCnt, int curCnt)

{

    fwrite(&maxCnt, sizeof(int), 1, fp);

    fwrite(&curCnt, sizeof(int), 1, fp);

    fwrite(contacts, sizeof(CONTACT), curCnt, fp);

 

    return 0;

}

 

 

************************************************************************

/* Main.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include <stdlib.h>

#include "Contact.h"

#include "Menu.h"

#include "FileIo.h"

 

int main(void)

{

    CONTACT *contacts = NULL;

    int max_contacts = 0;

    int contacts_cnt = 0;

    int menu = 0;

    FILE *fp = NULL;

 

    fp = fopen("test.dat", "rb");

    if( fp != NULL )

    {

        ReadData(fp, &contacts, &max_contacts, &contacts_cnt);

        printf("데이터 파일을 읽어옵니다.\n");

        printf("최대 연락처 개수 : %d, 현재 연락처 개수 : %d\n",

            max_contacts, contacts_cnt);

        fclose(fp);

    }

    else

    {

        do {

            printf("최대 연락처의 개수를 입력하세요 : ");

            if( scanf("%d", &max_contacts) == 0 )

            {

                printf("잘못 입력하셨습니다.\n");

                CLEAR_INPUT();

                continue;

            }

        } while( max_contacts <= 0 );

 

        contacts = Initialize(max_contacts);

        if( contacts == NULL )

        {

            printf("동적 메모리 할당 실패\n");

            exit(1);

        }

    }

 

    while( 1 )

    {

        menu = SelectMenu();

        if( menu == QUIT_PROGRAM )

            break;

        switch( menu )

        {

        case ADD_CONTACT:

            if( AddContactInfo(contacts, max_contacts, &contacts_cnt) == 0 )

            {

                CONTACT *temp = ExpandContacts(contacts, &max_contacts);

                if( temp == NULL )

                {

                    printf("더 이상 연락처를 추가할 수 없습니다.\n");

                }

                else

                {

                    contacts = temp;

                    printf("최대 저장 가능한 연락처의 개수를 %d로 늘립니다.\n", max_contacts);

                }

            }

            else

            {

                printf("연락처가 추가되었습니다.\n");

            }

            break;

        case LIST_BY_NAME:

            ListByName(contacts, contacts_cnt);

            break;

        case FIND_CONTACT:

            FindContact(contacts, &contacts_cnt);

            break;

        }

    }

 

    fp = fopen("test.dat", "wb");

    if( fp != NULL )

    {

        WriteData(fp, contacts, max_contacts, contacts_cnt);

        printf("\n데이터 파일을 저장합니다.\n");

        printf("최대 연락처 개수 : %d, 현재 연락처 개수 : %d\n",

            max_contacts, contacts_cnt);

        fclose(fp);

    }

 

    free(contacts);

    contacts = NULL;

 

    return 0;

}

 

 

************************************************************************

/* Menu.c */

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

#include "Menu.h"

 

int SelectMenu(void)

{

    int choice;

 

    while(1)

    {

        int result;

 

        printf("\n-------------------\n");

        printf("1. 연락처 추가\n");

        printf("2. 전체 연락처 목록\n");

        printf("3. 연락처 검색\n");

        printf("0. 종료\n");

        printf("-------------------\n");

        printf("메뉴 선택 : ");

 

        result = scanf("%d", &choice);

        CLEAR_INPUT();

        if( result == 0 )

        {

            printf("잘못 입력하셨습니다.\n");

            continue;

        }

 

        if( choice >= 0 && choice <= 3 )

            return choice;

        else

        {

            printf("잘못 입력하셨습니다.\n");

            continue;

        }

    }

}

 

int SelectFindMenu(void)

{

    int choice;

    int result;

 

    while( 1 )

    {

        printf("\n-------------------\n");

        printf("1. 연락처 수정\n");

        printf("2. 연락처 삭제\n");

        printf("0. 이전 메뉴\n");

        printf("-------------------\n");

        printf("메뉴 선택 : ");

 

        result = scanf("%d", &choice);

        CLEAR_INPUT();

        if( result == 0 )

        {

            printf("잘못 입력하셨습니다.\n");

            continue;

        }

 

        if( choice >= 0 && choice <= 2 )

            return choice;

        else

        {

            printf("잘못 입력하셨습니다.\n");

            continue;

        }

    }

}

 

 

TOTAL COMMENTS : 0

이 게시물은 댓글을 달 수 없습니다.
11 블록체인 강의자료 asia 2018/11/20 9
10 c#3-03 help@asiagroup.co.kr 2015/08/05 2330
9 C#3-02 help@asiagroup.co.kr 2015/01/12 3897
8 C#3-01 help@asiagroup.co.kr 2014/11/05 4488
7 C#2 help@asiagroup.co.kr 2014/10/23 3229
6 C#1 help@asiagroup.co.kr 2014/03/02 2318
5 C#2 help@asiagroup.co.kr 2012/03/05 3297
4 C#2 help@asiagroup.co.kr 2010/08/05 3573
3 C#1 help@asiagroup.co.kr 2010/08/05 3265
» C프로그래밍4 ASIAGROUP 2009/08/05 4225
1 C프로그래밍 ASIAGROUP 2009/08/05 3213
위로