c语言题目:输入一个算式(没有空格),求结果

运算优先级按照从左到右,如:1+2*10-10/2=,输出10
代码如下:
#include <stdio.h>
int main(void){
int k,i;
char str[100], x[100];
double result[100],answer;
printf("请输入一个算式:");
scanf("%s",str);
k=i=0;
do{
result[k]=0;
do{
result[k]=result[k]*10+str[i]-'0';
i++;
}while(str[i]!='+'
&& str[i]!='-'
&& str[i]!='*'
&& str[i]!='/'
&& str[i]!='=');
if(str[i]=='=')
break;
k++;
x[k]=str[i];
k++;
i++;
}while(str[i]!='=');//simplify above

answer=result[0];//calculate below
k=1;
do{
if(x[k]=='+')
answer=answer+result[k+1];
if(x[k]=='-')
answer=answer-result[k+1];
if(x[k]=='/')
answer=answer/result[k+1];
if(x[k]=='*')
answer=answer*result[k+1];
k=k+2;
}while(x[k]!='=');

printf("%.0lf\n",answer);

return 0;

}

请问大神,哪里错了?多谢了!!

#include <stdio.h>
int main(void)
{
int k, i, m;
char str[100], x[100];
double result[100];
printf("请输入一个算式:");
scanf("%s", str);
k = i = 0;
do
{
result[k] = 0;
do
{
result[k] = result[k] * 10 + str[i] - '0';
i++;
}
while (str[i] != '+' && str[i] != '-' && str[i] != '*'
&& str[i] != '/' && str[i] != '=');
if (str[i] == '=')
{
x[k] = str[i];
k++; // 修改这里
break;
}
x[k] = str[i];
k++;
i++;
}
while (str[i] != '='); // simplify above
// calculate below
i = 0;
do
{ // 先计算高优先级运算符
while (x[i] == '*' || x[i] == '/')
{
if (x[i] == '*')
result[i] *= result[i + 1];
else
result[i] /= result[i + 1];
for (m = i + 1; m < k; m++) // 移动运算符和数据
{
result[m] = result[m + 1];
x[m - 1] = x[m];
}
}
i++;
}
while (x[i] != '=');
i = 0; // 然后计算低优先级运算符
while (x[i] == '+' || x[i] == '-')
{
if (x[i] == '+')
result[i] += result[i + 1];
else
result[i] -= result[i + 1];
for (m = i + 1; m < k; m++)
{
result[m] = result[m + 1];
x[m - 1] = x[m];
}
}
printf("%.0lf\n", result[0]);
return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

c语言题目:输入一个算式(没有空格),求结果
if (x[i] == '+')result[i] += result[i + 1];else result[i] -= result[i + 1];for (m = i + 1; m < k; m++){ result[m] = result[m + 1];x[m - 1] = x[m];} } printf("%.0lf\\n", result[0]);return 0;} ...

c语言计算器加减乘除
include <stdio.h>int main() { double a, b, d = 0.0; char c; while (1) { printf("输入一个算式,如:1+2:"); scanf("%lf%c%lf", &a, &c, &b); int f = 1; switch (c) { case '-': d = a - b; break; case '+': ...

C语言,在键盘输入一个算术的运算式子,输出运算结果。包括加减乘数乘方...
谢谢谢谢! 键盘输入一个算术的运算式子,输出运算结果。这里规定可以接收五个算术运算的符号:+、-、*、\/、^(乘方)。输入这五个符号以外的运算符号则提醒出错。 请将变量定义为double类型 本程序需要从键盘接收一个表达式,根据表达式中的运算符号实现相应的运... 展开 匿名 2018-10-11 | 浏览12 次 C语言编程语...

C语言:从键盘输入一个人简单的数学表达式,计算并显示该表达式的值_百度...
double result0; \/\/存放运算结果 char current_char;int i = 0;printf("请输入简单表达式!\\n");scanf("%c", ¤t_char);while (current_char >= '0' && current_char <= '9'){\/\/输入第一个变量 var1[i++] = current_char;scanf("%c", ¤t_char);} if ( i > 0...

C语言,编写一个程序 用户输入运算符和四则运算符,输出计算结果
include<stdio.h> int main(){ int a=1,b,c;char op;while(a||b){ printf("请输入一个算式(二数都为0时结束):");scanf("%d%c%d",&a,&op,&b);if(a==0&&b==0)break;if(op=='+')c=a+b;if(op=='-')c=a-b;if(op=='*')c=a*b;if(op=='\/')c=a\/b;if(op=...

C语言 在一个数组或指针里有一个算式(字符串),如何对它求值?
如果当前元素是右括号")"则栈顶元素依此出栈,直至与它匹配的左括号"("出栈为止。对后缀表达式进行计算原理是这样的:对后缀表达式由左往右方向进行扫描,遇到数字则进栈,遇到运算符号则在栈里依此出栈两组数字进行计算,计算结果依然进栈,反复此操作。最后栈底部最后一个元素就是该表达式的运算结果。

设计一个C语言程序, 输入一个四则运算的表达式,在输入 = 后自动输出...
1、首先,编写C语言的头文件#include <stdio.h>。2、然后编写Main函数框架。3、接下来定义两个变量。4、然后编写输入的函数。5、输入后,编写输出程序。6、全部代码都写好了,运行程序,观看运行情况。注意事项:尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C...

如何用c语言实现:输入一个算式,然后在程序中使用。
程序是不认算式的。你只能把它变为系数输入才可以。如ax*x+bx+c,你输入a,b,c。直接输算式没意义。归根到底,程序只能做你设计好的事情。想让它认算式,你要把你的算式归纳成只有系数的东西,或者其它有规律的东西。

c语言中如何输出11*15?
题目比较含糊,分两种情况解答:一、如果要原样输入,即输出字符串,语句为:printf("11*15");二、如果要输出算式的计算结果,语句为:printf("%d",11*15);

c语言记算算式3.6*77的结采结果保图小数点后三位?
这是一个简单的C语言算术表达式,可以使用以下代码计算并输出结果:include <stdio.h> int main() { float result = 3.6 * 77; \/\/ 计算结果 printf("结果保留三位小数为:%.3f\\n", result); \/\/ 输出结果 return 0;} 其中,%.3f 表示输出浮点数并保留三位小数。输出为:结果保留三位...

相似回答
大家正在搜