程序设计,输入5个字符串,用指针实现按字母顺序由大到小对字符串排序后输出。
时间: 2024-02-03 10:15:11 浏览: 71
c代码-9、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列, 再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现。
以下是一个示例程序,它使用指针来对输入的5个字符串进行排序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
void sort_strings(char **strings, int n);
int main() {
char *strings[5];
char buffer[MAX_LEN];
// 读入5个字符串
for (int i = 0; i < 5; i++) {
printf("Enter string %d: ", i+1);
fgets(buffer, MAX_LEN, stdin);
// 去掉换行符
buffer[strcspn(buffer, "\n")] = '\0';
// 分配内存并复制字符串
strings[i] = malloc(strlen(buffer) + 1);
strcpy(strings[i], buffer);
}
// 对字符串进行排序
sort_strings(strings, 5);
// 输出排序后的字符串
printf("\nSorted strings:\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", strings[i]);
free(strings[i]); // 释放内存
}
return 0;
}
// 将字符串按字母顺序由大到小排序
void sort_strings(char **strings, int n) {
char *temp;
for (int i = 0; i < n-1; i++) {
for (int j = i+1; j < n; j++) {
if (strcmp(strings[i], strings[j]) < 0) {
// 交换字符串
temp = strings[i];
strings[i] = strings[j];
strings[j] = temp;
}
}
}
}
```
运行示例:
```
Enter string 1: apple
Enter string 2: banana
Enter string 3: orange
Enter string 4: pear
Enter string 5: pineapple
Sorted strings:
pineapple
orange
pear
banana
apple
```
阅读全文