第1个回答 2015-06-07
#include<iostream>
#include<string>
using namespace std;
int isPalindrome(char *str)
{
int i=0;
char tempStr[10]="";//这儿需要注意
while(str[i]!='\0')
{
i++;
}
i-=1;//这一句如果注释掉可以看看是什么效果
for(int j=0;i>=0;j++,i--)
{
tempStr[j]=str[i];
}
return strcmp(tempStr,str);//strcmp(str1,str2)比较两个字符串设这两个字符串为str1,str2,
//若str1==str2,则返回零;若str1>str2,则返回正数;若str1<str2,则返回负数。
}
int main()
{
char str[10]="level";
cout<<"该字符串是不是回文串?"<<endl;
cout<<isPalindrome(str)<<endl;
return 0;
}
第2个回答 2015-06-07
#include<stdio.h>
#include<string.h>
#include<malloc.h>
void test(char *p)
{
int i;
int j;
i = strlen(p)-1;
for (j=0;j<=i;j++,i--)
{
if(strncmp((p+j),(p+i),1))
{
printf("NO\n");
return;
}
}
printf("YES\n");
return;
}
int main()
{
char *p=NULL;
int a=0;
printf("Please input the num of letters:");
scanf("%d",&a);
p = (char *)malloc(a*sizeof(char));
printf("\nPlease input the letters:");
scanf("%s",p);
test(p);
}
//自己写的
第3个回答 2015-06-07
#include <stdio.h>
#include <string.h>
void get_string(char *str, size_t size) {
size_t i = 0;
int ch = 0;
while ((ch = getchar()) != '\n')
if (i < size)
str[i++] = (char)ch;
str[i] = '\0';
}
int is_reverse(const char *str) {
const char *end = str;
while (*end) ++end;
--end;
while (str < end)
if (*str++ != *end--) return 0;
return 1;
}
int main(void) {
char str[100];
printf("Enter a string: ");
get_string(str, 100);
if (is_reverse(str)) puts("Yes");
else puts("No");
return 0;
}