首页上一页 1 下一页尾页 1 条记录 1/1页
求高手指点!
发表在C语言图书答疑
2012-11-08
是否精华
是
否
版块置顶:
是
否
C语言编写:输入一篇文章,每两个单词之间用空格隔开,统计单词中回文的个数???我自己编写了一个,但是运行结果不正确,如下:#include <stdio.h>
int palind(char str[],int k,int i);
main()
{
char ch,a[1000];
int i=0,j=0,k,t,l,m=0,n;
char *p;
while((ch=getchar())!='\n')
{
a[i]=ch;
i++;
if(a[i]==' ')
{
t=j;
j=i;
if(t==0)
{
for(l=0,k=t;k<j;k++)
{
(*p)=a[k];
l++;
p++;
}
n=palind(p,l/2-1,l-1);
if(n==1)
m++;
p=0;
}
else
{
for(l=0,k=t+1;k<j;k++)
{
(*p)=a[k];
l++;
p++;
}
n=palind(p,l/2-1,l-1);
if(n==1)
m++;
p=0;
}
}
}
printf("there is %d strings\n",m);
}
int palind(char str[],int k,int i)
{
if(str[k]==str[i-k]&&k==0)
return 1;
else if(str[k]==str[i-k])
palind(str,k-1,i);
else
return 0;
}
求高手指点!!!!!!!!!!!!!!!!!!
int palind(char str[],int k,int i);
main()
{
char ch,a[1000];
int i=0,j=0,k,t,l,m=0,n;
char *p;
while((ch=getchar())!='\n')
{
a[i]=ch;
i++;
if(a[i]==' ')
{
t=j;
j=i;
if(t==0)
{
for(l=0,k=t;k<j;k++)
{
(*p)=a[k];
l++;
p++;
}
n=palind(p,l/2-1,l-1);
if(n==1)
m++;
p=0;
}
else
{
for(l=0,k=t+1;k<j;k++)
{
(*p)=a[k];
l++;
p++;
}
n=palind(p,l/2-1,l-1);
if(n==1)
m++;
p=0;
}
}
}
printf("there is %d strings\n",m);
}
int palind(char str[],int k,int i)
{
if(str[k]==str[i-k]&&k==0)
return 1;
else if(str[k]==str[i-k])
palind(str,k-1,i);
else
return 0;
}
求高手指点!!!!!!!!!!!!!!!!!!