C语言:从键盘输入一个人简单的数学表达式,计算并显示该表达式的值

如输入:67+28 输出67+28=95 如输入 67-28 输出67-28=39

如输入 67*28 输出67*28=1876 如输入67%28 输出76%28=11

我理解的简单的数学表达式:纯数字+运算符+纯数字+(回车)
而且这里的运算符指 +,-,*,/ 四种之一,纯数字是指整数
如下:
#include
#define NUMSIZE 10 //操作数长度
int ch_to_num(char a[]); //多位数字符到数值的转换

void main()
{
char var1[NUMSIZE+1]; //存放第一个操作数字符串,最后一位存放结束符'\0'
char var2[NUMSIZE+1]; //存放第二个操作数字符串,最后一位存放结束符'\0'
char var_op; //存放操作数字符

bool flag1 = false; //用来标记是否已经输入第一个操作数字符串
bool flag2 = false; //用来标记是否已经输入第二个操作数字符串
bool flag_op = false; //用来标记是否已经输入操作符

int num1; //存放第一个操作数值
int num2; //存放第二个操作数值
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 )
{//第一个操作数合格
flag1 = true; //保存好第一个操作数,改变标记
var1[i] = '\0'; //加入结束符
}
else
{
printf("输入格式有错!");
return;
}

if (current_char =='+'||current_char =='-'||current_char =='*'||current_char =='/')
{//操作符为加减乘除,合格
var_op = current_char; //保存操作符
flag_op = true; //改变标记符
}
else
{
printf("输入格式有错!");
return;
}

scanf("%c", ¤t_char);
i = 0;
while (current_char >= '0' && current_char <= '9')
{//输入第二个变量
var2[i++] = current_char;
scanf("%c", ¤t_char);
}
if ( i > 0 )
{//第二个操作数合格
flag2 = true; //保存好第二个操作数,改变标记
var2[i] = '\0'; //加入结束符
}
else
{
printf("输入格式有错!");
return;
}

//计算:
num1 = ch_to_num(var1);
num2 = ch_to_num(var2);
switch(var_op)
{
case '+' :
result0 = num1 + num2;
printf("\n%d+%d=%f\n",num1,num2,result0);
break;
case '-' :
result0 = num1 - num2;
printf("\n%d-%d=%f\n",num1,num2,result0);
break;
case '*' :
result0 = num1 * num2;
printf("\n%d*%d=%f\n",num1,num2,result0);
break;
case '/' :
result0 = (num1 + 0.0) / num2;
printf("\n%d/%d=%f\n",num1,num2,result0);
break;
default:
break;
}
}
int ch_to_num(char input[])
{
int sum = 0;
int i = 0;
char ch;
ch = input[i];
while ( ch != '\0')
{
sum = sum * 10 +ch - '0';
i++;
ch = input[i];
}
return sum;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-22
数字可在程序中照常设,但是那个运算符就要设为标识符,之后进行匹配。
第2个回答  2011-03-13
scanf("%d %c %d",&a,&b,&c);//这里变量b是一个字符变量,即输入+,-,或*,每输入一个数字按空格
d=a+c;
printf("%d+%d=%d",a,c,d);
这只是加法的例子,其它同理。
不知道有没有回答你的问题,希望对你有帮助!本回答被网友采纳
第3个回答  2011-03-13
如果需要精确点的,吧%d改成%f;如果需要其他运算,直接加“else if”就可以啦!
我的应该比三楼简捷一些,但是他的挺正规的。
我用的dev。
这里主函数不能带参数。不知你的是怎样的....
#include <stdio.h>
int main()
{
int a,b,c;
char o;
scanf("%d%c%d",&a&o&b);
if(o=='+')
c=a+b;
else if(o=='-')
c=a-b;
else if(o=='*')
c=a*b;
else if(o=='/')
c=a/b;
else if(o=='%')
c=a%b;
else
printf("error!\n");
printf("%d\n",c);
return 0;
}本回答被网友采纳
第4个回答  2011-03-21
2楼用switch写出来不过有点麻烦。可以用计算器的方式编辑出来。
#include<stdio.h>
void main()
{
float x,y;
char op
printf("enter x,opration,y:");
scanf("%f%c%f",&x,&op,&y);
switch(op){
case '+':
printf("%f%c%f=%f\n",x,op,y,x+y);break;
case '-':
printf("%f%c%f=%f\n",x,op,y,x-y);break;
case '*':
printf("%f%c%f=%f\n",x,op,y,x*y);break;
case '/':
if(y==0.0)
printf("error");
else
printf("%f%c%f=%f\n",x,op,y,x/y);break;
case '%':
printf("%f%c%f=%f\n",x,op,y,x%y);break;
default:
printf("Can't calculate!\n");
break;
}
}

C语言:从键盘输入一个人简单的数学表达式,计算并显示该表达式的值
我理解的简单的数学表达式:纯数字+运算符+纯数字+(回车)而且这里的运算符指 +,-,*,\/ 四种之一,纯数字是指整数 如下:include define NUMSIZE 10 \/\/操作数长度 int ch_to_num(char a[]); \/\/多位数字符到数值的转换 void main(){ char var1[NUMSIZE+1]; \/\/存放第一个操作...

C语言:从键盘输入一个人简单的数学表达式,计算并显示该表达式的值?
int main(){ int a,b,c;char o;scanf("%d%c%d",&a&o&b);if(o=='+')c=a+b;else if(o=='-')c=a-b;else if(o=='*')c=a*b;else if(o=='\/')c=a\/b;else if(o=='%')c=a%b;else printf("error!\\n");printf("%d\\n",c);return 0;} ...

c语言 输入一个简单数学的表达式,最后输出此表达式并得出结果,怎么做...
int main() {float a,b;char op;scanf("%f%c%f=", &a, &op, &b);switch (op) {case '+':printf("%f", a+b);break;case '-':printf("%f", a-b);break;case '*':printf("%f", a*b);break;case '\/':if (b) printf("%f", a\/b);break;}return 0;} ...

...改下要求写一个简单的计算器,输入一个数学表达式 程序输出结果。_百 ...
首先,初始化两个数组:一个用于存储输入的符号,另一个用于存放数字。同时,定义一个栈来保存数字。每当从输入中读取到一个数字,就将其压入栈中。对于每个符号,根据其类型(加、减、乘、除),从栈中弹出相应的数字进行计算,并将结果压回栈中。如此循环,直至处理完所有输入。具体实现时,记得对...

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

写出下列数学式的C语言算术表达式的值:
首先要定义几个用到的变量:main(){ int a,b,c,x,p,k,m,n;printf("请输入各变量的值");scanf("%d,%d,%d,%d,%d,%d,%d,%d",&a,&b,&c,&x,&p,&k,&m,&n);k=a*x*x+b*x+c;p=(a+b)\/(a-b);m=sqrt(c);n=a+b*m;printf("%d,%d,%d",k,p,n);} ...

...改下要求写一个简单的计算器,输入一个数学表达式 程序输出结果。_百 ...
我个人觉得你的想法是不是错了呢,你用char型来输入但是数字是要存储于int型的数组里的吧,这个时候我建议你用一个char型数组和一个int型数组来分别存储符号和运算数,建议你用栈的数据类型。

c语言计算数学表达式
经计算,答案是2。以下程序运算通过:include<stdio.h> include<math.h> void main(){ int a,c;double b,m,n;a=10;b=3.6;c=2;m=pow(10,3.6);n=log(log(m+c));printf("%.f",n);}

[C语言]编写程序输出图中的数学表达式的值?
不知道x和y的值,是不能求出表达式的值的。下面写出三个表达式的C语言形式(需要包含math.h头文件)1)(x*y+y*y\/(4*x))\/3 2)sqrt(pow(x,4)-4*x*y)3)fabs(x*x-log10(x*y))

...可以进行加减乘除运算及简单的数学函数运算?
下面是使用 C 语言设计简易科学计算器的示例代码:include <stdio.h> include <stdlib.h> include <math.h> int main(){ char op;double num1, num2;printf("请输入数学表达式(如:1 + 2):");scanf("%lf %c %lf", &num1, &op, &num2);switch (op){ case '+':printf("结果...

相似回答