看看这道题啊,好难啊!!
编写一个函数,作用是把一个char组成的字符串循环右移N个。比如原来是“abcdefghi”,如果N=2,移位后是“hiabcdefg”.
2010-05-24 14:51
程序代码:#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");
}
2010-05-24 16:06
2010-05-24 17:29
2010-05-24 18:23
,我这里也献丑了。
程序代码:
#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;
}

2010-05-24 19:53
2010-05-24 21:42
程序代码:// 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;
}用到了另一个数组存取新的字符串,也用到了字符串的赋值这一知识点。刚才悲剧了,死也点不开贴代码的工具窗口...
2010-05-24 21:53
2010-05-25 11:32
2010-05-25 14:47