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'的存在,不知道怎么处理?求指教。