顺便问一下,return 1是直接跳出所有循环还是只跳出当前的循环?										
					
	
	
	
			
I have not failed completely



 程序代码:
程序代码:#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>
int main(void)
{
    char A[100] = {0};
    char B[100] = {0};//用于存放A中去掉符号之后的所有小写字母和数字
    int j = 0;//用于给B赋值
    int i;
    int PQ = 0;
    bool OPQ = true;
    printf("请输入一段文字:\n");
    fgets(A,sizeof(A),stdin);
    for(i=0; i<(strlen(A)); i++)
    {
        if( isalnum(A[i]) != 0)
        {
            B[j] = tolower(A[i]);//用B来存储A中的小写字符和数字
            j++;
        }
    }
    while(PQ < ( strlen(B) ))//判定B是否满足回文的条件
    {
        if( B[PQ] != B[ (strlen(B) - 1 ) - PQ])
        {
            OPQ = false;
            break;//跳出while循环
        }
        PQ++;
    }
    if(OPQ == true)
        printf("\n这是一个回文\n");
    else
        printf("\n这不是一个回文\n");
    return 0;
}

 程序代码:
程序代码:#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>
int main(void)
{
    char A[100]= {0};
    int i,PQ=0;
    bool OPQ=true;
    printf("请输入一段文字:\n");
    fgets(A,sizeof(A),stdin);
    for(i=0; i<(strlen(A)); i++)
    {
        if(isalnum(A[i])==0)//这里将所有非字母和数字的的字符置为空格了 ,比如i'm变成了i m
            A[i]=' ';
        else
            A[i]=tolower(A[i]);//把所有的字母都改成了小写
    }
    while(PQ<(strlen(A)))
    {
        if(A[PQ]==' ')//对所有的非空格字符进行判定
        {
            PQ++;
            continue;
        }
        if(A[PQ]!=A[i-PQ])
        /*错误!! 将第PQ个字符(该字符非空格),与第i-PQ个字符比较,
        但实际上因为之前的for循环已结束,所以此时的i的值为A的长度,即strlen(A)。
        若字符串长度为5的话,就是判定A[0]==A[5],但是A[5]是没有意义的。
        再者,之前修改成空格的字符也算在内的。所以这里的A[PQ]可能会与空格字符想比较。
        所以此方法无法判定字符串是否回文。
        */{
            printf("\n这不是一个回文\n");
            OPQ=false;
            return 1;//这里直接结束了整个main函数。相当于程序退出。
        }
        PQ++;
    }
    if(OPQ==true)
        printf("\n这是一个回文\n");
    return 0;

