【发布时间】:2019-07-13 04:37:32
【问题描述】:
我的逻辑如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[50] = {'h','i',' ','m','e',' ','t','e'};
// k = 4 because i have 2 spaces and for each
// space i have to insert 2 spaces . so total 4
//spaces
int k=4;
for(int i=strlen(a)-1 ; i>0 && k >0 ; i--){
if(a[i] != ' ')
{
a[i+k] = a[i];
a[i] = ' ';
}
else
{
k = k - 2;
}
}
printf("%s" , a);
return 0;
}
我必须用字符数组来解决它。我能够 使用字符串 stl 执行此操作 我得到的输出是 嗨---我。 但答案是 嗨---我---te。
【问题讨论】:
-
一个问题是您没有正确地对结果字符串进行空终止,因此调用
printf可能会表现得很奇怪。用铅笔和纸逐步完成你的算法。您没有正确设置所有数组元素。 -
无关:
#include<bits/stdc++.h>loads the gun。using namespace std;takes the safety off。真的要小心。 -
另一个好的策略是向Rubber Duck 解释程序中每一行的用途。橡皮鸭是出了名的愚蠢,所以你必须非常仔细地解释。有时,通过对话,橡皮鸭会引导您提出一些有趣的问题,例如当您执行
a[i+k] = a[i];时,a[i+k]的数据会发生什么情况@