输入两个字符串,结合后判断是否是回文(从前面开始读是那个单词,从后往前读还是那个单词)
输入
str1 str2
输出
是回文的话 ok:str3
不是回文的话 not_ok:str3
例
输入
carrot torrac
输出
ok:carrottorrac
输入
camera arema
输出
not_ok:cameraarema
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
char str1[100], str2[100];
scanf("%s%s", str1, str2);
strcat(str1, str2);
int i, len = strlen(str1);
for (i = 0; i < len/ 2; i++)
{
if (str1[i] != str1[len - i - 1])
{
printf("not_ok:%s\n",str1);
return 0;
}
}
printf("ok:%s\n",str1);
}
#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("ok\n");
else
printf("not_ok\n");
return 0;
}
#include <stdio.h>
#include <string.h>
#define MAXN 20
typedef enum {false, true} bool;
bool palindrome( char *s )
{
int j = 0;
char a[MAXN];//定义一个辅助数组
strcpy(a,s);//既然题目给了咱们string.h库函数,咱们不用白不用
int w=strlen(a);//获取字符数组的长度,注意strlen函数不能求指针传过来的字符串或字符数组的长度。..后续有时间我会在c技巧中来解释原因。
int e = w/2;//得到一半的位置,头和尾同时比较,只需要一半
bool flag = true;//定义一个flag标记
while(j<e)
{
if(a[j]!=a[w-1])//开始头尾判断
{
flag = false;//如果头尾两个字符不相等,就不是回文字符串
break;
}
j++;
w--;
}
return flag;
}
int main()
{
char s[MAXN];
scanf("%s", s);
if ( palindrome(s)==true )
printf("ok:\n");
else
printf("not_ok:\n");
printf("%s\n", s);
return 0;
}