
main (void)
{
int a,b,c
char op
scanf ("%d%c%d",&a,&op,&b)//最好空格去掉,这样就可以直接写成a+b或者a-b。如果有空格的话要记得空格也要打a + b。要不会出现错误 ,而且输入的时候需要用地址符&····
if(op=='+')
{c=a+b}
if(op=='-')
{c=a-b}
printf("%d%c%d=%d\n",a,op,b,c)//楼主这句应该放在数据处理完后。。要不你输出的a,op,b都是在没处理过的数,也就是原来的值,而且最好是把,去掉,这样更美观 ,而且printf后面不需要&。。。切记。而且没必要那样输出。请楼主看我的printf```
}
还不清楚 来hi我
#include <stdio.h>int jisuan(int a,int b,char fu)
{
if(fu=='+') return a+b
if(fu=='-') return a-b
if(fu=='*') return a*b
if(fu=='/') return a/b
}
int fun(char *ss,int n)
{
int i,flag=0
if(n==1) return ss[0]-'0'
for(i=0i<ni++)
{
if((ss[i]=='+')||(ss[i]=='-'))//扫描加减号
{
flag = 1
return jisuan(fun(ss,i),fun(ss+i+1,n-i-1),ss[i])
}
}
if(flag==0)//如果算数中没有+-
{
for(i=0i<ni++)
if((ss[i]=='*')||(ss[i]=='/'))
{
return jisuan(fun(ss,i),fun(ss+i+1,n-i-1),ss[i])
}
}
}
void main(void)
{
char s[50]
int n
printf("输入算数:")
scanf("%s",s)
n = strlen(s)
printf("=%d\r\n",fun(s,n))
}
用的递归,这样省去很多麻烦
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)