四则运算用c语言怎么搞

要求:实现带有括号的四则运算,输入是一个带有括号的四则运算表达式,输出是计算得出的正确计算结果。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define ADD1 sizeof(kuohao)
#define ADD2 50
typedef struct kuohao{char a;struct kuohao *pre;}kuohao;
char *creat()
{
char *a;
a=(char*)malloc(ADD2*sizeof(char));
gets(a);
return a;
}
int judgekuohao(char *a)
{
kuohao *top,*tail,*t;
top=tail=(kuohao*)malloc(ADD1);
while(*a!='\0')
{
if(*a=='(')
{
t=top;
top=(kuohao*)malloc(ADD1);
t->a='(';
top->pre=t;
}
else if(*a==')')
{
if(top==tail)
return -1;
else
{
t=top;
top=top->pre;
free(t);
}
}
a++;
}
if(top==tail)
return 1;
else return -1;
}
char precede(char a,char b)
{
int i,j;
char compare[8][8]={' ','+','-','*','/','(',')','\0',
'+','>','>','<','<','<','>','>',
'-','>','>','<','<','<','>','>',
'*','>','>','>','>','<','>','>',
'/','>','>','>','>','<','>','>',
'(','<','<','<','<','<','=',' ',
')','>','>','>','>',' ','>','>',
'\0','<','<','<','<','<',' ','='};
for(i=0;i<8;i++)
if(compare[0][i]==a)
break;
for(j=0;j<8;j++)
if(compare[j][0]==b)
break;
return compare[j][i];
}
void run(char *a)
{
int b[50]={0},count;char c[50],t;
int i=0,j=0;char *d;c[0]='\0';
while(*a!='\0'||c[j]!='\0')
{
count=0;
if(*a<='9'&&*a>='0')
{
d=a;
while(*d<='9'&&*d>='0')
{
d++;
count++;
}
while(count>0)
{
b[i]+=(int)((*a-'0')*pow(10,count-1));
count--;
a++;
}
i++;
}
else
{
switch(precede(*a,c[j]))
{
case'<':
j++;c[j]=*a;a++;break;
case'=':
j--;a++;break;
case'>':
t=c[j];
j--;i--;
if(t=='-')
{
b[i-1]=b[i-1]-b[i];
b[i]=0;
}
else if(t=='+')
{
b[i-1]=b[i-1]+b[i];
b[i]=0;
}
else if(t=='*')
{
b[i-1]=b[i-1]*b[i];
b[i]=0;
}
else if(t=='/')
{
b[i-1]=b[i-1]/b[i];
b[i]=0;
}
else break;
}
}
}
printf("%d\n",b[i-1]);
}
void main()
{
int i,n,s;
char *a[10],*t;
scanf("%d",&n);
for(i=0;i<=n;i++)
a[i]=creat();
for(i=1;i<=n;i++)
{
t=a[i];
s=judgekuohao(t);
if(s==-1)
{
printf("False\n");
continue;
}
else
run(a[i]);
}
} 输入: 第一行输入要计算的算术表达式的个数n 后紧跟n行算术表达式
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-05
什么带括号...说清楚

如何用C语言实现四则运算?
1.定义头文件#include "stdafx.h"、#include <stdio.h>和#include <math.h>。2.写出主函数void main(){},在函数内添加如下代码:\/\/定义变量 int minusNumber=-10; int plusNumber=0; \/\/转换成正数 plusNumber=abs(minusNumber); \/\/输出结果 printf("转换前:%d\\n",minusNumber); printf(...

c语言则么怎么实现四则运算
void main(){ float a=0,b=0,c=0,key;char d;printf("输入简单的四则运算表达式:\\n");scanf("%f%c%f",&a,&d,&b);switch(d){ case'+': c=a+b;break;case'-': c=a-b;break;case'x':case'*': c=a*b;break;case'\/': if(b>0) c=a\/b;break;default:break;} printf...

c语言四则运算程序怎么写
加法运算是最简单的四则运算之一,其基本形式为atb,其中a和b为加数,+为加号,其结果为两个加数的和。在C语言中,加法运算可以使用“+”符号进行表示,例如:inta=10;intb= 20;intc=a+b;printf("a+b=%dn",c)。上述代码中,定义了两个整型变量a和b,分别赋值为10和20,然后使用“+”符号进...

...定义四个函数,分别实现加减乘除四则运算,要使用函数。计算除法时要...
在C语言编程中,要实现对两个输入数进行加减乘除的四则运算,并使用函数进行操作,需要注意除法时的特殊处理。首先,我们需要创建四个独立的函数,分别对应加、减、乘、除这四种运算。以下是如何实现这一过程的步骤:1、定义一个基础函数,例如`double calculate(double x, double y, char operation)`,...

用c语言编写四则运算,急呀!越简单越好
用纯粹的C语言实现,代码如下:include<stdio.h>int main(){ double a,b; scanf("%lf%lf", &a, &b); printf("a+b=%lf, a-b=%lf, a*b=%lf", a+b, a-b, a*b); if(b==0) printf(", error!\\n"); else printf(", a\/b=%lf\\n", a\/b); ...

C语言怎么实现任意两个数的四则运算?
C语言实现任意两个数的四则运算的方法:1、阅读代码,使用了随机函数:srand(unsigned( time(NULL)));通过调用随机函数,将生成的100以内的随机整数赋给不同的变量,一部分用于四则运算式数据的来源,而赋给变量c的随机数则用于结合switch语句控制程序跳转执行 不同的分支,即不同的四则运算,如下:c...

c语言怎么用switch语句编写四则运算?
switch 是一个开关语句,和case配套使用, 和if else 判断语句差不多, switch 语句是用于多分支语句进行条件判断。下例为用switch语句编写的四则运算:include <stdio.h> void main(){ double N1,N2;char Operation;printf("输入运算的两个数");scanf("%lf%lf",&N1,N2);printf("请输入运算...

求c语言编写四则运算程序
else error();\/*extraneous cahrs on line*\/ } main(){ do { calculate();}while(1);} float exp(void){ float temp = term();while((token=='+')||(token=='-'))switch(token){ case '+':match('+');temp+=term();break;case '-':match('-');temp-=term();break;} r...

用简单的c语言编写四则运算题
printf("欢迎进入四则运算题,现在开始爆发你的小宇宙吧!\\n");srand((unsigned int)time(NULL));while(1){ printf("请选择运算类型:1.加法 2.减法 3.乘法 4.除法(保留两位小数)\\n");scanf("%d",&choice);printf("请选择位数:1.一位数 2.两位数\\n");scanf("%d",&data);swit...

输入两个整数,进行加减乘除四则运算的c语言程序怎么写啊,拜托了~_百 ...
void function(int a, int b){ printf("%d add %d = %d\\n",a, b, a+b); \/\/加法运算 printf("%d sub %d = %d\\n",a, b, a-b);\/\/加法运算 printf("%d mul %d = %d\\n",a, b, a*b);\/\/乘法运算 printf("%d div %d = %d\\n",a, b, a\/b);\/\/除法运算 } int ...

相似回答
大家正在搜