、编写一个函数,将3个整数按由小到大进行排序。在主函数中输入3个整数,通过调用该函数实现排序,再输出排序的结果。(运行时输入的3个整数分别为20,-54,67) 若要实现将输入的3个字符串按由小到大进行排序,该怎么处理(运行时输入的3个字符串分别为“Student”,“C language”,“China”) ?这2种处理有什么不同?例如: (1)怎样得到指向整数(或字符串)的指针? (2)怎样比较两个整数(或字符串)的大小? (3)怎样交换两个整数(或字符串)?
时间: 2024-01-15 13:02:57 浏览: 59
好的,我明白了您的问题。以下是我的回答:
首先,针对您的第一个问题,我可以提供以下的函数代码来实现整数的排序:
```c
#include <stdio.h>
void sort(int *a, int *b, int *c);
int main() {
int x = 20, y = -54, z = 67;
sort(&x, &y, &z);
printf("%d %d %d", x, y, z);
return 0;
}
void sort(int *a, int *b, int *c) {
int temp;
if (*a > *b) {
temp = *a;
*a = *b;
*b = temp;
}
if (*a > *c) {
temp = *a;
*a = *c;
*c = temp;
}
if (*b > *c) {
temp = *b;
*b = *c;
*c = temp;
}
}
```
对于您的第二个问题,如果要将字符串按照由小到大的顺序进行排序,可以使用C语言内置的字符串比较函数strcmp,该函数会返回一个整数,表示两个字符串的大小比较结果。如果返回值为负数,则第一个字符串小于第二个字符串;如果返回值为正数,则第一个字符串大于第二个字符串;如果返回值为0,则两个字符串相等。
以下是将字符串按照由小到大的顺序进行排序的代码:
```c
#include <stdio.h>
#include <string.h>
void sort(char **a, char **b, char **c);
int main() {
char *x = "Student", *y = "C language", *z = "China";
sort(&x, &y, &z);
printf("%s %s %s", x, y, z);
return 0;
}
void sort(char **a, char **b, char **c) {
char *temp;
if (strcmp(*a, *b) > 0) {
temp = *a;
*a = *b;
*b = temp;
}
if (strcmp(*a, *c) > 0) {
temp = *a;
*a = *c;
*c = temp;
}
if (strcmp(*b, *c) > 0) {
temp = *b;
*b = *c;
*c = temp;
}
}
```
与整数的排序不同,字符串的排序需要使用指向指针的指针来进行传参,同时需要使用strcmp函数进行字符串的比较。
阅读全文
相关推荐
















