求精通C语言的老师解决下问题

来源:百度知道 编辑:UC知道 时间:2024/06/20 01:54:02
我正在学二级C语言,有这样一道题,是说:“请编写函数,对传送过来的三个数选出最大数和最小数,并通过形参传回调用函数。”我是这样编写的,但是在VC6里检测没问题,就是不能运行,请老师看看我这是哪里出问题了,多谢指教!!
我是这样编写的:
#include <stdio.h>
int fun(int*pa,int*pb,int*pc)
{ if(*pa>*pb) return *pa;
else if(*pb>*pc) return *pb;
else return *pc;
}
main()
{ int a,b,c,max;
scanf("%d%d%d",a,b,c);
printf("a=%db=%dc=%c\n",a,b,c);
max=fun(&a,&b,&c);
printf("max=%d\n",max);
}
--------------------Configuration: gfh - Win32 Debug--------------------
Compiling...
df.c
C:\Documents and Settings\Administrator\桌面\VC6\MyProjects\gfh\df.c(9) : warning C4700: local variable 'c' used without having been initialized
C:\Documents and Settings\Administrator\桌面\VC6\MyProjects\gfh\df.c(9) : warning C4700: local variable 'b' used without having been initialized
C:\Documents and Settings\Ad

scanf("%d %d %d",&a,&b,&c); 你的scanf("%d%d%d",a,b,c); 要加上&
printf("a=%db=%dc=%d\n",a,b,c); 你的printf("a=%db=%dc=%c\n",a,b,c);%d是数字格式

另:你的求最大值的算法是错的。

主函数:void main()

如果不是这,请把报的错的提示发上来看看。
scanf("%d%d%d",&a,&b,&c);
printf("a=%db=%dc=%c\n",&a,&b,&c);

int fun(int*pa,int*pb,int*pc)
{ if(pa>pb&&pa>pc) return pa;
else if(pb>pa&&pb>pc) return pb;
else return pc;
}

不如写个排序函数,把三个数降序排列,这样执行函数后,pa最大,pc最小.

#include <stdio.h>
void fun(int &pa,int &pb,int &pc)
{int temp;
if(pa<pb) {temp=pa;pa=pb;pb=temp;}
if(pb<pc) {temp=pb;pb=pc;pc=temp;}
if(pa<pb) {temp=pa;pa=pb;pb=temp;}
}
main()
{ int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("a=%db=%dc=%c\n",a,b,c);
fun(a,b,c);
printf("max=%d,min=%d\n",a,c);
}