2、void swap2(int* a, int* b) int* t= a;a= b; b= t; int main() { inta= 10; int b= 20; swap2(&a, &b); printf(" a=%d b=%d\n", a, b);return O; } 迄行結果:a=_ b=_
时间: 2023-08-07 17:02:09 浏览: 114
这段代码存在一个错误,我来修正一下:
```c
void swap2(int* a, int* b) {
int* t = a;
a = b;
b = t;
}
int main() {
int a = 10;
int b = 20;
swap2(&a, &b);
printf("a=%d b=%d\n", a, b);
return 0;
}
```
这段代码的作用是交换两个整数变量的值。在 `swap2` 函数中,定义了一个指针变量 `t`,将 `a` 的地址赋值给 `t`,然后将 `a` 的值改为 `b` 的值,将 `b` 的值改为 `t` 所指向的值(也就是原来 `a` 的值)。在 `main` 函数中,先定义了两个整数变量 `a` 和 `b`,然后调用 `swap2` 函数交换它们的值,并输出交换后的结果。但是,由于在 `swap2` 函数中交换的是指针变量的值,而不是实际的变量值,所以最后输出的结果依然是原来的值,即:
```
a=10 b=20
```
相关问题
void swap2( int *px, int *py); int main (void) { int a = 1, b = 2; int *pa = &a, *pb = &b; swap2 (a, b); printf ("a=%d b=%d\n", a, b); //a=2 b=1 return 0; } void swap2 (int *px, int *py) { int t; t = *px; *px = *py; *py = t; } 找出上述程序错误的地方并改正.
我可以回答这个问题。这是一个函数和主函数的代码片段,函数名为 swap2,参数为两个指向整型变量的指针。函数的作用是交换指针所指向的两个变量的值。在主函数中,定义了两个整型变量 a 和 b,并分别赋值为 1 和 2。然后定义了一个指向整型变量的指针 pa,将其指向变量 a。
#include<stdio.h> void swap1(int *p1, int *p2) { int t; t = *p1; *p1 = *p2; *p2 = *p1; } void main() { int a = 3; int b = 5; int* pa = &a, * pb = &b; if (a < b) swap1(pa,pb); }
这段代码中的swap1函数实现的是交换两个整数的值,但是代码中存在问题。在交换两个整数的值时,需要将第一个整数的值存储到一个临时变量中,然后再将第二个整数的值赋给第一个整数,最后再将临时变量的值赋给第二个整数。但是代码中的第三行 "*p2 = *p1;" 实际上是将第一个整数的值赋给了第二个整数,这样会导致两个整数的值相同,而不是实现交换。正确的代码应该是:
```
void swap1(int *p1, int *p2) {
int t;
t = *p1;
*p1 = *p2;
*p2 = t;
}
```
此外,main函数中没有输出结果的语句,你可以添加一个printf语句来输出交换后的结果。
阅读全文