#include <stdio.h> void swap( int *pl,int *p2) { int p; p=*pl; *p1=*p2; *p2=p; } void main() { int a,b; scanf(" %d%d ",&a, &b);
时间: 2023-08-07 08:08:27 浏览: 181
这段代码存在几个问题:
1. 函数 swap 的参数名应该是 p1 和 p2,而非 pl 和 p2。
2. 函数 swap 中的变量名 p 和参数名 p2 重复。
3. 函数 swap 中交换两个变量的语句有误,应该是 *p1 = *p2; *p2 = p;。
4. 函数 main 中没有调用 swap 函数。
5. scanf 函数中的格式化字符串多了一个空格,应该改为 scanf("%d%d", &a, &b);。
修正后的代码如下:
```c
#include <stdio.h>
void swap(int *p1, int *p2) {
int tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
int main() {
int a, b;
scanf("%d%d", &a, &b);
swap(&a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
```
输入例如:
```
1 2
```
输出结果为:
```
a = 2, b = 1
```
相关问题
#include<stdio.h> void swap(int *p1.int *p2) { int *p; p=p1; p1=p2; p2=p; } int main() { int a,b,*pt1,*pt2; scanf("%d,%d",&a,&b); pt1=&a; pt2=&b; if(a<b) swap(pt1;pt2); printf("%d,%d\n",*pt1,*pt2); return 0; }找出错误并修改
有两处错误:
1. 函数 `swap` 的参数类型应该是 `int *p1, int *p2`,而不是 `int *p1.int *p2`。
2. 函数 `swap` 中交换指针指向的值的语句应该是 `int temp = *p1; *p1 = *p2; *p2 = temp;`,而不是 `p=p1; p1=p2; p2=p;`。
修改后的代码如下:
```c
#include <stdio.h>
void swap(int *p1, int *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int a, b, *pt1, *pt2;
scanf("%d,%d", &a, &b);
pt1 = &a;
pt2 = &b;
if (a < b) {
swap(pt1, pt2);
}
printf("%d,%d\n", *pt1, *pt2);
return 0;
}
```
将下列程序_______的内容填写到程序处,使程序完整、正确。 以下程序的功能是调用swap( ) 函数,交换a,b的值。 #include <stdio.h> void swap( int *p1,int *p2) { int p; p=*p1; *p1=*p2; *p2=p; } void main() { int a,b; scanf(" %d%d ",&a,&b); _____________; printf(" a=%d,b=%d ",a,b); }
下列程序中应该调用swap函数并将a和b的地址传递给它,以实现交换两个变量的值。修改后的程序如下:
```c
#include <stdio.h>
void swap(int *p1, int *p2) {
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
}
int main() {
int a, b;
scanf("%d%d", &a, &b);
swap(&a, &b); // 调用swap函数交换a和b的值
printf("a=%d,b=%d", a, b);
return 0;
}
```
在程序中,首先通过scanf函数输入a和b的值,然后调用swap函数交换a和b的值。最后输出交换后的a和b的值。
阅读全文