编写函数实现两个数的交换。 #include <stdio.h> int swap(int *p1, int *p2) { int *t; *t = *p1 ; *p1 = *p2; *p2 = *t; } int main( ) { int a, b, *pa, *pb ; scanf("%d%d",pa,pb); printf("交换前a=%d,b=%d", a, b); swap( pa, pb) ; printf("\n交换后a=%d,b=%d ", a, b); return 0; } 【输入形式】 a b 【输出形式】 交换结果 【样例输入】 5 8
时间: 2024-03-13 09:43:08 浏览: 182
以下是C语言的实现代码:
```c
#include <stdio.h>
int swap(int *p1, int *p2);
int main()
{
int a, b, *pa = &a, *pb = &b;
scanf("%d%d", pa, pb);
printf("交换前a=%d,b=%d\n", a, b);
swap(pa, pb);
printf("交换后a=%d,b=%d\n", a, b);
return 0;
}
int swap(int *p1, int *p2)
{
int t = *p1;
*p1 = *p2;
*p2 = t;
}
```
输入样例:
```
5 8
```
输出样例:
```
交换前a=5,b=8
交换后a=8,b=5
```
相关问题
#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);
这段代码存在几个问题:
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 t; t=p1; p1=p2; p2=t; } int main() { int a,b,*p1,*p2; scanf("%d %d",a,b); *p1=&a; *p2=&b; swap(p1,p2); printf("%d %d",*p1,*p2); return 0; } 请改正程序的错误
这段代码有几个错误,以下是修正后的代码:
```c++
#include <stdio.h>
void swap(int *p1, int *p2) {
int t;
t = *p1; // 这里应该取指针所指的值
*p1 = *p2;
*p2 = t;
}
int main() {
int a, b, *p1, *p2;
scanf("%d %d", &a, &b); // 修正了输入格式
p1 = &a;
p2 = &b;
swap(p1, p2);
printf("%d %d", *p1, *p2);
return 0;
}
```
主要的问题有:
1. `swap` 函数中,指针所指的值没有交换,而是交换了指针本身,应该改为:
```c++
t = *p1;
*p1 = *p2;
*p2 = t;
```
2. `scanf` 函数的第二个参数应该是 `&a` 和 `&b`,表示将输入的值存储到变量 `a` 和 `b` 的地址中。
```c++
scanf("%d %d", &a, &b);
```
3. 在程序中没有为指针 `p1` 和 `p2` 分配内存,应该改为:
```c++
int *p1, *p2;
p1 = &a;
p2 = &b;
```
阅读全文