#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; }找出错误并修改
时间: 2024-03-13 17:42:26 浏览: 25
有两处错误:
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;
}
```
相关问题
#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 /****=*****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;
}
```