为什么两个if不行,改为一个if,一个else if可以
查看原帖
为什么两个if不行,改为一个if,一个else if可以
407889
xmh7213楼主2021/10/19 10:16

#这样一个if,一个else if是可以的,AC代码

if((a1==0&&aa[j].cx==0)||(a1==1&&aa[j].cx==1)){//面向圈内,向左,-- 面向圈外,向右,
			j=(j-s1+n)%n;
		}
		else if((a1==1&&aa[j].cx==0)||(a1==0&&aa[j].cx==1)){//面向圈外,向左,++ 面向圈内,向右,
			j=(j+s1)%n;
		}

#但是改为两个if就不行了。。。为什么啊???? 求助求助

if((a1==0&&aa[j].cx==0)||(a1==1&&aa[j].cx==1)){//面向圈内,向左,-- 面向圈外,向右,
			j=(j-s1+n)%n;
		}
		 if((a1==1&&aa[j].cx==0)||(a1==0&&aa[j].cx==1)){//面向圈外,向左,++ 面向圈内,向右,
			j=(j+s1)%n;
		}
       

###以下是AC代码

#include<iostream>
using namespace std;
struct A{
	int cx;//朝向  0 表示朝向圈内,1 表示朝向圈外。
	char s[15];//职业 
};
int main()
{
	int n,m;//表示玩具小人的个数和指令的条数。
	cin>>n>>m;
	A aa[n];//A aa[2000];
	int a1,s1;
	int j=0;//从第一个人开始 
	for(int i=0;i<n;i++){
		cin>>aa[i].cx>>aa[i].s;//读入 逆时针 
			//面朝圈内的玩具小人, 它的左边是顺时针方向, 右边是逆时针方向; 
			//而面向圈外的玩具小人, 它的左边是逆时针方向, 右边是顺时针方向。
	}
	
	for(int i=1;i<=m;i++)
	{
		cin>>a1>>s1;//a1 0 向左s1人。
		if((a1==0&&aa[j].cx==0)||(a1==1&&aa[j].cx==1)){//面向圈内,向左,-- 面向圈外,向右,
			j=(j-s1+n)%n;
		}
		else if((a1==1&&aa[j].cx==0)||(a1==0&&aa[j].cx==1)){//面向圈外,向左,++ 面向圈内,向右,
			j=(j+s1)%n;
		}
	}
	cout<<aa[j].s;
	//现在问题,有测试点不对 可能逻辑上有问题 
	return 0;
}

2021/10/19 10:16
加载中...