从键盘输入4个字符串(长度<20),存入二维字符数组中.然后对它们进行排序(假设按由小到大的顺序),最后输出排序后的个字符串.用C语言
时间: 2024-12-14 11:20:30 浏览: 7
cpp代码-(二维数组/字符串)将一组C++关键字存入二维数组,找出关键字中的最小者。
在C语言中,你可以使用`fgets()`函数从键盘获取输入的字符串,然后将它们存储在一个二维字符数组中。接着,你需要创建一个自定义的比较函数来实现字符串的排序,因为C语言的标准库并不直接包含字符串排序功能。这里是一个简单的示例,展示如何完成这个任务:
```c
#include <stdio.h>
#include <string.h>
// 自定义字符串比较函数,用于字典序从小到大排序
int compare_strings(const char *str1, const char *str2) {
while (*str1 && *str2 && *str1 == *str2) { // 直到找到第一个不相等的字符
str1++;
str2++;
}
return *str1 - *str2; // 如果str1先结束,则返回正数;反之负数;如果两者都结束,认为str1小于str2
}
void sort_strings(char strings[][20], int rows) {
for (int i = 0; i < rows - 1; i++) {
for (int j = 0; j < rows - 1 - i; j++) {
if (compare_strings(strings[j], strings[j + 1]) > 0) {
// 交换元素
char temp[20];
strcpy(temp, strings[j]);
strcpy(strings[j], strings[j + 1]);
strcpy(strings[j + 1], temp);
}
}
}
}
int main() {
int rows;
printf("请输入字符串行数: ");
scanf("%d", &rows);
char strings[rows][20]; // 二维字符数组
for (int i = 0; i < rows; i++) {
printf("请输入第 %d 行的字符串: ", i + 1);
fgets(strings[i], sizeof(strings[i]), stdin); // 注意去掉换行符
strings[i][strlen(strings[i]) - 1] = '\0'; // 因为fgets会多加一个'\n'
}
sort_strings(strings, rows);
printf("排序后的字符串:\n");
for (int i = 0; i < rows; i++) {
printf("%s\n", strings[i]);
}
return 0;
}
```
阅读全文