asdfghghjk xcfghyujkk aawertgbof asdfghghjk acfghyujkk xawertgbof根据上述运行结果修改下列程序#include <stdio.h> void sort(char *p1, char *p2, char *p3); int main() { char a[100],b[100],c[100],*p1,*p2,*p3; scanf("%s%s%s", &a, &b, &c); p1=a;p2=b;p3=c; sort(p1, p2, p3); printf("%s %s %s\n", a, b, c); return 0; } void sort(char *p1, char *p2, char *p3) { char t; if(strcmp(p1,p2)>0) { t = *p1; *p1 = *p2; *p2= t; } if(strcmp(p2,p3)>0) { t = *p2; *p2 = *p3; *p3 = t; } if(strcmp(p1,p3)>0) { t = *p3; *p1 = *p3; *p3 = t; } }
时间: 2024-03-13 15:43:52 浏览: 159
这段程序存在一些问题,需要修改。首先,scanf函数中不需要使用&符号,因为数组名本身就是指向数组首元素的指针,可以直接传递给函数。其次,在sort函数中交换字符时,应该使用指针操作,而不是单纯的字符变量交换。最后,sort函数中的if语句顺序有误,应该先比较p1和p3,再比较p1和p2,最后比较p2和p3。修正后的程序如下:
```c
#include <stdio.h>
#include <string.h>
void sort(char *p1, char *p2, char *p3);
int main() {
char a[100], b[100], c[100], *p1, *p2, *p3;
scanf("%s%s%s", a, b, c);
p1 = a;
p2 = b;
p3 = c;
sort(p1, p2, p3);
printf("%s %s %s\n", a, b, c);
return 0;
}
void sort(char *p1, char *p2, char *p3) {
char t;
if (strcmp(p1, p3) > 0) {
t = *p1;
*p1 = *p3;
*p3 = t;
}
if (strcmp(p1, p2) > 0) {
t = *p1;
*p1 = *p2;
*p2 = t;
}
if (strcmp(p2, p3) > 0) {
t = *p2;
*p2 = *p3;
*p3 = t;
}
}
```
阅读全文