输入a、b两个整数,使用指针变量按大小顺序输出这两个整数。 ① 目标变量值不变,改变指针变量的指向求解。② 利用指针变量直接改变目标变量的值求解 c语言
时间: 2024-12-17 18:44:45 浏览: 5
在C语言中,你可以通过以下两种方式实现这个功能:
**方法一:利用指针变量间接交换**
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp;
// 使用临时变量存储其中一个数,然后更新指针指向的值
temp = *a; // 获取a的值
*a = *b; // 将a的值赋给b
*b = temp; // 将temp(原b的值)赋给a
}
int main() {
int a, b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
// 输出原始数值
printf("原始:a=%d, b=%d\n", a, b);
// 指针操作交换
swap(&a, &b); // 调用函数,传入的是它们的地址
printf("交换后:a=%d, b=%d\n", a, b);
return 0;
}
```
在这个例子中,`swap`函数接受两个整数的指针作为输入,并通过改变指针所指向的内存单元的值实现了交换。
**方法二:直接修改目标变量**
```c
#include <stdio.h>
void swap_direct(int *a, int *b) {
if (*a > *b) { // 如果a大于b,则交换
*a = *a + *b; // a的新值=a+b
*b = *a - *b; // b的新值=a-b
*a = *a - *b; // a的新值=a-(b的新值)
}
}
int main() {
int a, b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
printf("原始:a=%d, b=%d\n", a, b);
// 直接修改数组元素
swap_direct(&a, &b);
printf("交换后:a=%d, b=%d\n", a, b);
return 0;
}
```
在这个版本中,我们直接在原地修改了a和b的值,而不需要额外的存储空间。
阅读全文