int main() {void swap(int*p1,int*p2,int*p3); int a,b,c; int *pointer_1,*pointer_2,*pointer_3; printf("pleasr entet a,b and c:"); scanf("%d,%d,%d",&a,&b,&c); pointer_1=&a; pointer_2=&b; pointer_3=&c; if(a>b) (pointer_1,pointer_2); if(a>c) (pointer_1,pointer_3); if(b>c) (pointer_2,pointer_3); print("顺序是:%d,%d,%d\n",a,b,c); return 0; } void swap(int*p1,int*p2) {int temp; temp=*p1; *p1=*p2; *p2=temp; }这个代码错在哪里
时间: 2024-03-15 17:47:40 浏览: 63
这段代码存在以下几个问题:
1. 在主函数中调用了 `swap` 函数,但是 `swap` 函数的定义在主函数后面,需要将 `swap` 函数的定义放在主函数的前面。
2. 在 `if` 语句中调用 `swap` 函数时,使用了错误的语法。应该使用函数名加上参数列表的形式调用函数,即 `swap(pointer_1,pointer_2)`,而不是 `(pointer_1,pointer_2)` 这样的语法。
3. 在 `printf` 函数中,应该使用 `%d` 格式控制符来输出整数,而不是 `print` 这个函数名。
修正后的代码如下:
```c
#include <stdio.h>
void swap(int *p1, int *p2);
int main() {
int a, b, c;
int *pointer_1, *pointer_2, *pointer_3;
printf("please enter a,b and c:");
scanf("%d,%d,%d", &a, &b, &c);
pointer_1 = &a;
pointer_2 = &b;
pointer_3 = &c;
if (a > b)
swap(pointer_1, pointer_2);
if (a > c)
swap(pointer_1, pointer_3);
if (b > c)
swap(pointer_2, pointer_3);
printf("顺序是:%d,%d,%d\n", a, b, c);
return 0;
}
void swap(int *p1, int *p2) {
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
```
阅读全文