媒体关注地区发展:C语言小问题

来源:百度文库 编辑:高考问答 时间:2024/04/29 15:57:16
[程序]
void swap(int a, int b)
{ int t;
if(a>b)t=a, a=b, b=t;
}
main()
{ int x=15, y=12, z=20;
if(x>y) swap(x,y);
if(x>z) swap(x,z);
if(y>z) swap(y,z);
printf("%d\t%d\t%d\n", x,y,z);
}
程序的输出为15 12 20 。

请问哪位可以帮我解释一下?我看不懂

void swap(int a, int b) ;void定义一个无返回值的子函数
{ int t; ;定义整形变量t
if(a>b)t=a, a=b, b=t; ;让t作为中间变量,当a>b时交换a和b的值
} ;此时子函数结束,但是需要注意,这是一个无返回值的子函数,所以仅在子函数中交换了a和b的值,main函数中的a,b值并没变
main()
{ int x=15, y=12, z=20; ;定义整形变量xyz并赋初值
if(x>y) swap(x,y); ;如果x>y则调用子函数
if(x>z) swap(x,z); ;如果x>z则调用子函数
if(y>z) swap(y,z); ;;如果y>z则调用子函数
printf("%d\t%d\t%d\n", x,y,z); ;输出x,y,z的值
}

这个程序由于使用变量名调用子函数,而且子函数是void无返回值函数,所以子函数中的操作并不影响主函数中的任何值

如果换用指针调用就不同了

希望我说清楚了,你能明白

void swap(int a, int b)
{ int t;
if(a>b)t=a, a=b, b=t;
}
main()
{ int x=15, y=12, z=20;
if(x>y) swap(x,y);
if(x>z) swap(x,z);
if(y>z) swap(y,z);
printf("%d\t%d\t%d\n", x,y,z);
}
程序的输出为15 12 20 。

请问哪位可以帮我解释一下?我看不懂

你的函数相当于没写,只是值拷贝传过去,swap函数转换后不会改变主程序中的值,可以用指针 ,也可以将xyz定义成全局变量

楼上的说对了

是不是因为x<y<z