C语言 从键盘输入一个简单的数学表达式,计算并显示该表达式的值 求算法和程序

如题所述

我理解的简单的数学表达式:纯数字+运算符+纯数字+(回车)
而且这里的运算符指 +,-,*,/ 四种之一,纯数字是指整数
如下:
#include <stdio.h>
#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-30
main()
{
int a,b;
int sum;
scanf("a=%d,b=%d\n",&a,&b);
sum=a+b;
printf("sum=a+b");
printf("%d\n",sum);

}
这个是最简单是数学表达式吧,是个加法的而已。 我是直接写出来的,没有调试过,如果有错误你可以找我。希望对你有帮助
第2个回答  2011-03-30
从键盘输入a,b。计算a+b的值。
main()
{
int a,b,sum ; \*定义变量a,b和sum为整形。*\
scanf("a=%d,b=%d\n",&a,&b); \*从键盘先后接收a和b两个变量的值*\
sum=a+b; \*把a+b的值赋给sum*\
printf("%d=%d+%d",sum,a,b); \*打印结果,%d是占位符,表示一个整数,分别对应引号后的三个变量*\
}

引号内的字符会原封不动的打印出来,但是占位符是不会被打印出来的,会替换成对应的值,
第3个回答  2011-04-05
#include <stdio.h>

void main()
{
int a,b,sum ;
printf("请输入两个数(以空格隔开)");
scanf("%d%d",&a,&b);
sum=a+b;
printf("%d+%d=%d",a,b,sum);

}
已测试
第4个回答  2011-03-30

C语言 从键盘输入一个简单的数学表达式,计算并显示该表达式的值...
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'){\/\/输入第一个变量 va...

C语言:从键盘输入一个人简单的数学表达式,计算并显示该表达式的值?
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语言加减乘除设计;大神改下要求写一个简单的计算器,输入一个数学表达式...
首先,初始化两个数组:一个用于存储输入的符号,另一个用于存放数字。同时,定义一个栈来保存数字。每当从输入中读取到一个数字,就将其压入栈中。对于每个符号,根据其类型(加、减、乘、除),从栈中弹出相应的数字进行计算,并将结果压回栈中。如此循环,直至处理完所有输入。具体实现时,记得对...

C语言一个简单的表达式求值
ch=‘A’,ch=(ch>='A'&&ch<='Z')?(ch+32):ch意思是ch>=‘A’和ch>='Z'都成立则ch=ch+32,否则ch=ch,因为都成立,所以ch=ch+32,A=65,所以ch=65+32=97=a够详细了吧,哈哈。

C语言 要求编写一个简单计算器的程序
include<stdio.h>void main() { float x,y,z; char c; scanf("%f%c%f",&x,&c,&y); switch ( c ) { case '+': z=x+y; break; case '-': z=x-y; break; case '*': z=x*y; break; case '\/': z=( y==0 )?(0):(x\/y); break; default:...

用C语言编程实现一个简单的四则运算计算器
opt=='\/')return op1\/op2;return 0;} int main(){ int op1,op2;char opt;\/\/计算结果放在第一个操作数 op1 = getNextNum();while(1){ opt = getOpt();if ( opt == '=' ) break;op2 = getNextNum();op1 = caculate(op1,op2,opt);} printf("%d\\n",op1);} return 0;} ...

求高手进来用C语言编出一个数学计算器程序
main(){ while(1){ int a,b,c;printf("请输入两个数,以逗号隔开\\n");scanf("%d,%d",&a,&b);printf("选择算法\\n") ;printf(" 1.乘 2.除\\n 3.加 4.减\\n") ;scanf("%d",&c);switch(c){ case 1:c=a*b;printf("结果为%d\\n",c);break;case 2:if(b==0){ ...

请大家帮我做下计算机C语言作业很简单的(必须包括算法、代码、结果截...
printf("请分别输入学号、姓名、数学、语文、英语:\\n");for(i=0;i<N;i++){ scanf("%ld%s%f%f%f",&a[i].num,a[i].name,&a[i].math,&a[i].chinese,&a[i].english);fprintf(fp,"%ld %s %.1f %.1f %.1f\\n",a[i].num,a[i].name,a[i].math,a[i].chinese,a[i]....

用c语言做一个简单的计算器。要求能做四则运算就够了,越简单越好。刚学...
while(1) { printf("输入表达式: a+(-,*,\/)b\\n"); scanf("%f%c%f",&a,&c,&b); switch(c)\/\/选择分支,C传进来 { case '+': printf('=',a+b);break;\/\/c等于 + case '-': printf('=',a-b);break;\/\/c等于 - case '*': printf('=',a*b);break;\/\/c等于 * case '...

相似回答