看看这道题啊,好难啊!!
编写一个函数,作用是把一个char组成的字符串循环右移N个。比如原来是“abcdefghi”,如果N=2,移位后是“hiabcdefg”.
#include <string> #include <iostream> int main( ) { using namespace std; string str1 ("abcdefghijklmn"); cout << "The original string str1 is: \n " << str1 << endl << endl; int n; cin >> n; basic_string <char> str2 = str1.substr ( 0 , str1.size()-n ); cout << "The substring str1 copied is: " << str2 << endl << endl; basic_string <char> str3= str1.substr (str1.size()-n ); cout << "The substring str1 copied is :" << str3 << endl << endl; string str4; str4 = str3 + str2; cout << "New str:" << str4 <<endl; system("pause"); }
#include<iostream> using namespace std; int main(void) { int i; char a[]={'a','b','c','d','e','f','g'}; char b[]={}; cout<<"源数组:"<<endl; for(int i=0;i<7;i++) cout<<a[i]<<"\t"; cout<<endl; char flag; cout<<"你想左移还是右移?"<<endl; cout<<"左移输入'<',右移输入'>'"<<endl; cin>>flag; cout<<"你想移动的位数"<<endl; cin>>i; if('<'==flag) for(int j=0;j<7;j++) b[j]=a[(j+i)%7]; else for(int j=0;j<7;j++) b[j]=a[(j+7-i)%7]; cout<<"移动后的数组"<<endl; for(int i=0;i<7;i++) cout<<b[i]<<"\t"; return 0; }
// Note:Your choice is C++ IDE #include <iostream> using namespace std; const int size = 20; //定义数组大小,方便修改 int main() { char a[size]; char b[size]; //用于存储转换后的字符串 while(1) //用于反复执行 { cout<<"请输入一个字符串:"; cin>>a; int len = strlen(a); //求取字符串的长度 int n; cout<<"请输入N值:"; cin>>n; while(n > len) { cout<<"输入过大,请重新输入:"; cin>>n; } for(int i = 0; i < len; i++) { if(i < n) { b[i] = a[len-n+i]; //前n个 } if(i >= n) { b[i] = a[i-n]; //n个以后 } } b[len] = '\0'; //不要忘记字符串结尾的'\0',标记字符串的结束 cout<<"排列后的字符串:"; cout<<b<<endl; } return 0; }用到了另一个数组存取新的字符串,也用到了字符串的赋值这一知识点。刚才悲剧了,死也点不开贴代码的工具窗口...