不太清楚你想要实现什么,因为程序背后的逻辑完全搞砸了。
如果你编写这样的代码:
if(day != (days[0]) || day != days[1] || day != days[2] || day != days[3] || day != days[4] || day != days[5] || day != days[6])
{
cout<<"0";
}
else
{
cout<<"1";
}
它将始终执行 IF 的 True 分支,在这种情况下cout<<"0";
因为False || True = True你的七个条件中的六个将永远为真。
您需要阅读并记住德摩根的未来计划的法律
因此,有不止一种解决方案可以解决此问题。
他们可能是:
1.多个If条件,一个内另一个:
if(day != (days[0]){
if(day != (days[1]){
if(day != (days[0]){
//and so on ...
}
else{
cout<<"1";
}
}
else{
cout<<"1";
}
}
else{
cout<<"1";
}
但这不干净,很难阅读,我不喜欢它......
2.您可以创建一个递归函数来检查day值匹配。
我们可以将函数声明为 a void,因为我们不需要任何返回值。
void dayCheckMatching(string days[], string day, int counter)
{
if(day != (days[counter]){
dayCheckMatching(days, day, counter)
}
else{
cout<<"Day "<<day<<" matched at index: "<<counter;
return;
}
}
而不是调用它而不是if condition你的 main 里面的 long :
int main()
{
string days[7] = {"sr","czw","pt","sob","nd","pon","wt"};
string day;
cin>>day;
dayCheckMatching(days, day, 0)
return 0;
}
评论:
正如您在 void 函数示例中所见,我们使用该return;语句以便在day匹配days[index]值时退出函数。任何时候都可以使用return退出函数,即使函数是void.