永发信息网

输入一串字符(长度小于100),判断该串字符是否是回文串若该串字符 是输出“yes",否则输出”no“。

答案:3  悬赏:20  手机版
解决时间 2021-04-03 00:21
  • 提问者网友:做自己de王妃
  • 2021-04-02 15:04
输入一串字符(长度小于100),判断该串字符是否是回文串若该串字符 是输出“yes",否则输出”no“。
最佳答案
  • 五星知识达人网友:毛毛
  • 2021-04-02 15:20
#include
#include
void p(char b[],int n)
{
int i,c;
c=n/2;
    for(i=0;i {
if(b[i]!=b[n-i-1])
break;
}
if(i==c)
puts("yes");
else
puts("no");
}
void main()
{
char a[100];
int n;
gets(a);
n=strlen(a);
p(a,n);
}追问嗯 谢谢,不过我采纳了第一个回答的人 不好意思、、
全部回答
  • 1楼网友:北方的南先生
  • 2021-04-02 16:52
错的多了,首先指出一处,字符数组,初始化时必须指明其大小所以你的VOID P(char[],int n)中参数是错误的书写形式。
应该把参数char[]改成char[100]或者其他。还有return的时候因为yes不是字符而是字符串所以只能return ("yes")要用双引号,NO也是一样。还有貌似P失个不带任何返回数的函数把,最后不能用Printf去输出。还有你自定义的两个函数都是P怎么让程序区分,感觉你这个程序错误一大堆,算法就不说了追问谢谢,你说的都很有道理。我会继续努力的追答没关系
  • 2楼网友:酒醒三更
  • 2021-04-02 16:23

算法没有错误,主要是语法上的一些问题:#include
#include
void p(char,int);
const char* p(char b[],int n)   //返回的类型要定义
{
 int i,c;
 c=n/2;
    for(i=0;i {
  if(b[i]!=b[n-i-1]) //这里while的话,break就是break while了,而不会break if
   break;
 }
 if(i==c)
     return("yes"); //字符串使用双引号
 else
  return("no");
}
void main()
{
 char a[100];
 int n;
 gets(a);
 n=strlen(a);
 printf("%s",p(a, n));  //调用的参数漏掉了
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯