试题描述
|
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 |
输入
|
仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为0到2^31-1之间的整数。输入数据保证这一行只有0到9、+、*这12种字符。
|
输出
|
输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于4位时,请只输出最后4位,前导0不输出。
|
输入示例
|
1+1*3+4
|
输出示例
|
8
|
其他说明
|
数据范围:0≤表达式中加法运算符和乘法运算符的总数≤100000
|
个人认为是一道很好的题,主要是处理好输入(用while)
1 #include<iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 int n,ans=0,temp=1; 8 char ch; 9 scanf("%d",&n); 10 while(cin>>ch) 11 { 12 temp*=n; //temp先暂时记录 13 temp%=10000; 14 if(ch=='+') {ans+=temp;ans%=10000;temp=1;} //如果是加号,就先加上之前的乘法 15 scanf("%d",&n); 16 n%=10000; //不断地取后四位 17 } 18 temp*=n; //别忘了最后一个数 19 ans+=temp; 20 ans%=10000; 21 printf("%d",ans); 22 system("pause"); 23 return 0; 24 } 25 //本题的主要思想是,先用temp暂时记录,如果遇到加号,就停止;并把当前的乘法答案加入总答案。 26 //如果是连乘,就用temp一直乘下去,这样的答案就是连乘的答案 。