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

        这道题我们先简化讨论,我们先考虑m=3的情况, 代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define M 10
void sort(int *p1,int n)
{	int b[100]={0};		//数组初始化 
	int i,j,k,*p2=b;	//定义p2指向b数组 
	for(i=0,j=n-3;i<3,j<n;i++,j++)	//a数组后m=3个赋值给b数组的前三个 
	{
		*(p2+i)=*(p1+j);
	}
	for(i=3,j=0;i<n,j<n-3;i++,j++)	//b数组从b【3】到b【n】(即b数组的后n-m个),将a数组a【0】到 a【n-m】赋值给b数组 (a数组的前n-m个) 
	{
		*(p2+i)=*(p1+j);
	}
	printf("The end of array is :");
	for(p2=b;p2<(b+n);p2++)		//打印输出b数组 
	{
		printf("%d ",*p2);
	}
}
void set_array(int *p,int n)
{	int i;
	printf("Please enter %d number.\n",n);
	
	for(i=0;i<n;i++)
	{
		scanf("%d",p+i);
	}
 } 
int main(void)
{	int i,n;
	int *p=NULL;				//防止野指针出现 
	printf("Please enter N:");	
	scanf("%d",&n);				//输入数组元素个数 
	int a[n];
	set_array(a,n);				//调用输入函数赋值 						
	sort(a,n); 					//调用处理函数进行调换 
	return 0;
}

总结:在主函数中传入数组,在构造函数中再创建另一个数组,分别接收主数组的值,最后进行输出即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值