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

作者&投稿:谷吴 (若有异议请与网页底部的电邮联系)
C语言:从键盘输入一个人简单的数学表达式,计算并显示该表达式的值?~

如果需要精确点的,吧%d改成%f;如果需要其他运算,直接加“else if”就可以啦!
我的应该比三楼简捷一些,但是他的挺正规的。
我用的dev。
这里主函数不能带参数。不知你的是怎样的....
#include
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!
");
printf("%d
",c);
return 0;
}

我理解的简单的数学表达式:纯数字+运算符+纯数字+(回车)
而且这里的运算符指 +,-,*,/ 四种之一,纯数字是指整数
如下:
#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("请输入简单表达式!
");
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("
%d+%d=%f
",num1,num2,result0);
break;
case '-' :
result0 = num1 - num2;
printf("
%d-%d=%f
",num1,num2,result0);
break;
case '*' :
result0 = num1 * num2;
printf("
%d*%d=%f
",num1,num2,result0);
break;
case '/' :
result0 = (num1 + 0.0) / num2;
printf("
%d/%d=%f
",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;
}

我理解的简单的数学表达式:纯数字+运算符+纯数字+(回车)
而且这里的运算符指 +,-,*,/ 四种之一,纯数字是指整数
如下:
#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;
}

数字可在程序中照常设,但是那个运算符就要设为标识符,之后进行匹配。

scanf("%d %c %d",&a,&b,&c);//这里变量b是一个字符变量,即输入+,-,或*,每输入一个数字按空格
d=a+c;
printf("%d+%d=%d",a,c,d);
这只是加法的例子,其它同理。
不知道有没有回答你的问题,希望对你有帮助!

如果需要精确点的,吧%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;
}

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语言:从键盘输入一个人简单的数学表达式,计算并显示该表达式的值_百度...
答: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 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语言:从键盘输入一个人的姓名、年龄、性别和身高,然后将它们打印出来...
答:people a;printf("请输入姓名 年龄 性别 身高\n");scanf("%s %d %s %d",a.name,&a.age,a.sex,&a.height);printf("您输入的信息为:\n");printf("%s %d %s %d\n",a.name,a.age,a.sex,a.height);}

...编写先存储一个班级学生的姓名,从键盘输入一个姓名,查找该人是否...
答:f=1;则该人为该班学生 <string.h>

用c语言编写一个程序,从键盘输入10个学生成绩。
答:C语言:编写一个程序,从键盘输入10个学生成绩,求平均成绩。1、虽然main函数可以作为结构体或者类的成员函数,但相应地会失去作为程序出入口的功能。C++中全局main函数的书写格式与C语言完全相同,功能也完全相同,且同一C++程序同样只能有一个全局main函数。2、循环语句中进行10个数的累加在sum里面,然后在...

C语言找错 题目:从键盘输入一个班(不超过30人)学生某门课的成绩,_百度...
答:只有你输入的成绩为负数时才会停止让你输入,因为你有判断while(a[i-1]>=0);所以如果你输入的大于零他会一直让你输入;另外使用getch,应包含头文件#include <conio.h> 完整代码 include<stdio.h>#include <conio.h>#define N 30void main(){int a[N],i=0,j,k,m=0,t;do{printf("输入...

.定义一个结构体,包含:姓名,学号,性别,C语言成绩;从键盘分布输入这些信 ...
答:ST_INFO student; FILE* f; char name[32]; char serial[32]; char sex[16]; char score[64]; memset(student.name, 0, 32); memset(student.serial, 0, 32); memset(student.sex, 0, 16); memset(student.score, 0, 64)...

一道简单C语言:请编写一个程序,从键盘输入100名职工的职工号、姓名和...
答:.wage<300.00)printf("%s,%s,%6f\n",wi[i].Number,wi[i].name,wi[i].wage);} } //楼主的程序完全正确,基本不用修改,//可以把宏定义成3来验证程序的正确与否,//注意输入的方式,先输入数字,然后回车,//再输入名字再回车,再输入工资,然后就会转到第二个人了,不然会出错的 ...

C语言:用函数编写一个程序,从键盘输入一个带有空格的字符串,去掉字符串...
答:1、首先,随便创建一个有main方法的类。2、定义一个字符串变量,这里给变量赋值,前后都留有一个空格。3、先运行一遍,看输出效果,可以看到百度包括空格的几个字符都打印出来了。4、为了更加清晰,用字符串对象另外一个方法“length()”得到此字符串的长度为6, 说明的确是“百度”加两个空格的长度...

c语言 如何从键盘输入字符串???
答:c语言从键盘输入字符串的步骤如下:1.首先我们新建一个dev C++的项目。2.接下来在项目中新建C语言程序文件。3.然后在C语言文件中声明一个字节数组。4.接下来我们通过printf函数提示用户输入字符串,通过scanf接收用户输入的字符串。5.接着在通过printf函数输出用户输入的内容。6.最后运行C语言程序,我们...