您的位置:首页 > 其它

习题8.4 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数

2020-07-19 04:31 113 查看
#include <stdio.h>
#include <string.h>
int main()
{
void sort(int *p1,int n,int m);

int i,a[10]={0},n=10,m=6;
int *p=a;

printf("请输入10个整数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");

sort(p,n,m);

printf("n=%d\tm=%d\n",n,m);
printf("\n调整后的数字依次为:");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
void sort(int *p1,int n,int m)
{
int b[10]={0},t;
int *i,*j,*k,*q=b;

i=p1;
j=p1+n-1;
k=p1+n-m;

for(;i<p1+n;i++)
{
if(i>=k)
{
*q=*i;                     //将原数组a中需要保留的m个数字复制至数组b中;
q++;
}
}

for(;j>=p1+m;j--)
{
*j=*(j-m);                      //将原数组a中不保留的n-m个数字依次向后移m个位置;
}

for(i=p1,q=b;i<p1+m;i++,q++)
{
*i=*q;                          //将数组b中复制的m个数字再赋值给数组a中;
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐