C语言中函数调用问题

为什么输出的值不对呢-。- 程序的作用是寻找最值

#include<stdio.h>
int star(int i,int max,int min,int n)
{

for(i=1;i<=10;i++)
{scanf("%d",&n);
if(i==1)
{max=n;
min=n;}
else
{
if(n>max)
max=n;
if(n<min)
min=n;
}
}

return max;
return min;
}
int main()
{ int ii,maxx,minn,nn;

star(ii,maxx,minn,nn);
printf("max%d\nmin%d\n",maxx,minn);
}

首先我们来说一下,你这个程序是有很大的问题的。函数有且只有唯一一个返回值,当程序执行到return的时候,这个函数就结束并返回了。所以,你这里写2个return来返回最大值和最小值是不可能的。

再者,如果你想使用返回值作为最大值,最小值的传递,那么在main函数中,你调用star函数的时候需要一个变量来接受这个函数的返回值,你这里没有用变量来接受,这是第二个错误。

第三个错误,你这个star函数有2个值需要传给main函数,所以你这里使用返回值来传递参数是不可能实现的,所以就只能使用指针或者全局变量来做了。看你的程序,你是想使用指针做的,既然使用指针做,就需要在star函数的参数中使用指针类型数据。

下面是我基于你的程序帮你改的,你可以看看。

#include<stdio.h>
void star(int* max,int* min)
{
        int i , n;
for(i=1;i<=10;i++)
{
    scanf("%d",&n);
    if(i==1)
    {
*max=n;
*min=n;
    }
    else
    {
if(n>*max)
    *max=n;
if(n<*min)
    *min=n;
    }
}
}
int main()

    int maxx,minn;
    star(&maxx,&minn);
    printf("max%d\nmin%d\n",maxx,minn);
    return 0;//你的主函数是int型,需要返回一个值。
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-06
#include <stdio.h>
void star(int *max,int *min,int n)
{
for(int i=1;i<=10;i++)
{
scanf("%d",&n);
if(i==1)
{
*max=n;
*min=n;
}
else
{
if(n>*max)
*max=n;
if(n<*min)
*min=n;

}
}

}

int main()
{
int maxx=0;
int minn=0;
int nn;
star(&maxx,&minn,nn);
printf("max%d\nmin%d\n",maxx,minn);
return 0;
}本回答被提问者和网友采纳
第2个回答  2013-07-06
int star(int i,int &max,int &min,int n)改下参数申明
相似回答