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

#include<stdio.h>
#include<string.h>
void p(char,int);
void p(char b[],int n)
{
int i,c;
c=n/2;
for(i=0;i<c;i++)
{
while(b[i]!=b[n-i-1])
break;
}
if(i==c)
return('yes');
else
return('no');
}
void main()
{
char a[100];
int n;
gets(a);
n=strlen(a);
printf("%s",p);
}
这个算法有什么错误

算法没有错误,主要是语法上的一些问题:

#include<stdio.h>
#include<string.h>
void p(char,int);
const char* p(char b[],int n)   //返回的类型要定义
{
 int i,c;
 c=n/2;
    for(i=0;i<c;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));  //调用的参数漏掉了
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-21
错的多了,首先指出一处,字符数组,初始化时必须指明其大小所以你的VOID P(char[],int n)中参数是错误的书写形式。
应该把参数char[]改成char[100]或者其他。还有return的时候因为yes不是字符而是字符串所以只能return ("yes")要用双引号,NO也是一样。还有貌似P失个不带任何返回数的函数把,最后不能用Printf去输出。还有你自定义的两个函数都是P怎么让程序区分,感觉你这个程序错误一大堆,算法就不说了追问

谢谢,你说的都很有道理。我会继续努力的

追答

没关系

第2个回答  推荐于2018-03-22
#include<stdio.h>
#include<string.h>
void p(char b[],int n)
{
int i,c;
c=n/2;
    for(i=0;i<c;i++)
{
if(b[i]!=b[n-i-1])
break;
}
if(i==c)
puts("yes");/*void型函数不能用返回值*/
else
puts("no");
}
void main()
{
char a[100];
int n;
gets(a);
n=strlen(a);
p(a,n);/*函数调用*/
}

追问

嗯 谢谢,不过我采纳了第一个回答的人 不好意思、、

本回答被网友采纳
相似回答