C语言学习之路——输入字符串,判断输入的字符串是否回文
初步方法
#include<stdio.h>
#include<string.h>
//传入字符串,输出字符长度
int strLength(char s[]){
int i=0;
while(s[i]) i++;
return i;
}
//比较字符,判断是否回文
int isHW(char s[]){
int i=0,j=strLength(s)-1;
//第一个字符和最后一个字符比较是否相同,相同则i加1,j减1再次比较第二个字符和倒数第二个字符是否相同
while(i<j){
if(s[i]!=s[j]) return 0; //当字符不同时返回0
i++;
j--;
}
return 1;
}
int main(){
char s[1024];
gets(s);
if(isHW(s))
printf("yes\n");
else
printf("no\n");
return 0;
}
改进方法
判断的方法有很多,改进一下代码改成递归的方式
#include<stdio.h>
#include<string.h>
//传入字符串,输出字符长度
int strLength(char s[]){
int i=0;
while(s[i]) i++;
return i;
}
/*
int isHW(char s[]){
int i=0,j=strLength(s)-1;
while(i<j){
if(s[i]!=s[j]) return 0;
i++;
j--;
}
return 1;
}
*/
//判斷字符数组s从下标start到end这段字符是否回文
int isHW(char s[],int start,int end){
if(start >= end)
return 1;
else{
if(s[start] != s[end])
return 0;
return isHW(s,start,end-1);
}
}
int main(){
char s[1024];
gets(s);
if(isHW(s,0,strLength(s)-1))
printf("yes\n");
else
printf("no\n");
return 0;
}
纯属学习记录,有错或有更好方法欢迎留言相互学习