样例可得到正确结果。也测试过其他数据未发现异常,but,没有AC。 萌新日常自闭。
#include<stdio.h>
#include <math.h>
#include<string.h>
int fun(char *p[11],char c2[][11]);
int n,i,j,k,flag=1,count=0;
int main()
{
char c[100],ch,ch2;
int a=0,b=0,p;
scanf("%d",&n);getchar();
for(i=0;i<n;i++) //n个算式
{
flag=0;count=a=b=0;
gets(c); //获取算式数据
switch(c[0]) //判断运算符,非'a''b''c则不改变
{
case 'a':ch='+';flag=1;break;
case 'b':ch='-';flag=1;break;
case 'c':ch='*';flag=1;break;
}
int flag2=1; //算出ab的关键(ab为运算数)
for(p=0+2*flag;c[p]!='\0';p++) //p从2*flag开始,可以避免'a'等进入运算
{
count++;
if(c[p]==' ') {c[p]=ch;flag2=0;} //将俩个运算数之间的‘ ’改为运算符
if(flag2) //flag2==1是计算算a
a=a*10+c[p]-'0';
else if(c[p]!=ch) //flag2==0且不是运算符时计算b
b=b*10+c[p]-'0';
}
switch(ch) //得到运算结果
{
case '+':j=a+b;break;
case '-':j=a-b;break;
case '*':j=a*b;break;
}
for(k=j;k!=0;k=k/10) //
count++;
if(j<0) count++;
printf("%s=%d\n%d\n",&c[2*flag],j,count+1); //count+1是因为没算'='
}
return 0;
}