想用指针方法进行两个数的排序输出。

2019-03-24 19:28发布

#include<reg52.h>
#include<stdio.h> #define uchar unsigned char
#define uint unsigned int void init_uart()  //串口初始化
{
 SCON = 0x40;
 PCON = 0;
 REN = 1;
 TMOD = 0x20;
 TH1 = 0xfd;
 TL1 = 0xfd;
 TI = 1;
 TR1 = 1;
} void swop(uint *p1,uint *p2)
{
 uint temp;
 temp = *p1;
 *p1 = *p2;
 *p2 = temp;
} void main()
{
 uint x,y;
 uint *p_x,*p_y;
 init_uart();
 p_x = &x;
 p_y = &y; 
 while(1)
 { 
  printf("please input two number ");
  scanf("&d&d",&x,&y);
  if(*p_x < *p_y)
   swop(p_x,p_y);
  printf("seriation %d %d ",*p_x,*p_y);
 } 
}   如上,代码是进行排序输出的。可是,发现输入的两个数并没有排序,而是仅仅按照我的输入顺序排序的,请教下坛友,我的代码哪有错误呢? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
xiaojiong886
1楼-- · 2019-03-24 23:51
把这个p_x = &x;
            p_y = &y;
移到while循环里面试试
lalaone
2楼-- · 2019-03-25 02:24
好的。谢谢!!!

我试试!!
范小川
3楼-- · 2019-03-25 04:17
看完这段代码我瞬间石化了。。
范小川
4楼-- · 2019-03-25 05:03
建议先在VC下实现。
#include<stdio.h>

void swop(int *p1,int *p2)
{
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void main()
{
int x = 0,y = 0;
int *p_x,*p_y;
p_x = &x;
p_y = &y;
  printf("please input two number ");
  scanf("%d %d",&x,&y);
  if(*p_x < *p_y)
   swop(p_x,p_y);
  printf("seriation %d %d ",*p_x,*p_y);
}
这个在VC下实现没问题。
注意你的scanf语句。&d?。。

一周热门 更多>