输入3个整数,按从小到大的顺序输出(用指针处理)#includeint main(){\x05int a,b,c,*p1,*p2,*p3,*p;\x05printf("请输入3个数字以逗号隔开\n");\x05scanf("%d,%d,%d",&a,&b,&c);\x05p1=&a;p2=&b;p3=&c;\x05if(a>b){p=p1;p1=p2;p2=p;}\

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/26 11:48:15
输入3个整数,按从小到大的顺序输出(用指针处理)#includeint main(){\x05int a,b,c,*p1,*p2,*p3,*p;\x05printf(b){p=p1;p1=p2;p2=p;}\" />

输入3个整数,按从小到大的顺序输出(用指针处理)#includeint main(){\x05int a,b,c,*p1,*p2,*p3,*p;\x05printf("请输入3个数字以逗号隔开\n");\x05scanf("%d,%d,%d",&a,&b,&c);\x05p1=&a;p2=&b;p3=&c;\x05if(a>b){p=p1;p1=p2;p2=p;}\
输入3个整数,按从小到大的顺序输出(用指针处理)
#include
int main()
{
\x05int a,b,c,*p1,*p2,*p3,*p;
\x05printf("请输入3个数字以逗号隔开\n");
\x05scanf("%d,%d,%d",&a,&b,&c);
\x05p1=&a;p2=&b;p3=&c;
\x05if(a>b){p=p1;p1=p2;p2=p;}
\x05if(a>c){p=p1;p1=p3;p3=p;}
\x05if(b>c){p=p2;p2=p3;p3=p;}
\x05printf("由小到大排列是\n");
\x05printf("%d,%d,%d",*p1,*p2,*p3);
\x05return 0;
}
我哪里错了啊 谢谢

输入3个整数,按从小到大的顺序输出(用指针处理)#includeint main(){\x05int a,b,c,*p1,*p2,*p3,*p;\x05printf("请输入3个数字以逗号隔开\n");\x05scanf("%d,%d,%d",&a,&b,&c);\x05p1=&a;p2=&b;p3=&c;\x05if(a>b){p=p1;p1=p2;p2=p;}\
你这样编写有错,你的在比较的时候你都认为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;"后下面的比较都要做大幅改动,按你的思路该这么写:
#include
int main()
{
\x09int a,b,c,*p1,*p2,*p3,*p;
\x09printf("请输入3个数字以逗号隔开:\n");
\x09scanf("%d,%d,%d",&a,&b,&c);
\x09p1=&a;p2=&b;p3=&c;
\x09printf("%d,%d,%d",p1, p2, p3);
\x09if(*p1 > *p2){p=p1;p1=p2;p2=p;}
\x09if(*p2 > *p3){p=p2;p2=p3;p3=p;}
\x09if(*p1 > *p2){p=p1;p1=p2;p2=p;}
\x09printf("由小到大排列是:\n");
\x09printf("%d,%d,%d\n", *p1, *p2, *p3);
\x09return 0;
}
其实排序的话比较简单的算法是用冒泡排序,但这里不能用,因为冒泡排序一般用于数组等存放有规律的数的排序,虽不能用,但是排序时你要用这个思想.冒泡排序原理比较简单,就是将最小或的数往一个方向冒就行.比如要将n个数从小到大排序,就有两种方法,一种是将小数往前冒,另一种是将大数往后冒.采取大的数往后冒的话,就要先找出n个数中最大的数,将其放在最后,然后不管最后一个数,找出n-1个数中最大的数将其放在最后(注意:是n-1个数的最后,不是所有数的最后),然后n-2个……,n-3个……,……,当只剩下一个时就排好了.