C语言:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数.写一函数实现
我写了程序 语法没有错误 但是没有办法把最后m个数变成前面m个数.以后长期定向提问
#include
int *p,n,m,a[100];
void swap(int *p,int n,int m)
{
int i,j,*t,b[100];
\x05t=b;
\x05for(j=n-1;j>=m;j--)
\x05{
\x05 *(t+j)=*(p+j);
\x05 }
for(i=m-1;i>=0;i--)
\x05 {
\x05\x05*(p+i+m)=*(p+i);
}
\x05for(j=n-1;j>=m;j--)
\x05{
\x05 *(p+j+m)=*(t+j);
\x05}
}\x05
int main()
{
\x05int i;
\x05printf("输入数据的个数以及想要从哪里开始移动:\n");
scanf("%d%d",&n,&m);
printf("输入移动前的数组为:\n");
for(i=0;i
人气:488 ℃ 时间:2019-11-02 02:46:17
解答
void swap(int *p,int n,int m)
{
\x05int i,j,*t,b[100];
\x05t=b;
\x05for(i=0;i=m;i--)
\x05{
\x05\x05p[i] = p[i-m];
\x05}
\x05for(i=0;i不是指针就错,而是你的算法有问题你的代码等价于 void swap(int *p, int n, int m) { int i,j,*t,b[100];t=b;for(j=n-1;j>=m;j--) {b[j]=p[j]; // 把m到n-1复制到b }for(i=m-1;i>=0;i--){ p[i+m]=p[i]; // 把前面m个往后面挪 }for(j=n-1;j>=m;j--){ p[j+m]=b[j]; // 这行在j=n-1的时候,p[j+m]已经越界了 } }
推荐
猜你喜欢
- 甲乙丙三人在AB两块地植树,其中甲
- When did you leave?
- 抛物线过(-1,-1)点,对称轴是直线x+2=0.且在x轴上截线段的长度为2倍根号2,求抛物线解析式.
- 如图所示,水平传送带以2m/s的速度匀速运行,将一质量为2kg的工件,设传送带速度不变,工件与传送带之间的动摩擦因素为u=0.2,放手后工件在3s内位移是多少?摩擦力做多少功?
- 三相电星星连接和三角型连接的区别在哪?
- 小红的妈妈今年40岁,但她只过了10个生日,这是为什么?
- 把一个边长为4cm的正方形剪成一个最大的圆,面积减少了百分之几?(算术法做题,列式简单点)急用!
- 一密闭容器封闭着一定质量的理想气体,若气体温度升高,保持气体体积不变,则气体的____