C语⾔:字符串循环右移
编写⼀个程序,作⽤是把⼀个字符串从末尾开始循环右移n个,如"abcdef",n=3,则输出'defabc";"12345",n=2,则输出"45123";
思路:⽤循环,每次都把最后⼀个字符元素挪到⾸元素的位⼦,其余元素位⼦后移⼀个,共n次。
void main()
{int len,i,n;
char a[80];
printf("please input an integer and a string\n");
scanf("%d%s",&n,a);
len=strlen(a)-1;
怎么给数组赋值while(n--)
{char c=a[len];
for(i=len;i>0;i--)
a[i]=a[i-1];
a[0]=c;}
printf("%s",a);
}
总结:主要是循环,while循环共n次,先把尾元素a[len]保留下来赋值给c;再⽤⼀个内循环for()把所有元素后移⼀,空出来的a[0]⽤c 补。
我最先想到的⽅法是⽤两个并列的for()语句:⼀个操作后n个元素使其左移到相应位⼦,⼀个操作其余元素使其右移到相应位⼦,然后赋值给新定义的数组b,输出b。
可是存在⼀个有乱码后缀的问题,
因为是字符串,所以会有'\0'的存在,不知道怎么处理?求指教。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论