-cfyjbjonn
2019-04-21 15:04
采纳率: 73.3%
浏览 2.0k

利用指针方法实现两数互换,函数原型为:void swap(int *p1,int *p2);在线等,急

输入3个数x,y,z,按大小顺序排序后输出。
要求:利用指针方法实现两数互换,函数原型为:void swap(int *p1,int *p2);
输入提示:printf("please input 3 number x,y,z");
输出格式:printf("the sorted numbers are:%d,%d,%d\n", );

#include <stdio.h>
#include <stdlib.h>

void swap(int *p1,int *p2)
{
    int temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}

int main()
{
    int x,y,z;
    int i,j;
    int m[3];
    printf("please input 3 number x,y,z");
    for(i = 0; i < 3 ;i++)
    {
        scanf("%d",&m[i]);
    }
    for(i = 0; i < 2; i++)
    {
        for(j = 0; j < 3; j++)
        {
            if(m[i] < m[j])
            {
                swap(m[i],m[j]);
            }
        }
    }
    printf("the sorted numbers are:%d,%d,%d\n", m[0],m[1],m[2]);

   return 0;
}

我的代码哪里有错?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 吃鸡王者 2019-04-21 15:31
    已采纳

    swap调用的时候,参数应该是指针啊也,swsp(&m[i],&m[j])

    点赞 1 打赏 评论
  • everChandue 2019-04-23 22:31

    swap(m[i],m[j]);
    正确做法是对m[i]取地址
    swap(&m[i],&m[j]); 或者 swap(m+i,m+j);

    点赞 1 打赏 评论

相关推荐 更多相似问题