《程序设计基础-c语言》杨莉 刘鸿翔
ISBN-978-7-03-032903-5
p113
习题4
6.输入一个字符串,判断它是否为回文。所谓回文是指字符串正序和逆序是一样的,如“abcdcba”就是回文。
#if 0
错误程序
#endif
#include
#include
#define MAX 99
int main(void)
{
char str[MAX];
int i,num;
puts("输入一个字符串:\n");
gets(str);
num=(strlen(str)+1); //加1是因为strlen测得的长度不包括'\0',
//下面定义以数组要用到num
char a[num],b[num];
for(i=0;i<num;i++)
{
a[i]=str[i];
}
for(i=num;i>=0;i--)
{
b[i]=str[i];
}
if(strcmp(a,b)==0)
{
printf("是回文数");
}
else
{
printf("不是回文数");
}
}
修改:程序错误,未加字符串结束标志'\0'
#include
#include
#define MAX 99
int main(void)
{
char str[MAX];
int i,j,num;
puts("输入一个字符串:\n");
gets(str);
num=strlen(str);
char b[num];
for(i=num-1,j=0;i>=0;i--,j++) //倒序把数组重新赋给数组b
{
b[j]=str[i];
}
b[j]='\0'; //字符数组结束标志
if(strcmp(str,b)==0)
{
printf("是回文数");
}
else
{
printf("不是回文数");
}
}
感谢:h_hengchang指出错误