C语言课本上的一个超简单的题目,可是就是查不出错……应经查了一天了……哪位大哥帮帮忙吧……

2025-03-06 12:08:13
推荐回答(5个)
回答1:

我也做过一个类似的这样的程序,可以给你看一下,不知道能不能给你带来什么帮助。
我觉得你的程序里面的指针用的不是很恰当,特别是process函数中的max与min定义为指针不大妥当,还有就是在process函数的后面那里用到t太过于累赘。。

#include
void input(int a[],int n)
{
int i;
for(i=0;i scanf("%d",&a[i]);
}

void process(int a[],int n)
{
int max=a[n-1],min=a[0];
int i,mi=0,ma=n-1;
for(i=1;i {
if(min>a[i])
{
min=a[i];
mi=i;
}
if(max {
max=a[n-i-1];
ma=n-i-1;
}
}
a[mi]=a[0];
a[0]=min;
a[ma]=a[n-1];
a[n-1]=max;
}

void output(int a[],int n)
{
for(int i=0;i printf("%d,",a[i]);
printf("\n");
}

void main()
{
int a[10],n=10;
input(a,n);
process(a,n);
output(a,n);
}

回答2:

编译肯定没有问题,可能是在函数声明时出问题的,把自定义函数的声明语句放在main主函数的前面试试呢。

回答3:

void process(int *p,int n)
函数中的y是重点 系统会提示你没有初始化
如果不初始化的下面交换的语句就会发生错误
在编译上你的程序的确没有错误
建议你 将这个函数中x和y都赋初值0

回答4:

没错 只是不懂你想用来干啥

回答5:

编译没错,但你的逻辑有问题