交换数字,不用函数实现(指针) 题目描述 输入a和b两个整数,按先大后小的顺序输出a和b。 要求不交换整型变量的值,而是交换两个指针变量的值(即a和b的地址) 要求不能用函数实现。 输入 a=a的值,b=b的值 输出 max=a和b的较大值,min=a和b的较小值
时间: 2023-08-07 07:02:36 浏览: 94
以下是交换数字的代码,使用了指针变量而非交换整型变量的值:
```c++
#include <iostream>
using namespace std;
int main() {
int a, b;
int* p1 = &a;
int* p2 = &b;
int* temp;
cin >> a >> b;
if (*p1 < *p2) {
temp = p1;
p1 = p2;
p2 = temp;
}
cout << "max=" << *p1 << ",min=" << *p2;
return 0;
}
```
解释一下代码的实现过程:
首先,定义了两个整型变量 a 和 b,以及两个指针变量 p1 和 p2,分别指向 a 和 b 的地址。
然后,通过输入获取 a 和 b 两个整数的值。
接下来,判断 a 和 b 的大小,如果 a 小于 b,则交换 p1 和 p2 的值,使得 p1 存储的是 a 的地址,p2 存储的是 b 的地址。
最后,输出 p1 和 p2 指向的值,即 max 和 min。
相关问题
输入a和b两个整数,按先大后小的顺序输出a和b
\u8f93\u5165a\u548cb\u4e24\u4e2a\u6574\u6570\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528Python\u8bed\u8a00\u6765\u8ba1\u7b97\u3002
\u5982\u679c\u8981\u6309\u5148\u5927\u540e\u5c0f\u7684\u987a\u5e8f\u8f93\u51faa\u548cb\uff0c\u53ef\u4ee5\u901a\u8fc7Python\u7684\u6392\u5e8f\u51fd\u6570sorted()\u6765\u5b9e\u73b0\u3002\u4ee5a,b\u4e3a\u4f8b\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u4ee3\u7801\uff1a
```
a = 3
b = 1, 4, 2
result = sorted((a, *b))
print(result)
```
\u8fd9\u4e2a\u4ee3\u7801\u4f7f\u7528\u4e86\u6392\u5e8f\u51fd\u6570sorted()\uff0c\u5c06a\u548cb\u7ed3\u5408\u6210\u4e00\u4e2a\u65b9\u5219\u5bf9\u8c61\uff0c\u518d\u5c06\u7ed3\u679c\u8f93\u51fa\u3002\u4ee5\u4e0a\u4ee3\u7801\u7684\u8f93\u51fa\u7ed3\u679c\u4e3a\uff1a
```
[1, 2, 3, 4]
```
\u8fd9\u4e9b\u4ee3\u7801\u7684\u8bf4\u660e\uff1a
- `*b` \u662f\u4e00\u4e2a\u53ef\u53d6\u5904\u7406\u7684\u53c2\u6570\uff0c\u4f7f\u7528\u65b9\u5f0f\u662f\u5728b\u524d\u9762\u52a0\u4e00\u4e2a\u661f\u53f7\uff0c\u6309\u4f4f\u4e0d\u786e\u5b9a\u4e2a\u6570\uff0c\u4f5c\u4e3a\u4e00\u4e2a\u53d8\u91cf\u4f20\u9012\u5230sorted() \u51fd\u6570\u4e2d\uff0c\u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u6240\u6709\u53c2\u6570\u7684\u5217\u8868\u3002
- `(a, *b)` \u662f\u4e00\u4e2a\u5217\u8868\uff0c\u5305\u542b\u4e86a\u548cb\u4e24\u4e2a\u6574\u6570\uff0c\u5e76\u4f7f\u7528\u4e该问题的翻译为:给定整数a和b的两个整数,按先大后小的顺序输出a和b,并使用Python计算。如果要按先大后小的顺序输出a和b,则可以使用Python的排序函数sorted()来实现。例如,以a,b为例,可以使用以下代码:
```python
a = 3
b = 1, 4, 2
result = sorted((a, *b))
print(result)
```
这个代码使用了排序函数sorted(),将a和b合并成一个序列,然后将结果输出。上述代码的输出结果为:
```
[1, 2, 3, 4]
```
以下是代码的解释:
- `*b` 是一个可处理的参数,使用的方法是在b前面加一个星号,按顺序传递不定个数的参数,作为一个列表传递给sorted() 函数,返回一个包含所有参数的列表。
- `(a, *b)` 是一个列表,包含了a、b两个整数,使用一个元组语法将a和b合并成一个序列。
- sorted()函数会返回一个新的、已排序的列表。
c语言用指针方法来处理:输入a和b两个整数,按先大后小的顺序输出a和b。
可以使用指针来实现这个功能,具体实现步骤如下:
1. 定义两个整型变量a和b
2. 通过scanf函数输入a和b的值
3. 定义两个指向整型变量的指针p和q,分别指向a和b
4. 比较a和b的大小,如果a小于b,则交换p和q的指向
5. 输出*p和*q的值,即先大后小的顺序输出a和b
代码如下:
```c
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
int *p = &a, *q = &b;
if (a < b) {
int *temp = p;
p = q;
q = temp;
}
printf("%d %d\n", *p, *q);
return 0;
}
```
输入a和b的值后,程序会先判断a和b的大小,如果a小于b,则交换p和q的指向,这样*p指向的就是较大的数,而*q指向的是较小的数,最后通过指针间接访问变量的值来输出a和b。
阅读全文