#include <stdio.h>
void main(void)
{
int a,b;
int pp=large(a,b);
printf("Please enter two numbers:\n",a,b);
scanf("%d%d",&a,&b);
if (pp=a)
{
printf("由大到小输出%2d%2d\n",pp);
}
else
{
printf("由大到小输出%2d%2d\n",pp);
}
}
int large(int x,int y)
{
int zz;
if (x>y)
{
zz=a;
}
else
{
zz=b;
}
return zz;
}
对于实参 形参 返回值不是太懂 有错误 但是找不到 大家帮下
建议你看看函数参数的传递和变量的作用域。
问题1:a和b由于你是在主函数内定义,所以子函数中不可以使用。
问题2、函数一次只能返回一个值,看你的主函数中的if和else中的输出语句,你明显当成两个了,而且此处的输出语句是有问题的。
问题3:在此你采用的是传值方式,所调用的函数不会返回你想要的结果。
问题4、注意你的if判断应该是"=="而不是“=”
这种方式下,你可以在子函数中就输出两个数谁大谁小。
解决方法:
采用传址方式可以实现你的想法:
#include <stdio.h>
int large(int *x,int *y)
{
return *x>*y?*x:*y;
}
void main(void)
{
int a,b;
printf("Please enter two numbers:\n",a,b);
scanf("%d%d",&a,&b);
int pp=large(&a,&b);//pp只能接受一个数值
printf("pp=%d",pp);
if (pp==a)
{
printf("由大到小输出%2d,%2d\n",pp,b);
}
else if(pp==b)
{
printf("由大到小输出%2d,%2d\n",pp,a);
}
}
#include <stdio.h>
void main(void)
{
int a,b;
int large(int x,int y);//需要先声明.
printf("Please enter two numbers:\n",a,b);
scanf("%d%d",&a,&b);
int pp=large(a,b); //a b应该先获取输入.再调用函数判断.
if (pp==a) //==是判断.=是赋值.
{
printf("由大到小输出%2d%2d\n",a,b);
}
else
{
printf("由大到小输出%2d%2d\n",b,a);
}
}
int large(int x,int y)
{
int zz;
if (x>y)
{
zz=x; //x
}
else
{
zz=y; //y
}
return zz;
}