F2 判断回文 (10 分)
程序员文章站
2024-03-24 12:24:52
...
如果一串字符从左至右读和从右至左读相同,那么这串字符就是回文(Palindrome)。例如,ABCBA是回文,而ABCD则不是。本题要求编写一个判断字符串是否为回文的函数,并且通过函数参数获取字符串的中间字符(如果中间是两个字符,则获取靠左的那一个,例如字符串是ABCDEF,则中间字符是C)。题目保证输入的字符串长度在1至2000之间且不含空格、换行等分隔符。
函数接口定义: int isPalindrome(const char* str, char* pch); 其中 str 和 pch
都是用户传入的参数。 str 是字符串的首地址; pch
是传入的要存放字符串中间字符的变量的地址。如果字符串是回文,函数须返1,否则返回0。裁判测试程序样例: /* 测试程序仅为示例,实际的测试程序可能不同 */
#include <stdio.h>
#include <string.h>
#define MAXLENGTH 100 int isPalindrome(const char* str, char* pch);
int main(){
char str[MAXLENGTH],mid;
scanf("%s",str);
if(isPalindrome(str, &mid))
printf("是回文!中间字符是%c\n",mid);
else
printf("不是回文!中间字符是%c\n",mid);
return 0; }
/* 你编写的函数代码将被嵌在这里 */
输入样例:
ABCDACBC
输出样例:
不是回文!中间字符是D
总体来说,还是简单题。主要是回文的判断,也是最普通的比较而已。要注意只有一个字符的情况。
int isPalindrome(const char* str,char* pch)
{
//首先要判断是否为回文,如何判断呢?第一个和最后一个比嘛
int len = strlen(str);
// printf("len = %d\n",len);
if(len==1)
{
*pch = str[0];
return 1;
}
if(len%2==0)
*pch = str[len/2-1]; //中间是两个字符的情况
else
*pch = str[(len)/2]; //中间是一个字符,也就是长度为奇数。
int i;
for(i=0;i<=len/2;i++)
{
if(str[i]!=str[len-1-i]) return 0; //比较是否相等
}
return 1;
}
这个好像是C语言的基础题了。
推荐阅读
-
F2 判断回文 (10 分)
-
**挑战全网**判断10到N最快的回文数个数计算方法
-
Python-打印指定范围内的全部回文素数(高教社,《Python编程基础及应用》习题8-7) (10分) 回文素数是指一个数既是素数又是回文数,例如131既是素数又是回文数。
-
7-8 超速判断 (10 分) (C语言实现)
-
浙大版《C语言程序设计(第3版)》题目集 习题10-1 判断满足条件的三位数 (15分)
-
Python-打印指定范围内的全部回文素数(高教社,《Python编程基础及应用》习题8-7) (10分) 回文素数是指一个数既是素数又是回文数,例如131既是素数又是回文数。
-
基础编程题目集 7-8 超速判断 (10分)