满意答案
lb79994738
2016.04.26
采纳率:45% 等级:12
已帮助:12892人
int i,j,k; char temp;
for(j=0;j
temp=w[j];//此处有误,每次循环时j都比之前+1,但是按你的逻辑此处应该是首字母
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];
w[N-1]=temp;
}
你的逻辑是这样:
假如字符串是abcdefgh,要将前三个字母移至末尾,则要经过
1.bcdefgha,在这一步,也就是temp=w[0];
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];
所达到的;
2.第二步进行之前,字符串是bcdefgha,要将b后移,显然应该将b存成temp,b后面的前移,
所以第二步依然是
temp=w[0];
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];
以达到
cdefghab;
3,同样把c暂存,c后面前移,则获得最后要得到的字符串defghabc。
所以只需要把我在程序中标出的语句改了就可以运行了。
【另外:在
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];
此处其实k和i的作用一样,没有必要用两个变量,可合二为一:
for(i=0;i<=N-1,k<=N-2;i++)
w[i]=w[i+1];
追问:
我暗号你写的写成这样子:
int i,k,temp=w[0],j;for(j=0;j
{
for(i=0,k=0;i
{
w[k]=w[k+1];
w[N-1]=temp;
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++) {
temp=w[0];
w[k]=w[k+1];
w[N-1]=temp;
}
}
}
还是没有改变啊!
追答:
int i,j,k; char temp;
for(j=0;j
temp=w[j];//此处有误,每次循环时j都比之前+1,但是按你的逻辑此处应该是首字母
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];
w[N-1]=temp;
}
就应该是
int i,j,k; char temp;
for(j=0;j
temp=w[0];
for(i=0,k=0;i<=N-1,k<=N-2;i++,k++)
w[k]=w[i+1];
w[N-1]=temp;
}
01分享举报