2015-10-06 38 views
-3
#include<stdio.h> 

int main() 
{ 
    int flag=0,length=0; 
    char name[30]; 
    char *p,*q; 
    printf("enter the name you want to enter\n"); 
    scanf("%[^\n]",name); 
    p=name; 
    q=name; 
    while(*p++) length++; 
    printf("%d\n",length); 
    while((*q++==*--p)) 
    { 
     printf("%c\t%c\n",*q,*p); 
     flag=1; 
    } 
    if(flag==0) 
     printf("palindrome\n"); 
    if(*--q!=*p) 
     flag=0; 
    if(flag==1) 
     printf("palindrome\n"); 
    else 
     printf("not a palindrome\n"); 
    return 0; 
} 

看到IA使用指针我不知道是什么问题 检查字符串是在while循环如何使用上述指针解决它 一些问题概念什么this指针回文程序我不能得到正确的结果

+0

我没有得到一个答案 – vishwa

+0

使用'strlen'来计算字符串的长度。 – ameyCU

+0

你的代码是有缺陷的,你,我相信你没有试图理解为什么它不工作! –

回答

1

只有当所有镜像字符匹配时,它才是回文。因此,在循环后的条件是,p是回到开头:

while((*q++==*--p) && p>=name) 
{ 
    printf("%c\t%c\n",*q,*p); 
} 
if (p==name) flag= 1; 
if(flag==0) 
    printf("not a palindrome\n"); 
else 
    printf("palindrome\n"); 
+0

你知道'printf'内循环没有执行。 – ameyCU

+0

感谢您的程序给了我很多想法 – vishwa

0

这是简单的开始字符串,请试试这个:

#include <usual.h> 

int main() 
{ 
    int flag = 0; 
    int length = 0; 
    int len2 = 0; 
    int i = 0; 
    char name[130]; 
    char p[130]; 
    char q[130]; 

    printf("please enter a name or sentence\n"); 
    scanf("%[^\n]", name); 

    length = strlen(name); 
    len2 = length; 
    strcpy(p, name); 
    memset(q, '.', length); // handy to debug comparaison 
    q[length] = '\0'; 

    for (i = 0; i < length; i++) 
    { 
    q[--len2] = p[i]; 
    } 

    printf("\n p==%s", p); 
    printf("\n q==%s", q); 
    getchar(); 

    if (!strcmp(p, q)) 
    flag = 1; 

    if (flag == 1) 
    printf("\npalindrome\n"); 
    else 
    printf("\nnot a palindrome\n"); 

    return 0; 
} 
再之后
相关问题