티스토리 뷰

c언어로 간단한 계산기 프로그램을 구현해보자. 

 

👩🏻‍💻 생각과정 👩🏻‍💻

1) 먼저 값을 나타내는 변수들과 연산자, 정답을 나타내는 변수를 설정한다.  

2) scanf 문을 활용해서 사용자에게 값을 입력받는다.

3) 조건문을 활용해서 다양한 경우의 수를 확인해준다.

4) 예외 조건을 확인한다. 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
#include <math.h> 

int main(int argc,char* argv[]){ 
    float valueOne;
    float valueTwo;
    char operator;
    float answer;
    
    printf("Enter calculation: \n\n");
    scanf("%f %c %f",&valueOne,&operator, &valueTwo);
    
    switch(operator){
        case '/': answer = valueOne/valueTwo;
            break;
        case '*': answer = valueOne*valueTwo;
            break;
        case '+': answer = valueOne + valueTwo;
            break;
        case '-': answer = valueOne - valueTwo;
            break;
        case ' ': answer = sqrt(valueTwo);
            break;
        default: goto fail; 
    }
    printf("%.9g%c%.9g = %.6g\n\n",valueOne,operator,valueTwo,answer);
        goto exit;
fail:
    printf("Fail.\n");
exit:
    return 0; 
}

 

 

♦️ main() 함수의 인자 활용(명령행 인자: argc,argv)

main() 함수에서 argc,argv에 대한 다음과 같은 형태의 원형을 지원한다.

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

+) argc,argv를 담고있는 헤더는 #include <stdlib.h> 이다.

 

더보기

 int argc: 메인 함수에 전달되는 정보의 개수 (argument count)

char* argv[]: 메인 함수에 전달되는 실질적인 정보로, 문자열의 배열을 의미한다. 프로그램을 실행할 때 지정해 준 인자의 문자열들이 실제로 저장되는 배열. 인덱스가 0인 문자열은 프로그램의 실행경로로 항상 고정되어있다. (argument vector)

주로 1) 파일 이름을 인자로 받아 해당 파일을 읽어오고 싶을 때, 2) 현재 프로그램이 개발보드인지 프로덕션 모드인지 구분하고 싶을때 (프로그램을 실행할 때 인자로 현재 개발모드라는 것을 알려주는 용도)로 사용한다. 

 

 

♦️ switch문을 사용한 연산

//문법
switch(변수){
	case 값1 :
    	실행문;
        break;
    case 값2 :
    	실행문;
        break;
    default : 
    	실행문;

switch 문은 괄호 안의 변수의 값과 동일한 값을 갖는 case 로 가서 실행문을 실행시킨다.

만약, 괄호 안의 변수의 값과 동일한 값의 case가 존재하지 않는다면 default로 가서 실행문을 실행시킨다. 이때 default는 생략이 가능하다. 

 

 

♦️ goto문을 사용한 에러 처리

fail: 레이블은 'switch'문에서 연산자가 유효하지 않은 경우로 이동하기 위한 레이블이다.

printf : 에러 메시지를 출력한다. 

exit: 프로그램 끝으로 이동하기 위한 레이블이다.

return 0: main 함수를 종료하고 프로그램을 종료한다. 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함