C语言,用指针方法编写一个函数,将 3 个整数按由小到大进行排序。在主函数中输入 3 个整数,通过 调用该函数实现排序,再输出排序的结果。 若要实现将输入的 3 个字符串按由小到大进行排序,该怎么处理(运行时输入的 3 个字 符串分别为“Student”,“C language”,“China”) ?这 2 种处理有什么不同?例如: (1)怎样得到指向整数(或字符串)的指针? (2)怎样比较两个整数(或字符串)的大小? (3)怎样交换两个整数(或字符串)?
时间: 2024-03-14 11:43:46 浏览: 40
以下是 C 语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
void sort_int(int *a, int *b, int *c) {
int tmp;
if (*a > *b) {
tmp = *a;
*a = *b;
*b = tmp;
}
if (*b > *c) {
tmp = *b;
*b = *c;
*c = tmp;
}
if (*a > *b) {
tmp = *a;
*a = *b;
*b = tmp;
}
}
void sort_str(char **a, char **b, char **c) {
char *tmp;
if (strcmp(*a, *b) > 0) {
tmp = *a;
*a = *b;
*b = tmp;
}
if (strcmp(*b, *c) > 0) {
tmp = *b;
*b = *c;
*c = tmp;
}
if (strcmp(*a, *b) > 0) {
tmp = *a;
*a = *b;
*b = tmp;
}
}
int main() {
int a, b, c;
printf("请输入三个整数:");
scanf("%d %d %d", &a, &b, &c);
sort_int(&a, &b, &c);
printf("排序后的结果为:%d %d %d\n", a, b, c);
char *s1 = "Student";
char *s2 = "C language";
char *s3 = "China";
printf("请输入三个字符串:");
scanf("%s %s %s", s1, s2, s3);
sort_str(&s1, &s2, &s3);
printf("排序后的结果为:%s %s %s\n", s1, s2, s3);
return 0;
}
```
在这个代码实现中:
1. 对于整数排序,我们定义了一个 `sort_int` 函数,接收三个整数的指针,通过比较和交换,将三个整数按由小到大进行排序。
2. 对于字符串排序,我们定义了一个 `sort_str` 函数,接收三个字符串的指针,通过比较和交换,将三个字符串按由小到大进行排序。需要注意的是,我们使用了 `strcmp` 函数来比较两个字符串的大小。
3. 在主函数中,我们首先输入三个整数和三个字符串,然后分别调用 `sort_int` 和 `sort_str` 函数进行排序,最后输出排序后的结果。
两种处理的主要不同点在于:
1. 获取指向整数的指针和获取指向字符串的指针的方式不同。对于整数,我们可以直接使用 `&` 运算符获取指向整数的指针;对于字符串,我们需要使用指向指针的指针来获取指向字符串的指针。
2. 比较两个整数的大小可以直接使用 `<` 或 `>` 运算符;比较两个字符串的大小需要使用 `strcmp` 函数。
3. 交换两个整数的值可以通过使用中间变量来实现;交换两个字符串的值需要使用指向指针的指针来交换。
阅读全文