C语言每日一练
2021年10月26日
题目描述
判断回文字符串
分析
“回文串”
是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。——百度百科
判断一个字符串是否回文,最简单的方法
就是判断字符串第一个元素和最后一个元素是否相等,第二个元素与倒数第二个元素是否相等……一直判断到字符串最中间位置,如果都相等,则是回文字符串。
另外也可以先将字符串反转,然后用strcmp
比较两个字符串是否相等。
代码实现
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 30 //字符串最大长度
//函数声明
int Is_Palindromic_String(char *str);
int main()
{
char str[MAX_LENGTH];
printf("请输入一个字符串\n");
scanf("%s", str);
if(Is_Palindromic_String(str) == 1)
printf("这是一个回文字符串\n");
else
printf("这不是一个回文字符串\n");
return 0;
}
/**
* @brief 判断str是否为回文字符串
* @param str 字符串
* @return 1-是回文字符串 0-不是
*/
int Is_Palindromic_String(char *str)
{
if(str == NULL)
return 0;
int len = strlen(str);
int i = 0;
for(i = 0; i < len / 2; i++)
{
/* 如果对称的数字不相等,则不是回文数 */
if(str[i] != str[len - i -1])
return 0;
}
return 1;
}
运行结果
网上参考
原文链接:http://c.biancheng.net/cpp/html/2811.html
#include <stdio.h>
#include <string.h>
#include <string.h>
void main(){
char s[100]; // 存放输入的字符串
int i, j, n;
printf("输入字符串:");
gets(s);
n=strlen(s);
for(i=0,j=n-1;i<j;i++,j--)
if(s[i]!=s[j]) break;
if(i>=j)
printf("是回文串\n");
else
printf("不是回文串\n");
}