求高手指点!
发表在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;
}

求高手指点!!!!!!!!!!!!!!!!!!
分享到:
精彩评论 1
过冬的松鼠
学分:0 LV1
TA的每日心情
Q
2021-01-03 22:18:14
2012-11-14
沙发
读者朋友您好。您的程序存在诸多问题,例如 变量i自增的位置,指针的改变,都不正确。虽然可以提供这个问题的答案,但是还是强烈建议您亲自调试程序,并且思考一下本题的解决办法。
在此提示一下本程序的两个明显错误:
1.程序不会进入判断字符为空格的if语句块
2.程序中操作指针p的方法有误,将它传递金palind函数会引起越界错误。

注释和合理的缩进是编程当中必不可少的,它们大大增强了代码的可读性。我们建议您书写代码时要注意代码格式的规范,并且书写自己的思路。这样不仅他人会容易阅读你的代码,并且它还会帮助你理清程序的思路,在若干时间后阅读此段代码也不会感到困难。

希望我的建议能够帮助到您。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照