C语言,要求用指针方法处理。编写一个函数,将 3 个整数按由小到大进行排序。在主函数中输入 3 个整数,通过 调用该函数实现排序,再输出排序的结果。 若要实现将输入的 3 个字符串按由小到大进行排序,该怎么处理?这 2 种处理有什么不同?例如: (1)怎样得到指向整数(或字符串)的指针? (2)怎样比较两个整数(或字符串)的大小? (3)怎样交换两个整数(或字符串)?
时间: 2024-03-07 17:49:42 浏览: 96
下面是用指针方法处理将 3 个整数按由小到大进行排序的 C 语言代码:
```c
#include <stdio.h>
void sort(int *a, int *b, int *c) {
if (*a > *b) {
int t = *a;
*a = *b;
*b = t;
}
if (*a > *c) {
int t = *a;
*a = *c;
*c = t;
}
if (*b > *c) {
int t = *b;
*b = *c;
*c = t;
}
}
int main() {
int a, b, c;
int *pa = &a, *pb = &b, *pc = &c;
printf("请输入 3 个整数:");
scanf("%d%d%d", &a, &b, &c);
sort(pa, pb, pc);
printf("排序后的结果为:%d %d %d\n", a, b, c);
return 0;
}
```
如果要实现用指针方法处理将输入的 3 个字符串按由小到大进行排序,可以使用 C 语言标准库中的 `strcmp` 函数进行字符串比较。下面是相应的 C 语言代码:
```c
#include <stdio.h>
#include <string.h>
void sort(char *a, char *b, char *c) {
if (strcmp(a, b) > 0) {
char *t = a;
a = b;
b = t;
}
if (strcmp(a, c) > 0) {
char *t = a;
a = c;
c = t;
}
if (strcmp(b, c) > 0) {
char *t = b;
b = c;
c = t;
}
}
int main() {
char a[100], b[100], c[100];
char *pa = a, *pb = b, *pc = c;
printf("请输入 3 个字符串:");
scanf("%s%s%s", a, b, c);
sort(pa, pb, pc);
printf("排序后的结果为:%s %s %s\n", a, b, c);
return 0;
}
```
这里与前面的不同之处主要在于使用了指针变量来存储字符串的地址,并通过指针变量来进行字符串的比较和交换。对于指向整数的指针和指向字符串的指针,获取它们的方法是一样的,即使用取地址符 `&` 将变量地址赋给指针变量。比较两个整数大小可以直接使用 `<` 或 `>` 运算符,而比较两个字符串大小需要使用 C 语言标准库中的 `strcmp` 函数。交换两个整数只需要使用一个临时变量,而交换两个字符串需要使用指针变量来进行地址的交换。
阅读全文