使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数IsPalindromes(char *string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回1,否则返回0。
例如:abcdcba或者1234321都认为是回文字符串。
如果串为空或一个字母时,均认为是回文字符串。
注意:不能修改程序的其他部分,只能补充IsPalindromes函数。
试题程序:
#include<iostream.h>
#define MAXLEN 1024
bool IsPalindromes(char *string)
void main()
char str[MAXLEN];
cout<<"请输入一行文字"<<end1;
cin.getline(str,MAXLEN);
cout<<IsPalindromes(str)<<end1;
return;
参考答案:int len=0;
for(;string[len]!=NULL;len++) //获取字符串的长度
;
len--; //下标从0开始到len-1
for(int i=0;i<len;i++,len--) //第一个和最后一个比较,第二个和倒数第二个比较
if(string[i]!=string[len]) //不等说明不同,返回0
return 0;
}
return 1;
解析: 本题由于字符串的长度是未知的,先利用循环求出字符串的长度,循环变量从0开始,直到数组的末尾,string[len]==NULL为循环结束条件,如此便得到了数组的长度len。知道长度后就可以判断对称位置的元素是否相同,比如第一个元素和最后一个元素,第二个元素和倒数第二个元素,如此比较下去直到到了最中间的元素为止。可以利用循环来比较是否对称,设置另一个循环变量i,i从0开始表示从数组的头部开始读数,len从数组的尾部开始读数,如果string[i]!=string[len],则跳出循环返回0,如果循环结束还没发现不同,则返回1。