id:264】【12分】A. 交换数字,不用函数实现(指针) 题目描述 输入a和b两个整数,按先大后小的顺序输出a和b。 要求不交换整型变量的值,而是交换两个指针变量的值(即a和b的地址) 要求不能用函数实现。 输入 a=a的值,b=b的值 输出 max=a和b的较大值,min=a和b的较小值
时间: 2024-03-05 21:54:30 浏览: 50
以下是代码实现:
```c
#include <stdio.h>
int main() {
int a, b;
printf("请输入a和b的值:\n");
scanf("%d %d", &a, &b);
int *p1 = &a, *p2 = &b;
if (*p1 < *p2) {
int *temp = p1;
p1 = p2;
p2 = temp;
}
printf("max=%d, min=%d", *p1, *p2);
return 0;
}
```
解释一下,我们先通过 `scanf` 函数获取输入的两个整数 `a` 和 `b` 的值,然后定义两个指针变量 `p1` 和 `p2` 分别指向 `a` 和 `b` 的地址。接着,如果 `a` 的值比 `b` 的值小,我们就通过一个临时指针变量 `temp` 交换 `p1` 和 `p2` 的值。最后,我们通过指针变量输出 `max` 和 `min` 的值。
相关问题
id:265】【16分】B. 交换数字,用指针做函数参数实现(指针) 题目描述 题目要求同上一题,即对输入的两个整数按大小顺序输出。现要求用函数处理,而且用指针类型的数据作函数参数。 编写程序,使用指针将两个int类型数交换,要求定义一个函数void swap(int *p1, int *p2)实现 输入 两个数 输出 交换后的两个数
以下是代码实现:
```c
#include <stdio.h>
void swap(int *p1, int *p2) {
if (*p1 < *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
}
int main() {
int a, b;
printf("请输入a和b的值:\n");
scanf("%d %d", &a, &b);
swap(&a, &b);
printf("交换后的两个数为:%d %d", a, b);
return 0;
}
```
解释一下,我们先定义一个名为 `swap` 的函数,参数为两个指向 `int` 类型的指针变量 `p1` 和 `p2`。函数实现就是和上一题的代码基本一致,如果 `*p1` 的值比 `*p2` 的值小,我们就通过一个临时变量 `temp` 交换 `*p1` 和 `*p2` 的值。最后,我们在 `main` 函数中通过调用 `swap` 函数来实现交换。需要注意的是,函数传参需要传入变量的地址,即需要在变量前加上取地址符 `&`。最后,我们通过变量输出交换后的两个数的值。
阅读全文