用c语言编程输入五个英文姓名单词,输出按升序排列好的; 例如: 输入:barton daniel laura clark bard 输出:bard barton clark daniel laura
时间: 2024-03-09 22:50:09 浏览: 15
可以使用 C 语言中的字符串和排序函数来实现该功能。具体代码如下:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_NAME_LEN 20
#define MAX_NAMES 5
int cmp(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
int main() {
char names[MAX_NAMES][MAX_NAME_LEN];
char *ptrs[MAX_NAMES];
printf("请输入五个英文姓名单词(每个名字长度不超过 %d 个字符):\n", MAX_NAME_LEN);
for (int i = 0; i < MAX_NAMES; i++) {
scanf("%s", names[i]);
ptrs[i] = names[i];
}
qsort(ptrs, MAX_NAMES, sizeof(char *), cmp);
printf("按升序排列后的姓名单词为:\n");
for (int i = 0; i < MAX_NAMES; i++) {
printf("%s ", ptrs[i]);
}
return 0;
}
```
首先定义了每个名字最长为 20 个字符,最多输入 5 个名字的限制。然后使用 `scanf` 函数接受用户输入的五个名字,并将这些名字存储在 `names` 数组中。同时,为了方便排序,还需要将每个名字的地址存储在指针数组 `ptrs` 中。
接着使用了 C 语言中的快速排序函数 `qsort` 对 `ptrs` 数组进行排序,排序的比较函数是 `cmp` 函数,它会根据两个字符串的大小关系返回一个值,以便 `qsort` 进行排序。
最后,遍历排好序的指针数组 `ptrs` 并依次输出每个名字即可。