
编写一个函数,使一维数组(长度为m)元素循环右移一位,函数原型为:void rmove(int *p , int m); ?
编写一个函数,使一维数组(长度为m)元素循环右移一位,函数原型为:voidrmove(int*p,intm);。【提示】数组元素循环右移一位的意思是:最后一个元素移到第一...
编写一个函数,使一维数组(长度为m)元素循环右移一位,函数原型为:void rmove(int *p , int m); 。
【提示】
数组元素循环右移一位的意思是:最后一个元素移到第一个,其它元素整体右移一个位置,如{1,2,3,4}循环右移一位后变成{4,1,2,3}。
假设有定义int a[4]={1,2,3,4},*p=a; 。
要求循环右移一位,通常要循环用到*(p+i)=*(p+i-1),即*(p+3)=*(p+2)、*(p+2)=*(p+1)、*(p+1)=*p。还有*p=*(p+3),但从前面看*(p+3)已被*(p+2)取代,亦即*(p+3)的值未被保存。所以在循环执行语句”*(p+i)=*(p+i-1);”前,要用一个临时变量比如t来保存*(p+3),最后将t赋值给*p即可。代码如下:
int t=*(p+3);
for(i=3;i>0;i--) //注意i的初值和终值
*(p+i)=*(p+i-1);
*p=t; 展开
【提示】
数组元素循环右移一位的意思是:最后一个元素移到第一个,其它元素整体右移一个位置,如{1,2,3,4}循环右移一位后变成{4,1,2,3}。
假设有定义int a[4]={1,2,3,4},*p=a; 。
要求循环右移一位,通常要循环用到*(p+i)=*(p+i-1),即*(p+3)=*(p+2)、*(p+2)=*(p+1)、*(p+1)=*p。还有*p=*(p+3),但从前面看*(p+3)已被*(p+2)取代,亦即*(p+3)的值未被保存。所以在循环执行语句”*(p+i)=*(p+i-1);”前,要用一个临时变量比如t来保存*(p+3),最后将t赋值给*p即可。代码如下:
int t=*(p+3);
for(i=3;i>0;i--) //注意i的初值和终值
*(p+i)=*(p+i-1);
*p=t; 展开
搜索资料
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询