P1957 HELP(样例能过,全WA)
查看原帖
P1957 HELP(样例能过,全WA)
643299
Whataniceday楼主2022/7/22 23:59

输入:

1

a 99 999

输出:

99+999=1098

11

代码:

#include<bits/stdc++.h>
int getdigit(int a)//得到数字位数用的函数 
{
	int gd;
	for(gd=0;a!=0;gd++)
	{
		a-=a%10;
		a/=10;
	}
	return gd;
}
using namespace std;
int main()
{
	int TiShu,num1,num2,ans,tens;
	int i,j;
	char c,v;
	cin>>TiShu;//读入有几道题 
	getchar();//防止下一个读取字符出问题 
	for(i=1;i<=TiShu;i++)
	{
		c=getchar();//读取一个字符 
		cin>>num1>>num2;//输入两个数字 
		getchar();//防止下一个读取字符出问题 
		if((c=='a'||c=='b')||c=='c')//判断是不是abc 
		{
			cout<<num1;
			switch(c)
			{
				case 'a':
					cout<<"+";
					ans=num1+num2;
					break;
				case 'b':
					cout<<"-";
					ans=num1-num2;
					break;
				case 'c':
					cout<<"*";
					ans=num1*num2;
					break;
			}
			cout<<num2<<"="<<ans<<endl;
			if(ans<0)
			cout<<getdigit(num1)+getdigit(num2)+getdigit(ans)+3<<endl;//如果是答案是负数,位数+1 
			else
			cout<<getdigit(num1)+getdigit(num2)+getdigit(ans)+2<<endl;
			v=c;//如果出现不是abc的情况,v为代替字符 
		}
		else
		{
			for(j=1,tens=1;j<=getdigit(num1);j++)
			tens*=10;
			num1+=int(c-'0')*tens;//将第一个数字还原 
			cout<<num1;
			switch(v)
			{
				case 'a':
					cout<<"+";
					ans=num1+num2;
					break;
				case 'b':
					cout<<"-";
					ans=num1-num2;
					break;
				case 'c':
					cout<<"*";
					ans=num1*num2;
					break;
			}
			cout<<num2<<"="<<ans<<endl;
			if(ans<0)
			cout<<getdigit(num1)+getdigit(num2)+getdigit(ans)+3<<endl;//如果是答案是负数,位数+1 
			else
			cout<<getdigit(num1)+getdigit(num2)+getdigit(ans)+2<<endl;
		} 
	} 
	return 0;
}
2022/7/22 23:59
加载中...