试写一个算法判别读入的一个以‘’为结束符的字符序列是否是回文。c语言
的实现如下:
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main()
{
char str[MAX_LEN];
int len, i;
int flag = 1;
printf("请输入一个以 @ 结尾的字符串:\n");
fgets(str, MAX_LEN, stdin);
len = strlen(str) - 1; // 去掉结尾的 \n
for (i = 0; i < len / 2; i++) {
if (str[i] != str[len - 1 - i]) {
flag = 0;
break;
}
}
if (flag) {
printf("是回文字符串。\n");
} else {
printf("不是回文字符串。\n");
}
return 0;
}
该算法首先读入一个以 '@' 结尾的字符串,然后判断该字符串是否是回文字符串。回文字符串指的是正读和倒读都一样的字符串,例如 "level"、"noon" 等。
算法的实现思路是:从字符串的两端开始向中间遍历,依次比较对应位置上的字符是否相等,如果有不相等的字符,则说明该字符串不是回文字符串。如果遍历结束时所有位置上的字符都相等,则说明该字符串是回文字符串。
需要注意的是,fgets() 函数读入字符串时会一并读入结尾的换行符,因此需要将字符串长度减 1 才能正确计算字符串的长度
原文地址: http://www.cveoy.top/t/topic/eZJd 著作权归作者所有。请勿转载和采集!