2017-12-25 8 views
-4

私はこのプログラムを '2 + 6 - 9'(数値と演算子の間にスペースを入れたもの)のような式を計算するようにしましたが、最後のifブロックが正しくありません。 \ 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

  • 場合に任意の値を入れているかどうかを

    • チェック

  • この部分を交換してくださいyesの場合、値が\n

    +0

    で、if(scanf( "%c"、&oper)== 1 && oper == '\ n') 'と等しいかどうかを確認します。 'scanf()'が 'EOF'を返すかどうかを考えてください。 – chux