思路:可令两个数组a[],b[];将数组a[]中最后n-m个数存至b[]中,完成平移后再将b[]中的元素重新存入a[]中。
注:非指正,利用多个for循环可实现。
代码如下:
#include<stdio.h>
int main()
{
int a[100],b[100],i,m,n;
scanf("%d",&n); //确定总数
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
do{
scanf("%d",&m); //确定平移的个数,且利用do-while循环保证输入m的数据大于0
}while(m<=0);
for(i=0;i<m;i++)
{
b[i]=a[n-m+i]; //将原数组a[]中最后m个数保存到数组b[]中
}
for(i=n-1;i>n-m;i--)
{
a[i]=a[i-m]; //从此时的最后一项开始,依次将前一位数赋值给后一位数,一共执行m次(n-(n-m))
}
for(i=0;i<m;i++)
{
a[i]=b[i]; //将放入b[]中的元素再从第一项依次放入a[]中
}
for(i=0;i<n;i++)
{
printf("%d",a[i]); //此时完成数组平移并输出
}
return 0;
}
此为本人所作,如有雷同,纯属巧合。(可转载)