求教大佬帮忙看一下我写的C语言程序中问题在哪里?
请编写函数,对传送过来的三个数选出最大和最小数,并通过形参传回结果。部分源程序如下:
#include <stdio.h>
void fun(int s[], int *p1, int *p2,int n)
{
}
main()
{
int a[3],i,max,min;
for (i=0;i<3;i++)
scanf("%d",&a[i]);
fun(a,&max,&min,3);
printf("max=%d,min=%d\n",max,min);
}
我的程序:
#include<stdio.h>
int main()
{
void fun(int s[],int *p1,int *p2,int n);
int a[3],i,max,min;
for(i=0;i<3;i++)
scanf("%d",&a[i]);
fun(a,&max,&min,3);
printf("max=%d,min=%d\n",max,min);
}
void fun(int s[],int *p1,int *p2,int n)
{
int i;
p1=s,p2=s;
for(i=1;i<n;i++)
{
if(*p1<s[i])
p1=s+i;
if(*p2>s[i])
p2=s+i;
}
} 展开
#include <stdio.h>
void fun(int s[], int* p1, int* p2, int n);
int main()
{
void fun(int s[], int* p1, int* p2, int n);
int a[3], i, max, min;
for (i = 0; i < 3; i++)
scanf("%d", &a[i]);
fun(a, &max, &min, 3);
printf("max=%d,min=%d\n", max, min);
}
void fun(int s[], int* p1, int* p2, int n)
{
int i;
*p1 = s[0], *p2 = s[0];
for (i = 1; i < n; i++)
{
if (*p1 < s[i])
*p1 = s[i];
if (*p2 > s[i])
*p2 = s[i];
}
}
#include<stdio.h>
int main()
{
void fun(int s[],int *p1,int *p2,int n);
int a[3],i,max,min;
for(i=0; i<3; i++)
scanf("%d",&a[i]);
fun(a,&max,&min,3);
printf("max=%d,min=%d\n",max,min);
}
void fun(int s[],int *p1,int *p2,int n)
{
int i;
*p1=s[0],*p2=s[0];//赋初值
for(i=1; i<n; i++)
{
if(*p1<s[i])
*p1=s[i];//*(s+i)也行
if(*p2>s[i])
*p2=s[i];//*(s+i)也行
}
}