問題はこちら
No.49 算数の宿題 - yukicoder
数→記号→数→記号→数→…
と順番に読み込みつつ、前から計算していけば良い
int main(){ int a,s,p; scanf("%d",&s); while(p=getchar()-10){ //改行が来るまで読み込み scanf("%d",&a); if(p=='+'-10)s*=a;else s+=a; } printf("%d",s); return 0; }
読み込みは全部1回にまとめたい
すると
数と記号の読み込み→計算→…
という順序になるので、計算の際には1つ前の記号を使うことになる
また+と*の区別には2での剰余を見れば十分なので、これを利用して初期値をうまく与える
a,s,q; main(p){ for(;~scanf("%d%c",&a,&p);q=p)s=q%2?s*a:s+a; //1回目ではqが1なのでs=s+aが実行され、sにaの値が入る a=!printf("%d",s); }
77B