c语言题目,大神可不可以帮忙一下<( ̄ˇ ̄)/~ 编写程序,输入一个字符串,判断是否是回文串。

如题所述

#include <string.h>

#include <stdio.h>
int

main()


{
 int i,j,temp=1;
 char a[100];
 printf("从键盘上输入一串字符串:\n");
 gets(a);
 j=strlen(a);
 for (i=0;i<j;i++)
 {
     if (a[i] != a[j-1-i])
 {
 temp=0;
 break;
 }
 }
if(temp==0)  

printf("不是回文\n");

 else       

printf ("是回文\n");
return(0);
}


欢迎采纳

温馨提示:答案为网友推荐,仅供参考
第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;
}

相似回答