如何建设数据报表网站,星子网房产租房,下载京东网上商城,九星市场做网站轮换
串“abcd”每个字符都向右移位#xff0c;最右的移动到第一个字符的位置#xff0c;就变为“dabc”。这称为对串进行位移1的轮换。同理#xff0c;“abcd”变为#xff1a;“cdab”则称为位移2的轮换。
下面的代码实现了对串s进行位移为n的轮换。请补全缺失的代码。…轮换
串“abcd”每个字符都向右移位最右的移动到第一个字符的位置就变为“dabc”。这称为对串进行位移1的轮换。同理“abcd”变为“cdab”则称为位移2的轮换。
下面的代码实现了对串s进行位移为n的轮换。请补全缺失的代码。
void shift(char* s, int n)
{
char* p;
char* q;
int len strlen(s);
if(len0) return;
if(n0 || nlen) return; char* s2 (char*)malloc(_________);
p s;
q s2 n % len;
while(*p)
{
*q *p;
if(q-s2len)
{
*q ___________;
q s2;
}
}
strcpy(s,s2);
free(s2);
} #includeiostream
#includecstdlib
#includecstring
#includecstdio
using namespace std;
void shift(char *s,int n)
{char *p;char *q;coutsendl;int lenstrlen(s);if(n0 || nlen)return ;char *s2(char *)malloc((len1)*sizeof(char)); //分配len1个空间ps;qs2n%len;while(*p){*q*p;if(q-s2len){*q\0;qs2;}}strcpy(s,s2);free(s2);
}
int main()
{char s[10]abcd; //数组存储字符串shift(s,2);coutsendl;return 0;
}注意1、lenstrlen(s),得到的是字符串s的字符个数不包括结尾\0,但是存储空间必须大于等于len1才能完整存储字符串s所以在分配同样大小的s2时要分配len1个空间 2、char s[10]abcd,作者之前一直错误的写成char *sabcd,运行结果一直是unhandled exception int x:Access Violation指针乱指。后来百度了一下strcpy百度百科才知道。