继续看这个问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 20:07:03
功能:给你一个字符串"abcdefg",循环左移两位得到"cdefgab",
循环右移两位得到"fgabcde"
#include<iostream>
#include<string>
using namespace std;
void yiwei(string arr,int n)
{
int length=0;
for(int i=0;;i++){
if(arr[i]=='\0'){
length=i;break;
}
}
if(n>0){
for(int j=0;j<length;j++){
if((n+j)<length)
arr[n+j]=arr[j];
else arr[n+j]=arr[n+j-length];
}
cout<<arr<<endl;
}
if(n<0){
for(int k=0;k<length;k++){
if((k-n)>=0)
arr[k-n]=arr[k];
else arr[k-n]=arr[k-n+length];
}
cout<<arr<<endl;
}

}
int main()
{
int n;
string arr;
cin>>n>>arr;
while(n!=0){
yiwei(arr,n);
cin>>n>>arr;
}
return 0;
}
我写的如上,输出的乱七八糟 ,输第二个总是应用程序错误,大家看看哪里有问题
是这样的,左移几位右移几位是由输入的数决定的,例如:输入

好像自己给自己赋值

改这个
#include<iostream>
#include<string>
using namespace std;
int main(){
int n=2; string arr; cin>>arr;
for(int i=n;i<=arr.length()-n+1;i++)
cout<<arr[i];
for(int i=0;i<n;i++)
cout<<arr[i];
cout<<endl;
}

(数组越界,已修正)