重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
假定数据长n,输入一个整数m,
成都创新互联公司自2013年创立以来,是专业互联网技术服务公司,拥有项目网站建设、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元衢州做网站,已为上家服务,为衢州各地企业和个人服务,联系电话:13518219792
1、使数组的后n-m个元素移到前边,前m-1个元素在数组中从最后位置倒序排列
#include
"stdio.h"
main()
{
int
i,n,m,t,j;
int
d[200];
printf("\n输入n的值(n200):");
scanf("%d",n);
for(i=0;in;i++)d[i]=i;
printf("\n输入m的值(m200):");
scanf("%d",m);
printf("\n输出调整前的数据:\n");
for(i=0;in;i++)printf("%d
",d[i];
//调整程序开始
for(i=0;im;i++)
{//n-m个数前移了
t=d[0];
for(j=1;jn;j++)d[j-1]=d[j];
d[n-1]=t;
}
for(i=0;im/2;i++)
{//倒序
t=d[n-1-i];
d[n-1-i]=d[m+i];
d[m+i=t;
}
printf("\n输出调整后的数据:\n");
for(i=0;in;i++)printf("%d
",d[i];
}
解答:
1. 注意形式参数和实际参数的区别,主函数中的x,y是实际参数,swap函数中的a,b是形式参数。他们各有自己的存储空间,互不干扰。
2. 在程序适当位置加上输出地址的语句,即可看出为什么回到主程序后,x,y的值为什么不交换。
为了更形象,可以用图表示它们的关系:
可见,交换的只是swap函数中的a,b值,对主函数中的a,b值没有影响。
3. 修改的方法,将swap的交换变成值的交换。
要调换三个数的顺序,用排列组合原理简单的计算总共有6种方法,不知道楼主是想按其中某种方法交换变量的具体数值,还是将所有6种排序都打印出来?
例如,a=1,b=2,c=3,交换后结果为:a=3,b=1,c=2.
首先需要两个中间变量作为交换的媒介。程序如下
:
main()
{
int
a=1,b=2,c=3;
int
*x=a,*y=b,*z=c;/*定义3个指针变量,并分别赋予初值为a,b,c的地址。*/
int
*p=null,*s=null;/*x为交换中介指针变量,初始化为空*/
*p=*x;
*s=*y;
*x=*z;
*y=*p;
*z=*s;
printf("%d
%d
%d",a,b,c);
getch();
}
其实交换数不需要用到指针,直接运用变量本身也可交换。当然指针交换的好处在于函数内部可以实际交换两个数的值。