#include <stdio.h>
#define _crt_secure_no_warnings
void one()
{
char p;
while (1)
{
getchar();
printf("\n프로그램을 종료하시겠습니까? (y/n)\n");
scanf_s("%c", &p);
if (p == 'n')
{
break;
}
else if (p == 'N')
{
break;
}
else if (p == 'y')
{
exit();
}
else if (p == 'Y')
{
exit();
}
else
{
printf("\n올바른 입력이 아닙니다. 처음으로 돌아갑니다.\n\n");
continue;
}
}
}
void main()
{
int a, b = 0;
char p;
printf("---계산기---\n\n시작하려면 Enter를 입력하세요\n");
while (1)
{
getchar();
printf("원하는 수식을 입력해주세요.\n(사용할 수 있는 수식:+ 더하기 - 빼기 * 곱하기 / 나누기) \n");
scanf_s("%c", &p);
if (p == '+')
{
printf("첫번째 정수를 입력해주세요.\n");
scanf_s("%d", &a);
printf("두번째 정수를 입력해주세요.\n");
scanf_s("%d", &b);
printf("%d %c %d = %d 입니다.\n", a, p, b, a + b);
}
else if (p == '-')
{
printf("첫번째 정수를 입력해주세요.\n");
scanf_s("%d", &a);
printf("두번째 정수를 입력해주세요.\n");
scanf_s("%d", &b);
printf("%d %c %d = %d 입니다.\n", a, p, b, a - b);
}
else if (p == '*')
{
printf("첫번째 정수를 입력해주세요.\n");
scanf_s("%d", &a);
printf("두번째 정수를 입력해주세요.\n");
scanf_s("%d", &b);
printf("%d %c %d = %d 입니다.\n", a, p, b, a * b);
}
else if (p == '/')
{
printf("첫번째 정수를 입력해주세요.\n");
scanf_s("%d", &a);
printf("두번째 정수를 입력해주세요.\n");
scanf_s("%d", &b);
printf("%d %c %d = %d 입니다.\n", a, p, b, a / b);
}
else
{
printf("\n올바른 입력이 아닙니다. 처음으로 돌아갑니다.\n\n");
continue;
}
one();
}
}
main함수가 끝나고 one함수(프로그램 종료기능)가 실행되는데
printf("\n프로그램을 종료하시겠습니까? (y/n)\n"); 에 대한 답변으로 n또는 N을 입력했으면
one함수가 끝나는 거니까 main함수가 처음부터 다시 시작되잖아요
근데 실제로 실행시켜보면
main함수 맨 처음인 printf("---계산기---\n\n시작하려면 Enter를 입력하세요\n"); 부터 시작이 안되고
while(1) 안에있는 printf("원하는 수식을 입력해주세요.\n(사용할 수 있는 수식:+ 더하기 - 빼기 * 곱하기 / 나누기) \n"); 여기가 출력이 되요
이유가 뭐죠? c언어는 위에서 차례대로 진행되야하는게 맞는거 아닌가요???
실행은 잘되는데 먼가 이상해요
one함수를 종료했더라도 main함수내 while문을 계속 돌고있는 상태라서 그래요
one에서 break하면 one함수 내에 while문을 탈출하고 one함수를 리턴하고 바로 main함수 내 while문 나머지내용을 실행하겠죠??
헉 그런가요 답변감사합니다 사랑해요
열공하세요~ 응원합니당
오해하시고있으신게 one함수 끝나도 main함수가 첨부터 다시실행되지 않아요~
말씀하신대로 one함수가 끝나면 기존에 작동하고있던 함수로 돌아오네요 응원 감사합니다 행복하세요