编程判断输入的一串字符是否为“回文”。所谓“回文”,是指顺读和倒读都一样的字符串。

#include <stdio.h>
#include <string.h>
int main(void)
{
int i,j;
char a[80],b[80],*str1,*str2;
i=0;
printf("Input a string: ");
getchar();
while((a[i]=getchar())!='\n')
i++;
a[i]='\0';
i--;
j=0;
for(i=i-1;i>=0;i--){
b[j]=a[i];
j++;
}
b[j]='\0';
str1=a;
str2=b;
if(strcmp(str1,str2)==0){
printf("YES");
}
else
printf("NO");
return 0;
}
大家看看我的错在哪里
输出错误
错误输出:
Input a string: NO
--------------------------------------------------------------------------------
期望输出:
Input a string: YES
测试数据2 完全正确
测试数据3 完全正确
对了一半
要求用指针

#include"stdio.h"
void main(void)
{
unsigned char l = 0, i, j, temp1[200];
printf("\n\n\n Please Input wenzi chuan: ");
scanf("%s", temp1); //输入到TEMP1
while(temp1[l] != '\0') l++; //测出字符串长度.
j = l / 2; //半个字串长度
for (i = 0; i <= j; i++) {
if (temp1[i] != temp1[l - 1 - i]) break;
}
if (i == (j + 1)) printf("y");
else printf("n");
}
//------------------------
//上述程序,编译后运行,最多可以输入200个字符,回车键结束,程序会自动输出 y、n。

//用指针来做

#include"stdio.h"
void main(void)
{
unsigned char l = 0, i, j, temp1[200], *pt;
pt = temp1;
printf("\n\n\n Please Input wenzi chuan: ");
scanf("%s", pt); //输入到TEMP1
while(*pt != '\0') {l++; pt++;} //测出字符串长度.
j = l / 2; //半个字串长度
pt = temp1; //从头开始查找
for (i = 0; i <= j; i++) {
if (*(pt + i) != *(pt + l - 1 - i)) break;
}
if (i == (j + 1)) printf("yes\n");
else printf("no\n");
}
//------------------------
//上述程序,编译后运行,最多可以输入200个字符,回车键结束,程序会自动输出 y、n。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-27
#include "stdio.h"
main( )
{
long ge,shi,qian,wan,x;
scanf("%ld",&x);
wan=x/10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
if(ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
printf("this number is a huiwen\n");
else
printf("this number is not a huiwen\n");
}
相似回答