2017-12-25 28 views
-4

이 프로그램은 '2 + 6 - 9'(숫자와 연산자 사이에 공백이 있음)와 같은 표현식을 계산하지만 마지막 블록은 올바르지 않습니다. \ n을 받았을 때 어떻게 루프를 깰 수 있고 그렇지 않다면 입력을 저장합니다.c 표현식 계산 프로그램

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

void main() 
{ 
    char oper; 
    int sum,y; 
    scanf("%d %c",&sum,&oper); 
    while(1) 
    { 
       scanf("%d",&y); 

       if(oper=='+') 
         sum += y; 
       else if(oper=='-') 
         sum -= y; 
       else if(oper=='/') 
         sum /= y; 
       else if(oper=='*') 
         sum += y; 
       if((scanf("%c",&oper))=='\n') 
         break; 
     } 
     printf("\n =%d",sum); 
} 

답변

2

성공에 the documentation for scanf

이 함수가 성공적으로 작성 인수 목록의 항목 수를 반환 참조하십시오.

if((scanf("%c",&oper))=='\n') 
    break; 

와 :

if(scanf("%c",&oper) && oper=='\n') 
    break; 

이 : scanf()oper

  • 경우에 임의의 값을 넣어 여부

    • 검사

  • 이 부분을 대체 그렇다면 값이 \n

    +0

    이고 if (scanf ("% c", & oper) == 1 && oper == '\ n')'와 같은지 확인합니다. 'scanf()'가'EOF'를 리턴했는지 생각해보십시오. – chux