三个数比较大小,源码1和源码2一个成功一个失败
源码1 运行正常,但无法交换,失败。
#include<stdio.h>
void swap(int m,int n); //交换
void main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a<b)
swap(a,b); //如果a<b,交换。
if(a<c)
swap(a,c); //同上。
if(b<c)
swap(b,c); //同上
printf("%d>%d>%d\n",a,b,c);
}
void swap(int m,int n) // 交换
{
int t;
t=m;
m=n;
n=t;
}
源码2 成功。
#include<stdio.h>
void swap(int *m,int *n); //交换,与1相比变成指针型
void main()
{
int a,b,c;
int *p1,*p2,*p3; //定义指针
scanf("%d%d%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
if(a<b)
swap(p1,p2); //如果a<b,交换
if(a<c)
swap(p1,p3); // 同上
if(b<c)
swap(p2,p3); //同上
printf("%d>%d>%d\n",a,b,c);
}
void swap(int *m,int *n)
{
int t; //以第一个a<b为例
t=*m; //t=a;
*m=*n; //a=b;
*n=t; //b=t;
源码1 运行正常,但无法交换,失败。
#include<stdio.h>
void swap(int m,int n); //交换
void main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a<b)
swap(a,b); //如果a<b,交换。
if(a<c)
swap(a,c); //同上。
if(b<c)
swap(b,c); //同上
printf("%d>%d>%d\n",a,b,c);
}
void swap(int m,int n) // 交换
{
int t;
t=m;
m=n;
n=t;
}
源码2 成功。
#include<stdio.h>
void swap(int *m,int *n); //交换,与1相比变成指针型
void main()
{
int a,b,c;
int *p1,*p2,*p3; //定义指针
scanf("%d%d%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
if(a<b)
swap(p1,p2); //如果a<b,交换
if(a<c)
swap(p1,p3); // 同上
if(b<c)
swap(p2,p3); //同上
printf("%d>%d>%d\n",a,b,c);
}
void swap(int *m,int *n)
{
int t; //以第一个a<b为例
t=*m; //t=a;
*m=*n; //a=b;
*n=t; //b=t;
}
要想swap()函数中交换两个变量的值,然后在main函数中使用,那么调用swap()时要使用输入型参数.输入型参数说白了就是用指针变量作为函数的参数,比如说:
int a, b; 要想交换a, b的值,那么应该用swap(int *x, int *y)这种形式调用.
int *a, *b; 要想交换a, b的值,那么应该用swap(int **x, int **y)这种形式调用.