回 帖 发 新 帖 刷新版面

主题:程序运行问题

这是一个找出十个数里的最大最小数,然后把最小数放在数组的第一个元素,把最大数放在数组的最后一个元素,并输出
怎样也得不到结果,求详细



#include<stdio.h>
void main()
{
    int a[10];
    void input(int *);
    void chuli(int *);
    void shuchu(int *);
    input(a);
    chuli(a);
    shuchu(a);
}

void input(int x[])
{
int i;
for(i=0;i<10;i++)
scanf("%d",&x[i]);
}

void chuli(int x[])
{
int *max,*min,*p,temp,i;
min=x;
for(i=1;i<10;i++)
{
    if(*min>x[i]);
    temp=*min,*min=x[i],x[i]=temp;
}
x[0]=*min;
max=x;
for(i=1;i<10;i++)
{
    if(*max<x[i]);
    temp=*min,*min=x[i],x[i]=temp;
}
x[9]=*max;
}

void shuchu(int x[])
{
    printf("%d,%d",x[0],x[9]);
}

回复列表 (共3个回复)

沙发


这个行不行的呀












我爱看[url=http://www.lingyi.cc/]怪兽片www.lingyi.cc[/url]

板凳

错误原因在chuli函数中。第一个for循环后已经把最小数放到了x数组第一个元素,即x[0]。然后max=x(等价于max=&x[0]),在第二个for循环过程中,最大数和max指向的数(即x[0])交换,这样刚找到的最小数就被最大数覆盖了.因此最后输出的两个数都是最大数。

还有chuli函数里面的  if(*min>x[i]); 和 if(*max<x[i]);后面的逗号应该是多余的。

3 楼

#include<stdio.h>
void main()
{
    int a[10];
    void input(int *);
    void chuli(int *);
    void shuchu(int *);
    input(a);
    chuli(a);
    shuchu(a);
}

void input(int x[])
{
int i;
for(i=0;i<10;i++)
scanf("%d",&x[i]);
}

void chuli(int x[])
{
int *max,*min,*p,temp,i;
min=x;
for(i=1;i<10;i++)
{
    if(*min>x[i])
    *min=x[i];
}
max=&x[9];
for(i=1;i<10;i++)
{
    if(*max<x[i])
    *max=x[i];
}
}

void shuchu(int x[])
{
    printf("%d,%d",x[0],x[9]);
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册