首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

if和while的区别在哪里?该如何解决

2012-03-21 
if和while的区别在哪里?昨天去面试,小弟作了一道题,要求判断一个字符串是否是回文。类似 simamis , cool

if和while的区别在哪里?
昨天去面试,小弟作了一道题,要求判断一个字符串是否是回文。类似 "sim   a   mis ", "   cool   ooc "   都是回文。我写了个函数是去掉字符串中的空格。

char   *del_blank(char   *str,   char   *str_new)
{
int   i,   k;
int   n=strlen(str);
for(i=0,   k=0;   i <=n,   k <=n;   i++,   k++)
if(str[i]== '   ')
i++;
str_new[k]=str[i];
return(str_new);

}

面试官说我应该用while(str[i]== '   '),而不是if(str[i]== '   ')。   否则当碰到 "sim   a       mis "这种有连续几个空格在一起的字符串就会处理不了。这个我理解不了,请各位指点。另外我刚学编程,如果这个函数中有什么其他问题,也请指出来。谢谢。

[解决办法]
这个程序用if也是可以的,因为你已经用for循环了,只是你的程序有点问题,for循环中应该加上大括号。
如下:
char *del_blank(char *str, char *str_new)
{
int i, k;
int n=strlen(str);
for(i=0, k=0; i <=n, k <=n; i++, k++)

if(str[i]== ' ')
i++;
str_new[k]=str[i];
return(str_new);

}

[解决办法]
return(str_new);
并且保证 '\0 '复制到str_new里了

str2要分配内存
char str2[100];
或者char * str2 = new char[sizeof(str)];(最后加delete [] str2;)

不过像你这种情况cout < <del_blank(str, str);也可以

热点排行