作业帮 > 综合 > 作业

用C语言编译一个简单计算器的程序,要求其中有括号和幂函数

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/29 11:04:41
用C语言编译一个简单计算器的程序,要求其中有括号和幂函数
可以运行加减乘除,括号和幂函数
请按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程序.要求:
①从键盘输入一个完整的表达式,以回车作为表达式输入结束的标志.
②输入表达式中的数值均为大于等于零的整数.中间的计算过程如果出现小数也只取整.
例如,输入:4+2*5= 输出:14
输入:(4+2)*(2-10)= 输出:-48
用C语言编译一个简单计算器的程序,要求其中有括号和幂函数
写好了
不能算小数,根据你的题意来的,如果输入小数,则只取整数部分运算,结果不能为负数
#include
#include
#include
int deal(int op1,int op2,char op) //运算
{
switch(op)
{
case '+':op1 += op2; break;
case '-':op1 -= op2; break;
case '*':op1 *= op2; break;
case '/':op1 /= op2; break;
case '^':
{
int temp = op2;
for(int i = 1; i < op2 - 1; i++)
op1 *= temp;
break;
}
}
return op1;
}
char *replace(char *source,char *sub,char *rep) //字符串替换
{
char *result;
char *pc1,*pc2,*pc3;
int isource,isub,irep;
isub = strlen(sub);
irep = strlen(rep);
isource = strlen(source);
if(NULL == *sub)
return strdup(source);
result = (char *)malloc(( (irep > isub) (float)strlen(source) / isub* irep+ 1:isource ) * sizeof(char));
pc1 = result;
while(*source != NULL)
{
pc2 = source;
pc3 = sub;
while(*pc2 == *pc3 && *pc3 != NULL && *pc2 != NULL)
pc2++,pc3++;
if(NULL == *pc3)
{
pc3 = rep;
while(*pc3 != NULL)
*pc1++ = *pc3++;
pc2--;
source = pc2;
}
else
*pc1++ = *source;
source++;
}
*pc1 = NULL;
return result;
}
int main()
{
char s[1000],op1[100],op2[100],*p,*temp,*back;
scanf("%s",&s);
temp = s;
back = s;
int pos = -1;
int fin,oper1,oper2,tmp,size;
char op;
while(1)
{
size = (int)strlen(temp);
for(int i = 0; i < size; i++,temp++)
{
if( *temp == '(')
{
p = (temp + 1);
pos =(i + 1); //找出最后一个(的位置
}
}
int k = 0;
if(pos != -1)
{
temp = back;
tmp = pos;
while(*p != ')')
{
p++;
tmp++;
if( *p == '*' || *p == '/')
{
tmp--;
for(;(temp[tmp] >= '0' && temp[tmp] = '0' && temp[pos] = '0' && temp[pos] = '0' && temp[pos] = '0' && temp[pos]