【发布时间】:2015-03-01 16:40:19
【问题描述】:
程序的作用是在提取标点符号的同时验证字符串是否为回文。该代码提取双引号和单引号,但我似乎无法弄清楚如何提取空格。当从调试器查看带有空格的数组值时,似乎字符串在插入空格的位置被截断。我从键盘输入 ra da r 并且字符串的数组值是 ra 在调试器监视列表中。
#include "stdafx.h"
#include <iostream>
bool palindrome(char[], int);
int main()
{
using namespace std;
bool status;
int siz,i;
char strarry[20];
siz = 0;
cout << " enter string" << endl;
cin >> strarry;
for (i = 0; strarry[i] != '\0'; i++)
++siz;
status = palindrome(strarry, siz);
if (status)
cout << " the string is a palindrome" << endl;
else
cout << "not a palindrome" << endl;
cin.clear();
cin.ignore(255, '/n');
cin.get();
return 0;
}
bool palindrome(char arry[], int size)
{
int i, l;
char arryn, arrysize;
static bool search = false;
static bool match = false;
static bool found = false;
static int n = 0;
int end = size - 1;
if (search != true){
for (i = 0; i <= end; i++){
if ((arry[i] == ' ') || (arry[i] == '\'') || (arry[i] == '\"')){
if ((end - i) >= 1){
for (l = i; l <= end; l++)
arry[l] = arry[l + 1];
--end;
size = end;
}
else{
size= end - 1;
}
found = true;
}//end if
}// end for
if (found == false)
size = end;
search = true;
}//end if
if (((n - size) <= 1) && match )
return true;
else{
arryn = arry[n];
arrysize = arry[size];
if (arry[n] == arry[size]){
++n;
match = true;
return palindrome(arry, size - 1);
}
else{
match = false;
return false;
}//end else
}// end else
}
【问题讨论】: