是否回文的判断(c语言,初级接触指针)

来源:互联网 发布:每周开户数据 编辑:程序博客网 时间:2024/05/20 22:37

题目来自《C语言程序设计—现代方法》12章第5题:
输入一段信息,忽略所有不是字母的字符,然后判断这条消息是否回文。
a.用整型变量跟踪数组内的位置

#include<stdio.h>#include<string.h>#include<ctype.h>#define N 50main(){  char a[N],b[]={'0'};  int len_a=0,len_b=0,flag=0;  int i=0,j=0;  for(i=0;i<N;i++)  {    scanf("%c",&a[i]);    len_a++;    if(a[i]=='\n')      break;  }  for(i=0,j=0;i<len_a;i++)  {    if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))    {       b[j]=tolower(a[i]);      j++;      len_b++;    }  }  for(j=0;j<len_b;j++)    printf("%c",b[j]);  printf("\n");  for(i=0,j=len_b-1;i<j;)    {      if(b[i]!=b[j])      {        printf("not");        flag++;        break;      }      i++;      j--;    }  if(flag==0)    printf("yes");  return 0;}

b.用指针代替整数跟踪数组的位置

#include<stdio.h>#include<ctype.h>#define N 50main(){  char a[N],b[]={'0'};  int len_a=0,len_b=0,flag=0;  char *p,*q,*r;  p=a;  q=b;  for(p=a;p<a+N;p++)  {    scanf("%c",p);    len_a++;    if(*p=='\n')      break;     }  for(p=a;p<a+len_a;p++)  {    if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z'))    {       *q=tolower(*p);      q++;      len_b++;    }  }  for(q=b;q<b+len_b;q++)    printf("%c",*q);  printf("\n");  r=b+len_b-1;  q=b;//重新指向b[0]   for(;q<r;)    {      if(*q!=*r)      {        printf("not\n");        flag++;        break;      }      q++;      r--;    }  if(flag==0)    printf("yes\n");  return 0;}
0 0
原创粉丝点击