使用VC6打开考生文件夹下的源程序文件modi2.epp。阅读下列函数说明和代码,补充空出的代码。函数IsPalindromes(cha*string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回1,否则返回0。 如:1234554

admin2019-01-19  26

问题 使用VC6打开考生文件夹下的源程序文件modi2.epp。阅读下列函数说明和代码,补充空出的代码。函数IsPalindromes(cha*string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回1,否则返回0。
    如:1234554321或者1234321都认为是回文字符串。
    如果串为空或一个字母时,均认为是回文字符串。
    注意:不能修改程序的其他部分,只能补充IsPalindromes()函数。
1  #include<iostream.h>
2  #define MAXLEN 1024
3  bool IsPalindromes(char*string)
4  {
5
6  }
7  void main()
8  {
9    char str[MAXLEN];
10    cout<<’’请输入一行文字’’<<end1;
11    cin.getline(str,MAXLEN);
12    cout<<ISPalindromes(str)<<end1;
13    return;
14  }

选项

答案1 int len=0; 2 for(;string[len]!=NULL;len++)//获取字符串的长度 3 ; 4 len--; //下标从0开始到len-1 5 for(int i=0;i<len;i++,fen--)//第一个和最后一个比较,第二个和倒数第二个比较 6 { 7 if( string[i] != string[len])//不等说明不同,返回0 8 return 0; 9 } 10 return 1;

解析 函数IsPalindromes(cha*string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回1,否则返回0。回文是指前后对称的字符串,因此可比较对称位置的字符是否一样来判断是否是回文,如果每个对称位置的元素均相同则是回文,返回1,否则返回0。
    (1)由于字符串的长度是未知的,先利用循环求出字符串的长度,循环变量从0开始,直到数组的结束,string[len]=NUL为循环结束条件,如此便得到了数组的长度len。
    (2)知道长度后就可以判断对称位置的元素是否相同,比如第一个元素和最后一个元素,第二个元素和倒数第二个元素,如此比较下去直到到了最中间的元素为止。
    (3)可以利用循环来比较是否对称,设置另一个循环变量i,i从0开始表示从数组的头开始读数,len从数组的尾部开始读数,如果string!=string[len],则跳出循环返回0,如果循环结束还没发现不同则返回1。
转载请注明原文地址:https://kaotiyun.com/show/agAp777K
0

最新回复(0)