编程判断输入的一个字符串是否是“回文”。所谓“回文”字符串就是左读和右读都一样的字符串。例如: "abcba"就是一个回文字符串。
要求:先输出(“Input a string:\n”),输入字符串,然后判断是否回文,最后输出
(“This string is a plalindrome.\n”)
或者(“This string is not a plalindrome.\n”)
下面程序中存在比较隐蔽的错误,请通过分析和调试程序,发现并改正程序中的错误。
注意:将修改后的完整的源程序写在答题区内。
对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。
当且仅当错误全部改正,且程序运行结果调试正确,才给加5分,
如果只改正了部分错误,则不加分。
改错时不能改变程序原有的意图,不能改变函数原型。
原来的代码
#include <stdio.h>
int fun(char a[]);\\类型改不改都可以不影响
main()
{
char a[80];
printf("Input a string:\n");
gets(a);
if (fun(a))
{
printf("This string is a plalindrome.\n");
}
else
{
printf("This string is not a plalindrome.\n");
}
}
int fun(char a[]);\\*此处有错*
{
int i, j;
for (i = 0; j = strlen(a); i < j; i++; j--)\\**此处有错**
{
if (a[i] != a[j])
{
return 0;
}
}
}
改正后
#include <stdio.h>
char fun(char a[]);
main()
{
char a[80];
printf("Input a string:\n");
gets(a);
if (fun(a))
{
printf("This string is a plalindrome.\n");
}
else
{
printf("This string is not a plalindrome.\n");
}
}
char fun(char a[])
{
int i, j;
for (i = 0, j = strlen(a) - 1; i < j; i++, j--)//0指的是数组第一个所以减一才是最后一个
{
if (a[i] != a[j])
{
return 0;
}
}
}