回文的意思:首尾相等(回文数_百度百科)
一、简单写法
1.定义字符数组:char s[100];
2.gets,puts直接输入输出一串字符
3.外面的while(1),方便反复调试
注意:判断首尾相等
//简单写法
#include <stdio.h>
int main()
{
char s[100];
while(1)
{
printf("Enter a string : ");
gets(s);
printf("\n\n");
puts(s);
//判断首尾是否相等
int i,n=0,j=1;
while(s[n])/*将指针p置位到字符串末尾,并统计字符数*/
{
n++;
}
for(i=0;i<n/2;i++)/*循环比较字符*/
if(s[i]==s[n-1-i]);/*相同,什么都不作*/
else /*不同,直接跳出循环*/
j=0;
if(j==0)
printf("NO\n");
else
printf("YES\n");
}
return 0;
}
二、复杂一点(最好学过一点指针和传参)
(指针代码+转换公式_jhdragon1314的博客-CSDN博客)
可以观察上面判断首尾相等的函数用了两次,可以定义函数,并调用,使主函数中的代码少一点
一、调用函数
1.观察发现:代码将数组s直接传给了函数fun,并将数组s给了指针str,str[n]==s[n]
二、调用函数尽量写在主函数之前,可以直接调用
如果写在最后,需要在主函数前声明,再调用
三、完整代码
//指针调用
#include <stdio.h>
int fun(char *str)
{
int i,n=0;
while(str[n])/*将指针p置位到字符串末尾,并统计字符数*/
{
n++;
}
for(i=0;i<n/2;i++)/*循环比较字符*/
if(str[i]==str[n-1-i]);/*相同,什么都不作*/
else /*不同,直接跳出循环*/
return 0;
return 1;
}
int main()
{
char s[100];
while(1)
{
printf("Enter a string : ");
gets(s);
printf("\n\n");
puts(s);
if(fun(s))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}