C语言问题,请高手解答,在线等!

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:24:57
要编一个程序,使数组里前m个元素和随后的m-n个元素互换
比如
1 2 3 4 5 m=3
输出
4 5 1 2 3

这是部分代码

if(m=0)
for(i=0;i<n;i++)
printf("%d\t",a[i]);
if(0<m<n)
for(k=m-1;k<n;k++){
temp=a[k+1];
a[k+1]=a[k-m+1];
a[k-m+1]=temp;
}
for(k=m-1;k<m;k++){
temp=a[k];
a[k]=a[n-k-1];
a[n-k-1]=temp;
}

但是程序结果确实你输入什么数组输出的还是什么数组。。。。

求解答!!!!谢谢了!!!

楼上的正解。

#include <stdio.h>
#include <stdlib.h>

void swapvec(int *vec, unsigned int size, unsigned int n)
{
int *buf;
unsigned int i;

if(n > size) return;
if((buf = (int *)malloc(sizeof(int) * n)) == NULL) return;

for(i=0; i<n; i++) buf[i] = vec[i];
for(i=0; i<size-n; i++) vec[i] = vec[i+n];
for(i=0; i<n; i++) vec[i+(size-n)] = buf[i];

free(buf);
}

int main()
{
int vec[] = {0, 1, 2, 3, 4, 5};
int i;

swapvec(vec, 6, 4);
for(i=0; i<6; i++) printf("%d ", vec[i]);
printf("\n");

return 0;
}

http://bvcat007.javaeye.com/blog/monthblog/2008-04?show_full=true

if(m==0) 在c中 ==表示相等 =是赋值的意思

同上