通过子函数和指针来求三个数的最大值问题
#include<stdio.h>//通过子函数和指针来求三个数的最大值
int fun(int *x,int *y)
{
int z;
if(*x<*y)
z=*y;
else z=*x;
return z;
}
void main()
{
int *p;
int *q;
int *s;
printf("输入三个数字:\n");
scanf("%d,%d,%d",p,q,s);
printf("%d",fun(p,fun(q,s)));
}
这个程序哪里错了???应该怎么改 本帖最后由 jackz007 于 2019-1-26 22:17 编辑
楼主的代码存在有 2 个问题:
1.指针必须先赋值后使用,程序中三个指针型变量 p、q、s 并未在指向任何确定变量之前就被用来储存数据,这是大忌,会直接导致程序异常。
2. 看看下面这一句:
printf("%d",fun(p,fun(q,s)));
fun() 要求两个输入参数都是指针型的,而返回的却不是指针,而是数值,也就是说,fun(q,s) 并不能被视作一个指针,这样,fun(p,fun(q,s)) 就出问题了。
应该这样修改:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int * max(int * x , int * y)
{
int * z ;
z = x ;
if(* y > * x) z = y ;
return z ;
}
int main(void)
{
int p , q , s ;
printf("输入三个数字:") ;
scanf("%d %d %d" , & p , & q , & s) ;
printf("%d\n" , * max(& p , max(& q , & s))) ;
}
楼主不妨试试看
页:
[1]