用vs的c语言输入10个字符串,编写程序将它们按字符串长度进行升序排列,完整代码
时间: 2024-11-06 14:22:17 浏览: 27
C语言程序设计-对长度为7个的字符串BdsinAD,将字符按ASCII码升序排序,结果ABDdins。
5星 · 资源好评率100%
在Visual Studio中使用C语言,你可以使用数组和qsort函数(标准库提供的快速排序算法)来实现这个功能。以下是完整的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义比较函数,用于字符串长度的升序排列
int compare(const void* a, const void* b) {
return strcmp(*(const char**)a, *(const char**)b);
}
int main() {
// 输入10个字符串
char str[10][50]; // 假设每个字符串不超过49个字符
int i;
for (i = 0; i < 10; i++) {
printf("请输入第 %d 个字符串:", i + 1);
fgets(str[i], sizeof(str[i]), stdin); // 注意去掉换行符
str[i][strcspn(str[i], "\n")] = '\0'; // 删除换行符
}
// 按字符串长度排序
char** sorted_str = malloc(10 * sizeof(char*));
memcpy(sorted_str, str, sizeof(str)); // 先复制原始字符串地址到新数组
qsort(sorted_str, 10, sizeof(char*), compare);
// 打印排序后的字符串
printf("排序后的字符串(按长度升序):\n");
for (i = 0; i < 10; i++) {
printf("%s ", sorted_str[i]);
}
printf("\n");
// 释放内存
free(sorted_str);
return 0;
}
```
在这个程序中,`compare`函数是用于qsort的,它会根据两个字符串的实际内容进行比较。然后通过`qsort`对数组进行了排序。
阅读全文