![]() |
#2
wangzhao85502011-04-25 16:08
|

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Chenchu(int Int[],int Long,char symbol[],int Start) ;//声明混合运算函数
void Jiajian(int Int[],int Long,char symbol[],int Start) ;
int main()
{
int i,shu=0,yun=0,j,m,n,N,Int[5],Long,I,J,M,k,Go ;
char Symbol[5] ;
for(i=0;i<10;i++)
{
scanf("%d",&Int[i]) ;//输入整数
scanf("%c",&Symbol[i]) ;//输入运算符
if(Symbol[i]=='=')//直到输入“=”,输入结束
{break ;}
}
Long=strlen(Symbol);//计算运算符的长度
Go=Chenchu(Int,Long,Symbol,0) ;//调用混合运算函数
printf("%d",Go) ;//输出结果
system("pause") ;
}
int Chenchu(int Int[],int Long,char symbol[],int Start )
{
for(int j=Start;j<Long-1;j++)//“*”,“/”运算符优先计算
{
if(symbol[j]=='*') //首先检查“*”运算符
{
Int[j]=Int[j]*Int[j+1] ;//“*”运算符 对应位置的整数与其后一位的整数相乘 ,将整数数组当前位置的整数替换为计算结果计算结果,并且
printf("%d*\n",Int[j]) ;
for(int m=j;m<Long-2;m++) //进行完乘法运算后,从检查出的“*”运算符位置和相对应的整数位置
{
Int[m+1]=Int[m+2] ;//将已经完成计算的整数从整数数组中删除
symbol[m]=symbol[m+1] ;//将已经完成计算的运算符和从字符数组中删除
Long=Long-1 ;//字符数组和整数数组长度自动缩减一位
Chenchu(Int,Long,symbol,j) ;//从当前位置重新进行检查
}
}
else if(symbol[j]=='/')
{
Int[j]=Int[j]/Int[j+1] ;
printf("%d/\n",Int[j]) ;
for(int n=j;n<Long-2;n++)
{
Int[n+1]=Int[n+2] ;
symbol[n]=symbol[n+1] ;
Long=Long-1 ;
Chenchu(Int,Long,symbol,j) ;
}
}
}
Jiajian(Int,Long,symbol,0) ;
return Int[0] ;
}
void Jiajian(int Int[],int Long,char symbol[],int Start)
{
for(int J=Start;J<Long-1;J++)
{
if(symbol[J]=='-')
{
Int[J]=Int[J]-Int[J+1] ;
printf("%d-\n",Int[J]) ;
for(int M=J;M<Long-2;M++)
{
Int[M+1]=Int[M+2] ;
symbol[M]=symbol[M+1] ;
Long=Long-1 ;
Jiajian(Int,Long,symbol,J) ;
}
}
else if(symbol[J]=='+')
{
Int[J]=Int[J]+Int[J+1] ;
printf("%d+\n",Int[J]) ;
for(int N=J;N<Long-2;N++)
{
Int[N+1]=Int[N+2] ;
symbol[N]=symbol[N+1] ;
Long=Long-1 ;
Jiajian(Int,Long,symbol,J) ;
}
}
}
}
#include <stdlib.h>
#include <string.h>
int Chenchu(int Int[],int Long,char symbol[],int Start) ;//声明混合运算函数
void Jiajian(int Int[],int Long,char symbol[],int Start) ;
int main()
{
int i,shu=0,yun=0,j,m,n,N,Int[5],Long,I,J,M,k,Go ;
char Symbol[5] ;
for(i=0;i<10;i++)
{
scanf("%d",&Int[i]) ;//输入整数
scanf("%c",&Symbol[i]) ;//输入运算符
if(Symbol[i]=='=')//直到输入“=”,输入结束
{break ;}
}
Long=strlen(Symbol);//计算运算符的长度
Go=Chenchu(Int,Long,Symbol,0) ;//调用混合运算函数
printf("%d",Go) ;//输出结果
system("pause") ;
}
int Chenchu(int Int[],int Long,char symbol[],int Start )
{
for(int j=Start;j<Long-1;j++)//“*”,“/”运算符优先计算
{
if(symbol[j]=='*') //首先检查“*”运算符
{
Int[j]=Int[j]*Int[j+1] ;//“*”运算符 对应位置的整数与其后一位的整数相乘 ,将整数数组当前位置的整数替换为计算结果计算结果,并且
printf("%d*\n",Int[j]) ;
for(int m=j;m<Long-2;m++) //进行完乘法运算后,从检查出的“*”运算符位置和相对应的整数位置
{
Int[m+1]=Int[m+2] ;//将已经完成计算的整数从整数数组中删除
symbol[m]=symbol[m+1] ;//将已经完成计算的运算符和从字符数组中删除
Long=Long-1 ;//字符数组和整数数组长度自动缩减一位
Chenchu(Int,Long,symbol,j) ;//从当前位置重新进行检查
}
}
else if(symbol[j]=='/')
{
Int[j]=Int[j]/Int[j+1] ;
printf("%d/\n",Int[j]) ;
for(int n=j;n<Long-2;n++)
{
Int[n+1]=Int[n+2] ;
symbol[n]=symbol[n+1] ;
Long=Long-1 ;
Chenchu(Int,Long,symbol,j) ;
}
}
}
Jiajian(Int,Long,symbol,0) ;
return Int[0] ;
}
void Jiajian(int Int[],int Long,char symbol[],int Start)
{
for(int J=Start;J<Long-1;J++)
{
if(symbol[J]=='-')
{
Int[J]=Int[J]-Int[J+1] ;
printf("%d-\n",Int[J]) ;
for(int M=J;M<Long-2;M++)
{
Int[M+1]=Int[M+2] ;
symbol[M]=symbol[M+1] ;
Long=Long-1 ;
Jiajian(Int,Long,symbol,J) ;
}
}
else if(symbol[J]=='+')
{
Int[J]=Int[J]+Int[J+1] ;
printf("%d+\n",Int[J]) ;
for(int N=J;N<Long-2;N++)
{
Int[N+1]=Int[N+2] ;
symbol[N]=symbol[N+1] ;
Long=Long-1 ;
Jiajian(Int,Long,symbol,J) ;
}
}
}
}