20200203 C프로그래밍 권준환

권준환 2020.02.03 03:23 조회 수 : 10

1. 3의 배수는 출력하지 않는 역 구구단

    1.1. Source Code

--------------------------------------------------------------------------------------------------------------------------

# define _CRT_SECURE_NO_WARNINGS

 

# include <stdio.h>

 

int main(void)

 

{

 

    // 변수 선언 부

 

    int cur = 0;

 

    int is = 0;

 

 

 

    // 반복문 선언 부

 

    for (cur = 9; cur > 0; cur--)           // cur 은 9에서부터 1이 될때까지 Loop, Loop 당 1씩 감소

 

    {

 

        for (is = 9; is > 0; is--)          //is는 9에서부터 1이 될때까지 Loop, Loop 당 1씩 감소. is Loop 1cycle per cur-- 

 

        {

            if ((cur * is) % 3 ==0)         //3으로 나누어 나머지가 0 일경우 빈칸 출력

            printf("    ");          

            else

            printf("%-8d", cur * is );      // 그렇지 않을경우 필드 폭을 8칸 확보하고, 왼쪽 정렬해서 cur*is 출력을 진행한다

 

        }

 

        printf("\n");                       //is Loop 가 완료되면(역 구구단 한줄이 완성되면) 줄바꿈

 

    }

 

    return 0;

 

}

--------------------------------------------------------------------------------------------------------------------------

    1.2. 실행 image

 

3의배수.PNG

--------------------------------------------------------------------------------------------------------------------------

2. 계산기 함수화 및 문자 입력시 경고메시지 출력

    2.1. Source Code

--------------------------------------------------------------------------------------------------------------------------

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

 

int sum(int a, int b) { return a + b; }  // 사칙연산 함수화. int 로 값을 입력받고 입력받은 값을 연산하여 return 

int min(int a, int b) { return a - b; }

int multiply(int a, int b) { return a * b; }

int divide(int a, int b) { return a / b; }

 

int main(void) {

int num1 = 0;

int num2 = 0;

int cal = 0;

int loop = 1;

 

do //무조건 한번은 진행

printf("첫번째 수를 입력하세요 : \n");

if (scanf("%d", &num1) == 0) {//scanf 의 %d 는 정수의 10진수 형태를 입력받으며 이 형태가 아닌 값을 넣으면 0을 반환. 0 반환시 경고메시지 출력

printf("숫자를 입력해야 합니다!\n");

loop = 0;

rewind(stdin); /*scanf 의 %d 는 정수의 10진수 형태를 입력받으며 이 형태가 아닌 값을 넣으면 읽지 못하며

                    잘못된 값이 입력됐을경우 입력버퍼에 그 값이 계속 남아서 다음번에도 그것을 읽으려고 시도하여

                                            무한루프를 돌게됨 rewind(stdin) 를 통해 표준 입력 버퍼를 초기화 하여 문제를 해결할 수 있음*/

}

else

loop = 1; // 이상없을경우 do while 문에서 빠져나옴

} while (loop == 0);

do

{

printf("산술기호를 선택하세요 1.+ 2.- 3.* 4./ \n");

if (scanf("%d", &cal) == 0) { 

printf("숫자를 입력해야 합니다!\n");

loop = 0;

rewind(stdin);

}

else

loop = 1;

} while (loop == 0);

do

{

printf("두번째 수를 입력하세요 : \n");

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

               {

printf("숫자를 입력해야 합니다!\n");

loop = 0;

rewind(stdin);

}

else

loop = 1;

} while (loop == 0);

 

 

if (cal == 1)

{

printf("%d \n", sum(num1, num2)); // sum 함수에 num1,num2 값이 입력되고 결과값 반환

}

else if (cal == 2)

{

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

}

else if (cal == 3)

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

}

else if (cal == 4)

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

}

else

{

printf("알맞은 산술기호를 선택해야 합니다");

}

return 0;

 

}

--------------------------------------------------------------------------------------------------------------------------

계산.PNG