标签:bsp str 数据 计算器 tchar title 符号 getc break
原题描述:
Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
Output对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
Sample Input
1 + 2 4 + 2 * 5 - 7 / 11 0
Sample Output
3.00 13.36
这个题目很简单啊,定义一个实型数组来存储数据,先把第一个数记录在数组前面。一个字符来记载运算符号。再输入后面的数字,如果是‘+‘号就原样,‘-‘号把数字就取负,‘*‘号就和前面一个数相乘,前面的数变为0,值赋给后面的数。‘/‘就是乘法改成除法就可以了。然后把数组的数都相加就可以了。注意一下输出的时候要求精度
AC代码:
1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 using namespace std; 5 int main() 6 { 7 char s; 8 double h,b[200]={0}; 9 while(1) 10 { 11 scanf("%lf",&b[0]); 12 int i=1; 13 if(b[0]==0) 14 { 15 s=getchar(); 16 if(s==‘\n‘) 17 break; 18 } 19 while(1) 20 { 21 s=getchar(); 22 if(s==‘+‘) 23 { 24 scanf("%lf",&b[i]); 25 i++; 26 } 27 if(s==‘-‘) 28 { 29 scanf("%lf",&b[i]); 30 b[i]=-b[i]; 31 i++; 32 } 33 if(s==‘*‘) 34 { 35 scanf("%lf",&b[i]); 36 b[i]=b[i-1]*b[i]; 37 b[i-1]=0; 38 i++; 39 } 40 if(s==‘/‘) 41 { 42 scanf("%lf",&b[i]); 43 b[i]=b[i-1]/b[i]; 44 b[i-1]=0; 45 i++; 46 } 47 if(s==‘\n‘) 48 break; 49 } 50 h=0; 51 for(int j=0;j<i;j++) 52 { 53 h+=b[j]; 54 } 55 printf("%.2lf\n",h); 56 } 57 return 0; 58 }
标签:bsp str 数据 计算器 tchar title 符号 getc break
原文地址:http://www.cnblogs.com/jonty666/p/7219522.html