解释#include void swap(int *a, int *b) { int *t, t=a; a=b; b=t; } main() { int i=2, j=5, *p=&i, *q=&j; swap(p,q); printf("%d %d\n", *p,*q) }
时间: 2024-01-29 18:03:07 浏览: 63
这是一个C语言程序,实现了一个交换两个整数的函数 `swap`。该函数接受两个整型指针作为参数,通过指针交换指向的两个整数的值。
在主函数中,定义了两个整数变量 i 和 j,以及两个指向这两个变量的指针 p 和 q。然后调用 swap 函数,传递 p 和 q 作为参数,实现了 i 和 j 的值的交换。
最后使用 printf 函数输出交换后的结果。由于 swap 函数中实现的是指针交换,所以输出结果应该为 "5 2"。
相关问题
【程序改错】 功能:以下程序把两个数按由大到小的顺序输出来. #include stdio.h /****=*****ERROR*===* void swap(int *p1*p2) int p; p=*p1;*p1=*p2;*p2=p;
【程序改错】
功能:以下程序把两个数按由大到小的顺序输出来.
1. 缺少了头文件的尖括号 "<>"。
2. swap函数的参数中,指针类型的声明缺少了逗号。
3. swap函数中,变量p没有声明类型。
4. swap函数中,变量p的赋值语句缺少了分号。
5. swap函数中,指针变量*p1和*p2所指向的值应该互换。
改正后的程序如下:
```c
#include <stdio.h>
void swap(int *p1, int *p2);
int main(void) {
int a, b;
scanf("%d%d", &a, &b);
if (a < b) {
swap(&a, &b);
}
printf("%d %d\n", a, b);
return 0;
}
void swap(int *p1, int *p2) {
int p = *p1;
*p1 = *p2;
*p2 = p;
}
```
33、以下程序的运行结果是 -• #include void swap(int*pl, int*p2) {int p; p=*pl; *pl=*p2; *p2=p; } int main() fint a=5, b=7, *ptrl, *ptr2; ptri=&a; ptr2=8b; swap(ptrI, ptr2); print f"*ptrl=%d, *ptr2=%dn", *ptri, *ptr2); print f("a=%d, b=%dr", a, b); return(0); }
程序中有一些错误,正确的程序应该是这样的:
```
#include <stdio.h>
void swap(int *pl, int *p2) {
int p;
p = *pl;
*pl = *p2;
*p2 = p;
}
int main() {
int a = 5, b = 7, *ptr1, *ptr2;
ptr1 = &a;
ptr2 = &b;
swap(ptr1, ptr2);
printf("*ptr1=%d, *ptr2=%d\n", *ptr1, *ptr2);
printf("a=%d, b=%d\n", a, b);
return 0;
}
```
程序的运行结果是:
```
*ptr1=7, *ptr2=5
a=7, b=5
```
程序中定义了一个函数 `swap`,它接受两个指向整数的指针作为参数,交换这两个指针所指向的整数的值。
在 `main` 函数中,定义了两个整数变量 `a` 和 `b`,并定义了两个指向整数的指针变量 `ptr1` 和 `ptr2`,分别指向 `a` 和 `b`。
然后调用 `swap` 函数,将 `ptr1` 和 `ptr2` 作为参数传递给它,交换它们所指向的整数的值。
最后输出 `ptr1` 和 `ptr2` 所指向的整数的值,以及 `a` 和 `b` 的值。由于在 `swap` 函数中交换了 `ptr1` 和 `ptr2` 所指向的整数的值,因此输出结果中 `*ptr1` 和 `*ptr2` 的值已经发生了交换,而 `a` 和 `b` 的值也相应地发生了交换。
阅读全文