全WA,自己电脑上没问题,求助大佬
查看原帖
全WA,自己电脑上没问题,求助大佬
154414
hongya_xiaobai楼主2020/6/21 22:29
#include<stdio.h>
#include<string.h>

int lenth(int ans)       //计算运算结果的长度
{
    int i,la=0;
    if(ans==0)
    {
        return 1;
    }
    if(ans<0)
    {
        la++;
        ans=ans*(-1);
    }
    for(i=1;ans>0;i++)
    {
        ans/=10;
        la++;
    }
    return la;
}

int main()
{
    int n,i,j,sym=0,num1,num2,l,ans,l1,l2;
    char a[20005],ch;
    scanf("%d",&n);
    getchar();           //处理掉n后面的回车
    for(i=1;i<=n;i++)
    {
        j=0;
        while(scanf("%c",&ch)&&ch!='\n') 
        //输入一行数据
        {
            a[j++]=ch;
        }
        a[j]='\0';     //最后一位补'\0'
        num1=0;
        num2=0;
        l1=0;l2=0;
        l=strlen(a);
        if(a[0]=='a')
        {
            sym = 1;
        }
        else if(a[0]=='b')
        {
            sym = 2;
        }
        else if(a[0]=='c')
        {
            sym = 3;
        }
        else
        {
            for(j=l;j>=0;j--)    
				//将没有字母开头的那行数据整体向后移两个单位,方便后面处理
            {
                a[j+2]=a[j];
            }
            a[l+3]='\0';
        }
        for(j=2;a[j]!=' ';j++)     
        //处理第一个数,求长度l1(从a[2]开始)
        {
            num1=num1*10+(a[j]-'0');
            l1++;
        }
        j++;
        for(;a[j]!='\0';j++)         
        //处理第二个数,求长度l2
        {
            num2=num2*10+(a[j]-'0');
            l2++;
        }
        if(sym==1)
        {
            ans=num1+num2;
            printf("%d+%d=%d\n",num1,num2,ans);
        }
        if(sym==2)
        {
            ans=num1-num2;
            printf("%d-%d=%d\n",num1,num2,ans);
        }
        if(sym==3)
        {
            ans=num1*num2;
            printf("%d*%d=%d\n",num1,num2,ans);
        }
        printf("%d",lenth(ans)+l1+l2+2);
        if(i<n)   //最后一组数据最后不换行
        {
            printf("\n");
        }
    }
    return 0;
}

所以究竟犯了什么问题啊!!

2020/6/21 22:29
加载中...