CCF 201903-2 二十四点 (100)(数组)

CCF 201903-2 二十四点 (100)(数组)_第1张图片CCF 201903-2 二十四点 (100)(数组)_第2张图片CCF 201903-2 二十四点 (100)(数组)_第3张图片

 

发现纯为乘除时,计算错误,此时提交为50分

CCF 201903-2 二十四点 (100)(数组)_第4张图片

#include
#include
using namespace std;




int main()
{
	int n;
	cin>>n;

	while(n--)
	{
		int num[4],i,j;
		char op[3];
		double gg=0;
	
	char s[8];
    cin>>s;
        

    for(i = 0; i < 4; i++)
        num[i] = s[i * 2] - '0';
    for(i = 0; i < 3; i++)
        op[i] = s[i * 2 + 1];  
    

	   for(i = 0; i<3;i++)
	   {
	   	if(op[i]=='x')
	   	{
	   		  num[i+1]*=num[i];
	  	   	 num[i]=0;
	  	 	 if(op[i-1]=='x'|| op[i-1]=='/')
						num[i]=1;
				else if(i>0)
				  op[i]=op[i-1];
				  else if(i==0)
				      op[i]='+';
	  	 	   
		}
			 else if(op[i]=='/')
	   	     	{
					num[i+1]=num[i]/num[i+1];	   
					 num[i]=0;
				   if(op[i-1]=='x'|| op[i-1]=='/')
						num[i]=1;
					else if(i>0)
				 		 op[i]=op[i-1];	
				 	else if(i==0)
				      op[i]='+';
				}
				
				
	   }
	   
	   
	   	/* 上段 乘除计算过去错误的50分错误写法,乘除先后乱了 ,应该移位前后加减运算符 
	
	    for(i = 0; i<3;i++)
	   {
	   	if(op[i]=='x')
	   	{
	   		  num[i]*=num[i+1];
	  	 	 num[i+1]=0;
	   		 op[i]='+';

		}
			 else if(op[i]=='/')
	   	     	{
					num[i]/=num[i+1];	   
					 num[i+1]=0;
				   	 op[i]='+';	     	
				}
	   }
	  
	  */ 
	   
	   
	   
	    for(i = 0; i<3;i++)
	   {
	   	if(op[i]=='+')	
	   	{
		   
	   	  gg= num[i]+num[i+1];
	   	  num[i+1]=gg;
		}	 else if(op[i]=='-')
			{
	   	     		gg=num[i]-num[i+1];  	     
					num[i+1]=gg;
			}
	   }


		if(gg==24)
		 cout<<"Yes"<

抱歉了老师,我是小菜鸡,只会用数组

 

CCF 201903-2 二十四点 (100)(数组)_第5张图片

你可能感兴趣的:(CCF)