c语言判断三个数大小

首先利用scanf函数输入三个数a,b,c, 然后利用fun函数比较三角三个数的大小,最大的放在a,最小的放在c,中间的放在b,最后再次输出排序后的数。程序如下:
#include<stdio.h>
void fun(int *a,int *b,int *c)
{
int *k;
if(a<b)
{k=a;a=b;a=k;}
if(a<c)
{k=a;a=c;a=k;}
if(b<c)
{k=b;b=c;c=k;}
}
void main()
{
int a,b,c;
printf("input a , b , c:\n");
scanf("%d%d%d",&a,&b,&c);
printf("the first: a=%d,b=%d,c=%d\n",a,b,c);
fun(&a,&b,&c);
printf("the second: a=%d,b=%d,c=%d\n",a,b,c);
}
现在的疑问是,我输入三个数之后,并没有按照我的想法输出,而是输出和输入的顺序一样的数,结果这样:

方法如下:

#include<stdio.h>

//#include<windows.h>

voidmain()

{

intmax3(inta,intb,intc);

inta,b,c,result;

printf("Pleaseenterthreenumber:\n");

scanf("%d,%d,%d",&a,&b,&c);

result=max3(a,b,c);

printf("Themaxofthreenumberis%d:\n",result);

//system("pause");

}

intmax3(inta,intb,intc)

{

intx,z;

if(a>b)x=a;

elsex=b;

if(x>c)z=x;

elsez=c;

returnz;

}

扩展资料:

C语言是面向过程的编程语言,用户只需要关注所被解决问题的本身,而不需要花费过多的精力去了解相关硬件,且针对不同的硬件环境,在用C语言实现相同功能时的代码基本一致,不需或仅需进行少量改动便可完成移植,这就意味着,对于一台计算机编写的C程序可以在另一台计算机上轻松地运行,从而极大的减少了程序移植的工作强度。

与其他高级语言相比,C语言可以生成高质量和高效率的目标代码,故通常应用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-24
指针的使用错误, 指针作为参数传递的是地址,你要想在fun函数中交换,必须是对指针里的数据操作,而不是对指针本身操作,所以你的就没有交换,正确的是 指针写成 *p的形式。
第2个回答  2012-03-24
形参的值传递是单向的,只能由实参传递给形参,你要想用指针做到他们之间的值变换,你得在main函数里也用指针,具体的你可以参考谭浩强的《C程序设计第三版》的225页。
第3个回答  2012-03-24
首先呢,你fun()函数里的a,b,c都是指针,if(a<b)判断的是地址,应该改成if(*a<*b),下面同理,其次呢,形参的值是单向传递的,用指针的思路是没错的。但是fun()函数里你想排序的所有值都应该改成*a *b *c其实
第4个回答  推荐于2017-12-15
首先,穿进去的是指针,你现在这样写是在比较地址的大小,没有意义,同楼上所说加a,b,c前加*;
然后,你的交换逻辑也有问题
void fun(int *a,int *b,int *c)
{
int k;
if(*a<*b)
{k=*a;*a=*b;*b=k;}
if(*a<*c)
{k=*a;*a=*c;*c=k;}
if(*b<*c)
{k=*b;*b=*c;*c=k;}
}
应该是这样写,我调试过了,就是这样本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网