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;
}
但是程序结果确实你输入什么数组输出的还是什么数组。。。。
求解答!!!!谢谢了!!!
比如
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中 ==表示相等 =是赋值的意思
同上