输出的答案是对的,但为什么w了,求大佬解答
  • 板块题目总版
  • 楼主魔鬼独白
  • 当前回复1
  • 已保存回复1
  • 发布时间2018/12/4 18:49
  • 上次更新2024/7/24 12:43:18
查看原帖
输出的答案是对的,但为什么w了,求大佬解答
125478
魔鬼独白楼主2018/12/4 18:49
#include<stdio.h>
#include<ctype.h>
int main()
{
    int n;
    int s[2]={0};
    int col[3]={0};
    int ret[3]={0};
    int xx[3]={0};
    int sx=0;
    char str[100000];
    char di[4][100000]={'\0'};
    int i,j;
    int flag[3];
    int x;
    int x1=0,x2=0;
    int m[2][3]={0};
    int a[4][100]={0};
    int b[4][100]={0};
    gets(str);
    for(i=0;str[i]!='=';i++)
    {
        if(isalpha(str[i]))
        {
            if(i==0||str[i-1]<'0'||str[i-1]>'9'||str[i-1]=='-')
            a[0][xx[0]]=1,a[2][m[0][0]]=x1+1,x1++,xx[0]++,m[0][0]++;
            else
            {
                j=i-1;
                while(j>=0&&str[j]<='9'&&str[j]>='0')
                j--;
                j++;
                while(!isalpha(str[j]))
                a[0][xx[0]]*=10,a[0][xx[0]]=a[0][xx[0]]+str[j]-'0',j++;
                a[2][m[0][0]]=x1+1;
                m[0][0]++;
                x1++; 
                xx[0]++;
            }
        }
       else if(str[i]>='0'&&str[i]<='9')
       {
        j=i;
        while(str[i]>='0'&&str[i]<='9')
        i++;
        if(str[i]=='+'||str[i]=='-'||str[i]=='=')
        {
            while(str[j]>='0'&&str[j]<='9')
            {
                b[0][xx[1]]*=10;
                b[0][xx[1]]=b[0][xx[1]]+str[j]-'0';
                    j++;
               }
               b[2][m[0][1]]=x1+1;
               m[0][1]++;
               x1++;
               xx[1]++;
           }
           i--;
       }
       else
       {
        di[0][xx[2]]=str[i];
        xx[2]++;
       }
    }
    flag[1]=x1-1;
    x1=0;
    flag[0]=i;
    xx[0]=xx[1]=xx[2]=0;
    i=i+1;
    for(;str[i]!='\0';i++)
    {
        if(isalpha(str[i]))
        {
        	
            if(str[i-1]<'0'||str[i-1]>'9')
            a[1][xx[0]]=1,a[3][m[1][0]]=x1+1,m[1][0]++,x1++,xx[0]++;
            else
            {
                j=i-1;
                while(j>=0&&str[j]<='9'&&str[j]>='0')
                j--;
                j++;
                while(!isalpha(str[j]))
                a[1][xx[0]]*=10,a[1][xx[0]]=a[1][xx[0]]+str[j]-'0',j++;
                a[3][m[1][0]]=x1+1;
                m[1][0]++;
                x1++; 
                xx[0]++;
            }
        }
       else if(str[i]>='0'&&str[i]<='9')
       {
        j=i;
        while(str[i]>='0'&&str[i]<='9')
        i++;
        if(str[i]=='+'||str[i]=='-'||str[i]=='\0')
        {
            while(str[j]>='0'&&str[j]<='9')
            {
                b[1][xx[1]]*=10;
                b[1][xx[1]]=b[1][xx[1]]+str[j]-'0';
                    j++;
               }
               b[3][m[1][1]]=x1+1;
               m[1][1]++;
			   x1++;
               xx[1]++;
               
           }
           i--;
       }
       else
       {
        di[1][xx[2]]=str[i];
        xx[2]++;
       }
    }////////
    flag[2]=x1-1;
    for(i=0;i<=flag[1];i++)
    {
        if(a[2][ret[0]]==i+1)
        {
            ret[0]++;
            if(i==0)
            s[0]+=a[0][col[0]];
            else if(di[0][sx]=='+')
            s[0]+=a[0][col[0]],sx++;
            else
            s[0]-=a[0][col[0]],sx++;

            col[0]++;
        }
        else if(b[2][ret[1]]==i+1)
        {
            ret[1]++;
            if(i==0)
            s[1]-=b[0][col[1]];
            else if(di[0][sx]=='+')
            s[1]-=b[0][col[1]],sx++;
            else
            s[1]+=b[0][col[1]],sx++;
            col[1]++; 
        }
      else
      {
      	
	  }
    }
    sx=0;
    for(i=0;i<=2;i++)
    ret[i]=col[i]=0;

    for(i=0;i<=flag[2];i++)
    {
        if(a[3][ret[0]]==i+1)
        {
            ret[0]++;
            if(i==0)
            s[0]-=a[1][col[0]];
            else if(di[1][sx]=='+')
            s[0]-=a[1][col[0]],sx++;
            else
            s[0]+=a[1][col[0]],sx++;

            col[0]++;
        }
        else if(b[3][ret[1]]==i+1)
        {
            ret[1]++;
            if(i==0)
            s[1]+=b[1][col[1]];
            else if(di[1][sx]=='+')
            s[1]+=b[1][col[1]],sx++;
            else
            s[1]-=b[1][col[1]],sx++;
            col[1]++; 
        }
      else
      {}
    }
    for(i=0;str[i]!='\0';i++)
    if(isalpha(str[i]))
    {
        break;
    }
    printf("%c=%.3f",str[i],(float)s[1]/s[0]);
    return 0;
 }
2018/12/4 18:49
加载中...