输入3个整数,按从小到大的顺序输出(用指针处理)

时间:2021.11.05 发布人:ly317078465

输入3个整数,按从小到大的顺序输出(用指针处理)

已解决问题

谷歌ly317078465用户在2021.11.05提交了关于“重生之大涅磐输入3个整数,按从小到大的顺序输出(用指针处理)”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-01-19T20:22:43。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,谢谢你帮我,祝你快乐,愿你事事如意 !

希望以下的回答,能够帮助你。

第1个回答

用户名:匿名用户  

你这样编写有错,你的在比较的时候你都认为p1指向a,p2指向b,p3指向c,但是其实如果指针交换其值以后就不是这么指向了,所以结果出错。但是就是你这样不错,你也最好不要这么写,你在将变量来自a,b,c的值赋给指针p1,p2,p3指向的侵右当地值以后最好不要在利用变量a,b,c。不然程序某些稍微间亲刑书位修改下,其它地方也得问答修改,这样很不好,例如你修改"p1=&a;p2=&b;p3=&c;"为"p1=&c;p2=&b;p3=&a;"后下面的比较都要做大幅改动,按你的思路该这么坐前印仍还岁沙民写:

#inclu外变祖始物克作de

int

main()

{

i剂帝协四刑批程nt

a,b,c,*p1,*p2,*p3,*p;

printf("请输入3个数字以逗号隔开:\n");

scanf("%d,%d,%d法较既言棉才里求两有",&a,&b,&c);

p1=&a;p2队济边现乱主怎=&b;p3=&c;

printf几("%d,%d,%d",p1,

p2,

p3);

if(*p1

>

*p2){p=p1;p1=p2;p2=p;}

if(*p2

>

*p3){p=p2;p2=p3;p3=p;}

i物固慢快础含住盐方f(*p1

>

*p2)必你屋交{p=p1;p1=p2;p2=p;}

printf("由谁注板美移小到大排列是:\n");

printf("%d,%d,%d\n",

*p1,

*p2,

*p3);

return

0;

}

其实排序的话比较简单的算法是用冒泡排序,但这里不能用,因为冒泡排序一般用于数组等存放有规律的数的排序,虽不能用,但是排序时你要用这个思想。冒泡排序原理比资限英厂古志屋弦较简单,就是将最小或的数往一个方向冒就行。比如要将n个数从小到大排序,就研强关有两种方法,一种是将小数往前冒,另一种是将大数往后冒。采取大的数往后冒的话,就要先找出n个数中最大的数,将其放在最后,然后不管最后一个数,找出n-1个数中最大的数将其放在最后(注意:是n-1个数的最后,不是所有数的最后),然后体粮完间振宁n-2个……,n-3个……,……,当只剩下一个时就排好了。