三个整数排序

作者在 2011-08-10 11:59:11 发布以下内容
/*
时间:2011年8月10日11:53:03
功能:对通过键盘任意输入的3个整数由大到小排序
目的:利用已学的printf、scanf、if完成简单功能,掌握两个数字互换位置的方法
*/

# include <stdio.h>

int main(void)
{
int a, b, c;        
int t;

printf("请任意输入三个整数,以空格间隔,按回车结束\n");
scanf("%d %d %d",&a,&b,&c);  //按规则通过键盘输入三个整数,比如2 5 0

if (a < b)        //当a<b时互换顺序,这样把较大的放在前面
{
    t = a;        //互换两个数字就像两杯饮料对倒,需要第三个杯子,所以之前需要定义临时变量t。把a杯的可乐倒进空杯t,这时a杯空了
    a = b;        //把b杯的芬达倒进a杯,b杯空了
    b = t;        //把t杯的可乐倒进b杯,t杯还是空杯,a杯里变成了芬达,b杯里变成了可乐,互换成功
}

if (a < c)        //a与其他数字依次比较,最后a就变成了最大的一个
{
    t = a;
    a = c;
    c = t;
}

if (b < c)        //b也做相同操作,最后a b c就变成了从大到小排列的数
{
    t = b;
    b = c;
    c = t;
}

printf("这三个整数从大到小的顺序是%d > %d > %d\n", a,b,c);        //排完序,2 5 0 变成5 2 0了,八成傻根青年修成正果娶到漂亮姑娘了,O(∩_∩)O哈哈~

return 0;
}

/*
在VC++6.0中的输出结果为:
————————————
请任意输入三个整数,以空格间隔,按回车结束
2 5 0
这三个整数从大到小的顺序是5 > 2 > 0
Press any key to continue


————————————
*/
 
学了指针了,用函数和指针简化一下代码
/*2011年8月31日14:39:54*/
# include <stdio.h>

void sort (int * p, int * q)        //这里函数形参是指针变量p和q,他们的数据类型是int *
{
    int t;
    if (*p < *q)                //*p是以p的内容为地址的变量,对第一次调用,*p就是a,同样*q就是b
    {
        t = *p;                    //P是int *型的,而*p是int型的,所以t和*p数据类型相同
        *p = *q;
        *q = t;
    }
}


int main(void)
{
    int a, b, c;        
    
    printf("请任意输入三个整数,以空格间隔,按回车结束\n");
    scanf("%d %d %d",&a,&b,&c);  
    
    sort (&a,&b);        //调用函数后,p=&a,也就是p保存了a的地址,p指向a。同样的q=&b,q保存了b的地址,q指向b
    sort (&a,&c);
    sort (&b,&c);
    
    printf("这三个整数从大到小的顺序是%d > %d > %d\n", a,b,c);    
    
    return 0;
}
郝斌视频笔记 | 阅读 5625 次
文章评论,共11条
八画小子
2011-08-10 23:18
1
如果是300000个数呢?
edwardflee(作者)
2011-08-11 08:36
2
<div class="quote"><span class="q"><b>八画小子</b>: 如果是300000个数呢?</span></div>老师说有将来有好多种方法可以来排序,什么冒泡、归并、插入...还没学到呢<img src="image/face/2.gif" class="face">
初到上海
2011-08-16 20:33
3
这是c语言的风格啊
edwardflee(作者)
2011-08-17 08:22
4
<div class="quote"><span class="q"><b>初到上海</b>: 这是c语言的风格啊</span></div>嗯,是在学C。不过,风格什么的是咋看出来的?
迷途精灵
2011-08-21 11:52
5
int max (int a, int b)//定义一个函数代替重复使用的一段代码<br />
{<br />
&nbsp;&nbsp;int t; <br />
&nbsp;&nbsp;if (a &lt; b)<br />
&nbsp;&nbsp;{<br />
&nbsp; &nbsp;&nbsp;&nbsp;t = a;<br />
&nbsp; &nbsp;&nbsp;&nbsp;a = b;<br />
&nbsp; &nbsp;&nbsp;&nbsp;b = t;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return a;<br />
}
zzgtjt
2011-08-25 16:21
6
还有一个简单的 可以把三个数放到一个数组里面,对数组进行排序, 将数组里面的元素输出<br />
public void&nbsp;&nbsp;sortArray(int i,int j,int k)<br />
{<br />
&nbsp; &nbsp;int c[3];<br />
&nbsp; &nbsp;int i,j,t;<br />
&nbsp; &nbsp;c[0]=i;<br />
&nbsp; &nbsp;c[1]=j;<br />
&nbsp; &nbsp;c[2]=k;<br />
&nbsp; &nbsp;for(i=0;i&lt;2;i++)<br />
&nbsp; &nbsp; for(j=i+1;j&lt;3;j++)<br />
&nbsp; &nbsp;&nbsp; &nbsp; if(c[j]&gt;c[j+1])<br />
&nbsp; &nbsp;&nbsp; &nbsp;{<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; t = c[j];<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;c[j]=c[j+1];<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;c[j+1]=t;<br />
&nbsp; &nbsp;&nbsp; &nbsp; }<br />
&nbsp; &nbsp;&nbsp;&nbsp;//从大到小<br />
&nbsp; &nbsp;&nbsp;&nbsp;for(j=2;j&gt;=0;j--)<br />
&nbsp; &nbsp;&nbsp; &nbsp;printf(&quot;%4d&quot;,c[j]);<br />
&nbsp; &nbsp;//从小到大<br />
&nbsp; &nbsp; for(j=0;j&lt;3;j++)<br />
&nbsp; &nbsp;&nbsp;&nbsp;printf(&quot;%4d&quot;,c[j]);<br />
&nbsp; &nbsp;printf(&quot;\n&quot;);&nbsp; &nbsp;&nbsp;&nbsp;<br />
}
edwardflee(作者)
2011-08-25 16:37
7
<div class="quote"><span class="q"><b>zzgtjt</b>: 还有一个简单的 可以把三个数放到一个数组里面,对数组进行排序, 将数组里面的元素输出<br />
public void&nbsp;&nbsp;sortArray(int i,int j,int k)<br />
{<br />
&nbsp; &nbsp;int c[3];<br />
&nbsp; &nbsp;int i,</span></div>数组啊?那会连循环还没学呢。不过现在看得懂了,说明自己还是有进步的吧,嘻嘻,谢谢指教<img src="image/face/22.gif" class="face">
循个
2011-08-27 20:30
8
也可以用函数来进行交换数值
zhangjie2486
2011-08-28 03:44
9
理解理解模块化编程吧。。。对你有好处
馨梦惜夕
2011-08-28 22:56
10
<div class="quote"><span class="q"><b>八画小子</b>: 如果是300000个数呢?</span></div>可以用冒泡法
edwardflee(作者)
2011-08-31 14:39
11
<div class="quote"><span class="q"><b>迷途精灵</b>: int max (int a, int b)//定义一个函数代替重复使用的一段代码<br />
{<br />
&nbsp;&nbsp;int t; <br />
&nbsp;&nbsp;if (a &lt; b)<br />
&nbsp;&nbsp;{<br />
&nbsp; &nbsp;&nbsp;&nbsp;t = a;<br />
&nbsp; &nbsp;&nbsp;&nbsp;a = b;<br />
&nbsp; &nbsp;&nbsp;&nbsp;b = t;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return a;<br />
}</span></div>刚学函数时想过,不过当时返回不了两个返回值,现在学了指针,可以这么玩了
游客请输入验证码
最新评论