c语言编写一个程序,将3个数由小到大排序。可以把两个数交换编写成自定义函数,如果用变量名作为函数参数,参数传递是单向的,形参数据交换了但实参仍然不变
时间: 2024-09-09 14:02:38 浏览: 43
在C语言中,编写一个程序将三个数由小到大排序,可以通过定义一个交换函数来实现。这里提供一个简单的示例代码,其中包含了一个自定义的交换函数`swap`,它接受两个整数的地址作为参数,实现指针级别的交换,这样就可以确保实参也会被改变。
```c
#include <stdio.h>
// 自定义交换函数,通过指针参数交换两个数的值
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 排序函数,使用冒泡排序算法将三个数由小到大排序
void sort(int *a, int *b, int *c) {
if (*a > *b) {
swap(a, b); // 如果a比b大,则交换它们的值
}
if (*a > *c) {
swap(a, c); // 如果a比c大,则交换它们的值
}
if (*b > *c) {
swap(b, c); // 如果b比c大,则交换它们的值
}
}
int main() {
int x, y, z;
// 输入三个整数
printf("请输入三个整数,用空格分隔: ");
scanf("%d %d %d", &x, &y, &z);
// 调用排序函数
sort(&x, &y, &z);
// 输出排序后的结果
printf("排序后的结果为: %d %d %d\n", x, y, z);
return 0;
}
```
在这个例子中,`sort`函数负责根据大小顺序重新排列三个数,使用了简单的冒泡排序逻辑。如果想要使用变量名作为函数参数来实现交换,可以直接传递变量而不是它们的地址,但是这样交换的是副本,实参的值不会改变。上面的`swap`函数就是使用地址来确保实参的值也会随之改变。
阅读全文