id:264】【12分】A. 交换数字,不用函数实现(指针) 题目描述 输入a和b两个整数,按先大后小的顺序输出a和b。 要求不交换整型变量的值,而是交换两个指针变量的值(即a和b的地址) 要求不能用函数实现。 输入 a=a的值,b=b的值 输出 max=a和b的较大值,min=a和b的较小值
时间: 2024-03-05 18:54:30 浏览: 8
以下是代码实现:
```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` 的值。
相关问题
题目描述:对输入的两个整数a,b,用指针变量作为函数参数,交换a和b的值。
这是一个经典的指针传参问题,可以使用指针来交换两个变量的值。具体实现代码如下:
```c
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a = 1, b = 2;
printf("Before swap: a=%d, b=%d\n", a, b);
swap(&a, &b);
printf("After swap: a=%d, b=%d\n", a, b);
return 0;
}
```
在上述代码中,函数swap的参数是两个指向整数的指针变量a和b,函数内部通过指针操作交换了a和b的值。在main函数中,我们声明了两个整数变量a和b,并且调用swap函数时传入了a和b的地址(即指针变量),从而实现了a和b的值交换。
用C语言编写:输入a和b两个整数,使用指针变量实现a和b的交换
可以使用指针变量实现a和b的交换,具体代码如下:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a, b;
printf("请输入两个整数a和b:\n");
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` ,它接受两个指针变量 `a` 和 `b` ,并将它们所指的值进行交换。在 `main` 函数中,先输入两个整数 `a` 和 `b`,然后调用 `swap` 函数,将它们进行交换。最后输出交换后的结果。注意,在调用 `swap` 函数时,需要传入变量地址,即 `&a` 和 `&b`。