全wa,第一个数据输出是对的,却判错,附第一个数据
查看原帖
全wa,第一个数据输出是对的,却判错,附第一个数据
397381
呙凯01楼主2020/10/24 23:05
int main()
{
	char a[51][20]={'\0'};
	int n,k,s=0,sum1[51]={0},len[51]={0},x;
	int jishu=0;
	scanf("%d\n",&n);
	for(int i=1;i<=n;i++)
	{
	gets(a[i]);	//输入 
	} 
	for(int i=1;i<=n;i++)
	{
		int j=0;//j指向当前字符
	if(a[i][j]=='a'||(a[i][j]!='b'&&a[i][j]!='c'&&k==1))//k作记号,标明上次结束的运算方式 
	{
		if(k!=1) a[i][j]=' ',j+=2;k=1;//消除前面的指示字母'a'。。。 
		while(a[i][j]!='\0')
		{
			while(a[i][j]!=' '&&a[i][j]!='\0')
			{
				x=a[i][j]-'0';
				s=s*10+x;j++;len[i]++;
			}//累加数字长度,并将字符转换为整型 
			if(a[i][j]==' ')a[i][j]='+',j++,len[i]++;//数字间的空格变运算符 
			sum1[i]+=s;s=0;//开始累加	
		}
		
	}
	if(a[i][j]=='b'||(a[i][j]!='a'&&a[i][j]!='c'&&k==2))
	{
		if(k!=2) a[i][j]=' ',j+=2;k=2;
	    jishu=0;//标明第一次 
		while(a[i][j]!='\0')
		{
			while(a[i][j]!=' '&&a[i][j]!='\0')
			{
				x=a[i][j]-'0';
				s=s*10+x;j++;len[i]++;
			}
			jishu++;
			if(jishu==1)
			{
			sum1[i]+=s;	s=0;			
			}

			else{
				sum1[i]-=s;s=0;
			}
			if(a[i][j]==' ') a[i][j]='-',len[i]++,j++;
		}
	}
	if(a[i][j]=='c'||(a[i][j]!='a'&&a[i][j]!='b'&&k==3))
	{
		if(k!=3) a[i][j]=' ',j+=2;k=3;
		while(a[i][j]!='\0')
		{
			jishu++;
			while(a[i][j]!=' '&&a[i][j]!='\0')
			{
				x=a[i][j]-'0';
				s=s*10+x;j++;len[i]++;
			}
			if(a[i][j]==' ') a[i][j]='*',j++,len[i]++;
			if(jishu==1) sum1[i]+=s;
			else sum1[i]*=s;s=0;
		}	
	}
   }
	for(int i=1;i<=n;i++)
	{
	int j=0,len1=0;
	while(a[i][j]==' ')
	{
		j++;
	}//消除空格 
	while(a[i][j]!='\0')
	{
		printf("%c",a[i][j]);
		j++;
	}//输出字符 
	printf("=%d\n",sum1[i]);//输出和 
	if(sum1[i]<0) len1++;//为负数,加个'-'的长度 
	while(sum1[i]!=0)
	{
		len1++,sum1[i]/=10;
	}
	printf("%d",len[i]+len1+1);
	if(i<n) printf("\n");
    }
    return 0;
}```
输入
1
a 99 999
输出
99+999=1098
11
2020/10/24 23:05
加载中...