简单计算器

xiaoxiao2021-02-28  134

简单计算器

Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 131 Accepted Submission(s) : 54 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 Output 对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 Sample Input 1 + 2 4 + 2 * 5 - 7 / 11 0 Sample Output 3.00 13.36 Source 浙大计算机研究生复试上机考试-2006年

#include<stdio.h> #include<string.h> int main() {     int i, j, y, t, k, w;     double a[1001], sum;     char s[1001], b[1001];     while (gets(s))     {         if (strcmp(s, "0") == 0)             break;         sum = 0;         w = 0;         y = 0;         j = 0;         a[0] = 0;         for (i = 0;i<strlen(s);i++)         {             if (s[i] >= '0'&&s[i] <= '9')             {                 a[j] = a[j] * 10 + s[i] - 48;                 y = 1;             }             else                 if (y == 1)                 {                     j++;                     a[j] = 0;                     y = 0;                 }         }         t = 1;         for (i = 0;i<strlen(s);i++)         {             if (s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/')             {                 b[t] = s[i];                 t++;             }         }         for (i = 1;i<t;i++)         {             if (b[i] == '*')             {                 a[i - 1 - w] = a[i - 1 - w] * a[i - w];                 for (k = i - w;k<j - w;k++)                     a[k] = a[k + 1];                 w++;             }             if (b[i] == '/')             {                 a[i - 1 - w] = a[i - 1 - w] / a[i - w];                 for (k = i - w;k<j - w;k++)                     a[k] = a[k + 1];                 w++;             }         }         k = 1;         sum = a[0];         for (i = 0;i<t;i++)         {             if (b[i] == '-')             {                 sum -= a[k];                 k++;             }             if (b[i] == '+')             {                 sum += a[k];                 k++;             }         }         printf("%.2f\n", sum);     }     return 0; }
转载请注明原文地址: https://www.6miu.com/read-56960.html

最新回复(0)