c语言输入n个字符串(n<=10,每个字符串长度均小于20),按照从小到大的顺序输出这些字符串。
时间: 2024-02-27 19:57:13 浏览: 73
可以使用字符串数组和冒泡排序来实现这个功能。具体步骤如下:
1. 定义一个字符串数组,用来存储输入的n个字符串。
2. 使用循环语句,接收n个字符串的输入。
3. 使用冒泡排序算法,对字符串数组进行排序。每次比较相邻的两个字符串,如果前一个字符串的字典序比后一个字符串大,则交换它们的位置。重复n-1次排序即可。
4. 输出排好序的字符串数组。
下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
int main()
{
int n,i,j;
char str[10][20],temp[20];
printf("请输入字符串的个数:");
scanf("%d",&n);
printf("请输入%d个字符串:\n",n);
for(i=0;i<n;i++)
{
scanf("%s",str[i]); // 使用%s格式化符接收字符串的输入
}
for(i=0;i<n-1;i++) // 冒泡排序算法,按照字典序从小到大排序
{
for(j=0;j<n-1-i;j++)
{
if(strcmp(str[j],str[j+1])>0)
{
strcpy(temp,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],temp);
}
}
}
printf("按照字典序从小到大排序后的字符串为:\n");
for(i=0;i<n;i++)
{
printf("%s\n",str[i]); // 输出排好序的字符串数组
}
return 0;
}
```
需要注意的是,字符串数组的定义方式是`char str[10][20]`,其中第一个维度10表示字符串数组的长度,第二个维度20表示每个字符串的最大长度。在接收字符串的输入时,可以使用`scanf("%s",str[i])`的方式,但是这种方式会存在输入字符串长度超过数组长度的风险。因此,建议使用`fgets`函数来接收字符串的输入,确保输入的字符串长度不超过数组的大小。
阅读全文