读书人

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

发布时间: 2012-03-21 13:33:15 作者: rapoo

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);也可以

读书人网 >C++

热点推荐