c程序:写一个函数swap(int *x, int *y)交换指针变量x指向的变量和y指向的变量,然后在主函数中定义两个变量a、b并输入它们的值,以它们的地址为实参调用swap函数后依次输出a和b的值。
时间: 2024-02-24 21:57:05 浏览: 49
下面是实现上述要求的 C 程序:
```c
#include <stdio.h>
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = 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 的函数,该函数接受两个 int 类型的指针变量作为参数,用于交换这两个变量所指向的值。在主函数中,定义了两个 int 类型的变量 a 和 b,并通过 scanf 函数从标准输入中读取它们的值。接着,调用 swap 函数,将 a 和 b 的地址作为实参传入,实现交换它们的值。最后,使用 printf 函数输出交换前后的 a 和 b 的值。
运行程序,输入 a 和 b 的值,即可看到交换前后的结果。
相关问题
请编写函数,交换两个整数的值。 函数原型 void IntSwap(int *x, int *y); 说明:参数 x 和 y 为指示两个整型变量的指针。函数交换两个指针所指整型
好的,以下是一个简单的函数实现,可以交换两个整型变量的值:
```c
void IntSwap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
```
这个函数的作用是将传入的两个指针所指向的整型变量的值进行交换。函数内部使用了一个临时变量 `temp` 来保存其中一个整型变量的值,然后将另一个整型变量的值赋给这个变量,最后再将临时变量的值赋给第二个整型变量。
使用这个函数时,只需要将要交换的两个整型变量的地址作为参数传递即可。例如:
```c
int a = 10, b = 20;
IntSwap(&a, &b);
printf("a=%d, b=%d\n", a, b); // 输出 a=20, b=10
```
这个例子中,我们首先定义了两个整型变量 `a` 和 `b`,然后调用了 `IntSwap` 函数来交换它们的值。最后再输出两个整型变量的值,可以看到它们已经被成功交换了。
任意输入两个整数,编写三个函数分别实现:(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
阅读全文