编写一个函数 swap(int *a, int *b),使用指针交换两个整数的值。在 main 函数中输入两个数,调用 swap 函数并输出交换后的结果。
时间: 2024-10-28 17:08:48 浏览: 145
swap 函数的目的是使用指针直接操作内存,将两个整数 a 和 b 的值交换。下面是一个 C++ 示例:
```cpp
#include <iostream>
// 定义 swap 函数,接受指向整数的指针作为参数
void swap(int* a, int* b) {
// 使用临时变量保存 a 的值
int temp = *a;
// 将 a 的值赋给 b
*a = *b;
// 将 b 的值赋给临时变量
*b = temp;
}
int main() {
int num1, num2;
// 输入两个整数
std::cout << "请输入第一个数字: ";
std::cin >> num1;
std::cout << "请输入第二个数字: ";
std::cin >> num2;
// 调用 swap 函数交换 num1 和 num2
swap(&num1, &num2);
// 输出交换后的结果
std::cout << "交换后的结果: num1=" << num1 << ", num2=" << num2 << std::endl;
return 0;
}
```
在这个程序中,通过 `&` 操作符获取整数的地址,并传递给 `swap` 函数的指针参数。在 `swap` 函数内部,实际上是对这两个地址所对应的值进行了互换。
相关问题
任意输入两个整数,编写三个函数分别实现:(1)计算两个数的加法和;(2)计算两个整数的减法差;(3)交换这两个整数的数值。要求用“函数指针”调用这三个函数,结果在主函数中输出。目前已编写完成main函数,请编程实现sum函数、minus函数和swap函数,函数功能和要求如下所示。 /* @Filename: ex601.c @Author: Ju Chengdong @Version: 1.0 @Date: 2021-03-18 @Description: Simple Application of Pointer */ #include <stdio.h> /*主函数*/ int main(void){ int sum(int *a, int *b); int minus(int *a, int *b); void swap(int *a, int *b); int a, b; int *pa = &a, *pb = &b; scanf("%d,%d", &a, &b); int (*p)(int *, int *); p = sum; printf("%d", (*p)(pa, pb)); p = minus; printf("\n%d", (*p)(pa, pb)); void (*q)(int *,int *); q = swap; (*q)(pa, pb); printf("\n%d,%d", a, b); return 1; } /* * 函数名称:sum * 函数功能:对两个整数进行加法计算 * 形式参数:a,整型指针 * 形式参数:b,整型指针 * 返 回 值:int型,为两个整数的加法和 */ int sum(int *a, int *b){ //请编程实现本函数 } /* * 函数名称:minus * 函数功能:对两个整数进行减法计算 * 形式参数:a,整型指针 * 形式参数:b,整型指针 * 返 回 值:int型,为两个整数的减法差 */ int minus(int *a, int *b){ //请编程实现本函数 } /* * 函数名称:swap * 函数功能:交换两个整数数值 * 形式参数:a,整型指针 * 形式参数:b,整型指针 * 返 回 值:无 */ void swap(int *a, int *b){ //请编程实现本函数 } 注:不得使用全局变量。
完成代码如下:
```c
#include <stdio.h>
int sum(int *a, int *b); // 声明sum函数
int minus(int *a, int *b); // 声明minus函数
void swap(int *a, int *b); // 声明swap函数
int main(void){
int a, b;
int *pa = &a, *pb = &b;
scanf("%d,%d", &a, &b);
int (*p)(int *, int *);
p = sum;
printf("%d", (*p)(pa, pb));
p = minus;
printf("\n%d", (*p)(pa, pb));
void (*q)(int *,int *);
q = swap;
(*q)(pa, pb);
printf("\n%d,%d", a, b);
return 1;
}
int sum(int *a, int *b){
return *a + *b; // 返回a和b的和
}
int minus(int *a, int *b){
return *a - *b; // 返回a和b的差
}
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp; // 交换a和b的值
}
```
运行结果:
输入:5,3
输出:8
2
3,5
实现一个函数void swap(int* a, int* b),使交换*a和*b的值。 在main函数中输入两个正整数,调用swap函数交换两个变量地址中存储的值,然后输出交换后的两个值。 注: 请使用指针变量来完成功能,不要直接颠倒输出C++
在C++中,你可以通过指针来实现这个`swap`函数。下面是一个简单的示例:
```cpp
#include <iostream>
// 定义swap函数,接受两个指向整数的指针作为参数
void swap(int* a, int* b) {
// 使用临时变量保存a的值
int temp = *a;
// 将a的值改为b的值
*a = *b;
// 将b的值改为temp(即原来的a的值)
*b = temp;
}
int main() {
// 输入两个整数
int num1, num2;
std::cout << "请输入第一个整数: ";
std::cin >> num1;
std::cout << "请输入第二个整数: ";
std::cin >> num2;
// 获取这两个数字的地址并传递给swap函数
int* ptr1 = &num1;
int* ptr2 = &num2;
// 调用swap函数交换它们的值
swap(ptr1, ptr2);
// 输出交换后的结果
std::cout << "交换后的第一个整数: " << *ptr1 << "\n";
std::cout << "交换后的第二个整数: " << *ptr2 << "\n";
return 0;
}
```
当你运行这个程序时,它会提示你输入两个整数,然后交换它们并打印出结果。注意,这里的`swap`函数是在内存地址上操作,而不是交换数字本身。
阅读全文