c语言的程序 对实数进行四则运算的程序 要求计算顺序,先乘除,后加减,优先括号

问题描述:

c语言的程序 对实数进行四则运算的程序 要求计算顺序,先乘除,后加减,优先括号
c语言的程序,做一个可以对实数进行四则运算的c语言的程序 比如输入1+2回车显示3,输入1+2*3回车显示7 输入(2.1+3)*3.5回车显示17.85
1个回答 分类:综合 2014-11-05

问题解答:

我来补答
#include
#include
#include
#include
#define BUF_MAX 100
double handle(char *str) //处理没括号的
{
double res,*data=NULL,*data_old=NULL;
char *flag=NULL,*flag_old=NULL,*temp=str,*temp_old=str;
int n=0,m=0,i=0;
assert(NULL!=str);
while(*temp)
{
if(*temp==' ')
strcpy(temp,temp+1);
else
temp++;
}
temp=str;
while(*temp)
{
if(temp==temp_old && *temp=='-')
{
temp++;
continue;
}
else if (*temp=='+' || *temp=='-' ||*temp=='*' ||*temp=='/')
n++;
temp++;
}
flag_old=(char *)malloc(sizeof(char)*n);
if(NULL==flag_old)
{
perror("malloc fail!\n");
}
data_old=(double *)malloc(sizeof(double)*(n+1));
if(NULL==data_old)
{
perror("malloc fail!\n");
}
temp=str;
flag=flag_old;
data=data_old;
while(*temp!='\0')
{
if(temp==temp_old && *temp=='-')
{
temp++;
continue;
}
else if(*temp=='+' || *temp=='-' ||*temp=='*' ||*temp=='/')
{
*flag++=*temp;
*temp='\0';
*data++=atof(temp_old);
temp_old=temp+1;
}
temp++;
}
*data=atof(temp_old);
flag=flag_old;
data=data_old;
do
{
m=n;
for(i=0;i
 
 
展开全文阅读
剩余:2000
下一页:练习2.3