前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C语言题解】输入n(1~9),再输入n个长度不超过50的字符串,给这n个字符串排序并输出它们

【C语言题解】输入n(1~9),再输入n个长度不超过50的字符串,给这n个字符串排序并输出它们

作者头像
用户11162265
发布2024-06-14 14:46:45
460
发布2024-06-14 14:46:45
举报
文章被收录于专栏:C语言C语言

解题思路:

首先:使用一个二维字符数组来存储输入的字符串。由于n的范围是1到9,我们可以直接定义一个固定大小的二维数组。

读取输入

  • 然后读取整数n,并检查其是否在有效范围内。
  • 然后使用循环读取n个字符串。可以使用fgets函数来读取字符串,同时要注意处理字符串末尾可能存在的换行符。(fgets不会忽略空格及空格后面内容,而scanf会忽略)

排序字符串:选择一个合适的排序算法对字符串进行排序。由于字符串的排序通常基于字典序,我使用了strcmp函数来比较两个字符串的大小。这里我采用了冒泡排序来实现。

代码

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>
void Input(char p[][50], int len)
{
	int i;
	for (i = 0; i < len; i++)
	{
		fgets(p[i],50,stdin);
		p[i][strcspn(p[i], "\n")] = 0;//移除字符末尾的换行符
	}
}
void Output(char (*p)[50], int len)
{
	int i;
	for (i = 0; i < len; i++)
		//puts(p[i]);//两者效果一样
		printf("%s\n",p[i]);
}
void Sort(char(*p)[50], int len)//排序
{
	int i = 0;
	char temp[50];
	for (i; i < len-1; i++)
	{
		int j = 0;
		for (j; j < len - 1 - i; j++) 
		{    
			if (strcmp(p[j], p[j + 1]) > 0)//使用strcmp函数来比较
			{
				strcpy(temp, p[j]);
				strcpy(p[j], p[j+1]);
				strcpy(p[j+1], temp);
			}
		}
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	char arr[10][50];
	Input(arr,n);
	Output(arr, n);
	Sort(arr, n);
	printf("排序后:\n");
	Output(arr, n);
	return 0;
}

🎉🎉本次的内容结束啦,欢迎有问题评论区讨论。

😘💕希望大家能够三连支持,你们的鼓励是我前进的动力

🌹🌹谢谢观看!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档