【PTA C语言】判断回文字符串

433 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

本文第一题为函数题型,第二题为编程题型

1 判断回文字符串(函数题)

本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。

函数接口定义:

bool palindrome( char *s );

函数palindrome判断输入字符串char *s是否为回文。若是则返回true,否则返回false

裁判测试程序样例:

#include <stdio.h>
#include <string.h>

#define MAXN 20
typedef enum {false, true} bool;

bool palindrome( char *s );

int main()
{
    char s[MAXN];

    scanf("%s", s);
    if ( palindrome(s)==true )
        printf("Yes\n");
    else
        printf("No\n");
    printf("%s\n", s);

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例1:

thisistrueurtsisiht

输出样例1:

Yes
thisistrueurtsisiht

输入样例2:

thisisnottrue

输出样例2:

No
thisisnottrue

我的代码

bool palindrome( char *s )
{
	int len,i;
	len=strlen(s);
	for(i=0;i<=len/2;i++)
	{
		if(s[i]!=s[len-1-i])
			return false;
	}
    return true;
}

2 判断回文字符串 (编程题)

输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。

输入格式:

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出格式:

输出在第1行中输出字符串。如果它是回文字符串,在第2行中输出Yes,否则输出No。

输入样例1:

level

输出样例1:

level Yes

输入样例2:

1 + 2 = 2 + 1 =

输出样例2:

1 + 2 = 2 + 1 = No

我的代码

#include<stdio.h>
int main()
{
	int i=0,k=0,s;
	char ch[80];
	while ((ch[k]=getchar())!='\n')
	k++;
	ch[k]='\0';                    
	s=k;
	k=k-1;
	while(i<k)
	{
		if(ch[i]!=ch[k])
		break;
		i++;
		k--;
	}
	if(i>=k)
	{
		for(i=0;i<s;i++)
		printf("%c",ch[i]);
		printf("\n");
		printf("Yes");
	}
	else
	{
		for(i=0;i<s;i++)
		printf("%c",ch[i]);
		printf("\n");
		printf("No");
	}
	return 0;
}