22018, 1/1101 회원가입  로그인  
   wpfl0107
   C언어 if문의 while문 중첩질문

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=33156 [복사]


제가 지금 집에 책이있는데 지금 여행을 가서 걍 생각나는 걸로 사칙연산계산기를 만드려고 하고 있는데여,
이렇게 만들었어요.

#include <stdio.h>
int main(void)
{
        int num=0;
        int a=0, b=0, c=0, d=0;
        int a1=0, b1=0, c1=0, d1=0;
        int a2=0, b2=0, c2=0, d2=0;
        int ar=0, br=0, cr=0, dr=0;

        printf("계산기 프로그램입니다.\n1은 덧셈, 2는 뺄셈, 3은 곱셈, 4는 나눗셈입니다.(0 to quit)");
        scanf("%d\n", &num);
        printf("%d번 프로그램실행\n", num);

        while(num!=0)
        {
                if(num==1)
                {
                        printf("덧셈입니다. 입력할 정수의 개수를 입력하세요:");
                        scanf("%d\n", &a);
                        printf("%d개의 정수입력:", a);
                        while(a1<a)
                        {
                                scanf("%d\n", a2);
                                ar+=a2;
                                a1++;
                        }
                        printf("입력하신 정수들의 합은 %d 입니다.\n", ar);
                }
                if(num==2)
                {
                        printf("뺄셈 프로그램입니다. 입력하실 정수의 개수를 입력하세요:");
                        scanf("%d\n", &b);
                        printf("%d개의 정수 입력:", b);
                        while(b1<b);
                        {
                                scanf("%d\n", &b2);
                                br-=b2;
                                b1++;
                        }
                        printf("입력하신 정수들의 차는 %d 입니다.\n", br);
                }
                if(num==3);
                {
                        printf("곱셈 프로그램 입니다. 입력하실 정수의 개수를 입력하세요:");
                        scanf("%d\n", &c);
                        printf("%d 개의 정수입력", c);
                        while(c1<c)
                        {
                                scanf("%d\n", c2);
                                cr*=c2;
                                c1++;
                        }
                        printf("입력하신 정수들의 곱은 %d 입니다.\n", cr);
                }
                if(num==4)
                {
                        printf("나눗셈 프로그램입니다. 입력하실 정수의 개수를 입력하세요:");
                        scanf("%d\n", &d);
                        printf("%d 개의 정수 입력:", d);
                        while(d1<d)
                        {
                                scanf("%d", &d2);
                                dr+=d2;
                                d1++;
                        }
                        printf("입력하신 정수들의 몫은 %d 입니다.", dr);
                }
        }
        return 0;
}

이렇게 만들었는데요,

질문1:저거 실행하다가 도중에 멈춥니다.컴파일러는 문제가없는데...왜그런건가요?
질문2:제가 만든 프로그램을 보면 scanf문이 1개만있는경우 맨위쪽보이시죠?계산기 종류 선택하는거.거기서보면 scanf문은 1개인데 입력을 2번해야하는 상황이 생깁니다.왜이런걸까요?
빠른답변주시면 감사드리겠습니다.

  Hit : 9943     Date : 2015/02/04 11:13



    
cus530 1. 반복문 탈출시켜줘야 합니다.
2. scanf문에서 \n을 빼주세요.
* 굳이 변수를 그렇게 많이 쓸 필요없습니다. 그냥 a로 통일 해도 돼요.
2015/02/06  
skyclad1975 +취향이라면 어쩔 수 없지만 while문보다는 for문을 사용하는게 보기에도 좋고 이해하기도 쉬울 것 같습니다. 2015/02/06  
zades soma ㄷ 2024/03/23