输入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/07/06 18:07:34
![输入3个整数,按从小到大的顺序输出(用指针处理)#includeint main(){\x05int a,b,c,*p1,*p2,*p3,*p;\x05printf(](/uploads/image/z/6737186-2-6.jpg?t=%E8%BE%93%E5%85%A53%E4%B8%AA%E6%95%B4%E6%95%B0%2C%E6%8C%89%E4%BB%8E%E5%B0%8F%E5%88%B0%E5%A4%A7%E7%9A%84%E9%A1%BA%E5%BA%8F%E8%BE%93%E5%87%BA%EF%BC%88%E7%94%A8%E6%8C%87%E9%92%88%E5%A4%84%E7%90%86%EF%BC%89%23includeint+main%28%29%7B%5Cx05int+a%2Cb%2Cc%2C%2Ap1%2C%2Ap2%2C%2Ap3%2C%2Ap%3B%5Cx05printf%28%22%E8%AF%B7%E8%BE%93%E5%85%A53%E4%B8%AA%E6%95%B0%E5%AD%97%E4%BB%A5%E9%80%97%E5%8F%B7%E9%9A%94%E5%BC%80%5Cn%22%29%3B%5Cx05scanf%28%22%25d%2C%25d%2C%25d%22%2C%26a%2C%26b%2C%26c%29%3B%5Cx05p1%3D%26a%3Bp2%3D%26b%3Bp3%3D%26c%3B%5Cx05if%28a%3Eb%29%7Bp%3Dp1%3Bp1%3Dp2%3Bp2%3Dp%3B%7D%5C)
输入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个……,……,当只剩下一个时就排好了.