[英]This funtion doesn't return the correct bool
我制作了这个 function 来检查我的字符串是否是回文。 当它是时,它会打印它,但是当字符串不是回文时,它不会打印任何东西
bool is_palindrome(char cad[]){
bool is = false;
int size, i;
size = 0;
i = 0;
while(cad[i] != '\0'){
i++;
size++;
}
i = 0;
while(cad[i] != '\0'){
if(cad[i] == cad[size - 1]){
i++;
size--;
is = true;
}else{
is = false;
}
}
if(is == true){
printf("IS PALINDROME\n");
}else if(is == false){
printf("IT ISN'T PALINDROME");
}
return is;
}
我的主要是:
int main(){
bool is
is = is_palindrome("ABCDCBA"); //It funtions well
is = is_palindrome("Hello"); //It doesn't funtion
return 0;
}
你有一个无限循环。 在第二个 while() 中,如果单词不是回文,它进入else
条件并且你不增加i
。 所以循环永远不会退出!
一旦你发现一个不匹配的字母,你就可以简单break
从循环中跳出来,因为你知道这个词不是回文。 像这样:
bool is_palindrome(char cad[]){
bool is = false;
int size, i;
size = 0;
i = 0;
while(cad[i] != '\0'){
i++;
size++;
}
i = 0;
while(cad[i] != '\0'){
if(cad[i] == cad[size - 1]){
i++;
size--;
is = true;
}else{
is = false;
break;
}
}
if(is == true){
printf("IS PALINDROME\n");
}else if(is == false){
printf("IT ISN'T PALINDROME");
}
return is;
}
您甚至可以进一步简化它,例如:
is = true;
while(cad[i] != '\0') {
if(cad[i] != cad[size - 1]){
is = false;
break;
}
i++;
size--;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.