跪求大佬帮我改一道C语言程序

感觉指针这快学乱了………怎么都运行不出来求支援#include <stdio.h>
void fun(int*a,int n);
int main()
{
int n,m;
int a[10];
printf("请输入数组元素的个数:");
scanf("%d",&n);
printf("请输入数组:");
for(m=0;m<n;m++)
{
scanf("%d",a[m]);
}
fun(&a,n);
}
void fun(int*x,int y)
{
int i,t;
if(y%2==0)
{
for(i=0;i<=y/2-1/2;i++);
{
t=*(x+i);
*(x+i)=*(x+y/2+1/2+i);
*(x+y/2+1/2+i)=t;
}
}
if(y%2==1)
{
for(i=0;i<y/2-1/2;i++)
{
t=*(x+i);
*(x+i)=*(x+y/2+1/2+i);
*(x+y/2+1/2+i)=t;
}
}
printf("调换后的数组是%d ",*(x+i));
}

第一、scanf的第二个参数应该是地址,而a[m]是数据,改为&a[m]。

第二、函数fun的第一个参数是指针,a就是指针,不用加&。

第三、i是整型,1/2对它来说就是0。for 循环的第二个条件应改为i<y/2。for循环块里的1/2需要相应修改。

第四、同第三类似,需要相应修改。

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-05-15
#include<stdio.h>
void fun(int *a,int n);
int main() {
int n,m;
printf("请输入数组元素的个数:");
scanf("%d",&n);
int a[n];
printf("请输入数组:");
for(m=0; m<n; m++) {
scanf("%d",&a[m]);
}

fun(a,n);

for(m=0; m<n; m++) {
printf("%d ",a[m]);
}
}
void fun(int *x,int y) {
int i,t;
int pos=y/2+y%2;
for(i=0; i<y/2; i++)
{
t=x[i];
x[i]=x[pos+i];
x[pos+i]=t;
}
}
相似回答