C语言,编写一个函数,将 3 个整数按由小到大进行排序。在主函数中输入 3 个整数,通过 调用该函数实现排序,再输出排序的结果。 若要实现将输入的 3 个字符串按由小到大进行排序,该怎么处理?这 2 种处理有什么不同?例如: (1)怎样得到指向整数(或字符串)的指针? (2)怎样比较两个整数(或字符串)的大小? (3)怎样交换两个整数(或字符串)?
时间: 2024-03-07 21:49:40 浏览: 124
下面是将 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;
printf("请输入 3 个整数:");
scanf("%d%d%d", &a, &b, &c);
sort(&a, &b, &c);
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[100];
strcpy(t, a);
strcpy(a, b);
strcpy(b, t);
}
if (strcmp(a, c) > 0) {
char t[100];
strcpy(t, a);
strcpy(a, c);
strcpy(c, t);
}
if (strcmp(b, c) > 0) {
char t[100];
strcpy(t, b);
strcpy(b, c);
strcpy(c, t);
}
}
int main() {
char a[100], b[100], c[100];
printf("请输入 3 个字符串:");
scanf("%s%s%s", a, b, c);
sort(a, b, c);
printf("排序后的结果为:%s %s %s\n", a, b, c);
return 0;
}
```
这里的不同之处主要在于:
1. 指向整数的指针可以通过在变量名前加上 `&` 取得,而指向字符串的指针直接使用字符串变量名即可。
2. 比较两个整数大小可以直接使用 `<` 或 `>` 运算符,而比较两个字符串大小需要使用 C 语言标准库中的 `strcmp` 函数。
3. 交换两个整数只需要使用一个临时变量,而交换两个字符串需要使用 C 语言标准库中的 `strcpy` 函数。
阅读全文