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

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊

🌈感谢大家的阅读、点赞、收藏和关注


解题思路:

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

  2. 读取输入

    • 然后读取整数n,并检查其是否在有效范围内。
    • 然后使用循环读取n个字符串。可以使用fgets函数来读取字符串,同时要注意处理字符串末尾可能存在的换行符。(fgets不会忽略空格及空格后面内容,而scanf会忽略)
  3. 排序字符串 :选择一个合适的排序算法对字符串进行排序。由于字符串的排序通常基于字典序,我使用了strcmp函数来比较两个字符串的大小。这里我采用了冒泡排序来实现。

  4. 代码

    cpp 复制代码
    #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;
    }

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

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

    🌹🌹谢谢观看!

相关推荐
乘风归趣25 分钟前
spire.doc在word中生成公式
java·开发语言·word
土拨鼠不是老鼠28 分钟前
windows 下 使用C++ 集成 zenoh
开发语言·c++
smilejingwei1 小时前
数据分析编程第五步:数据准备与整理
大数据·开发语言·数据分析·esprocspl
源远流长jerry1 小时前
STM32之Systick与基础定时器
c语言·stm32·单片机·嵌入式硬件
猿饵块1 小时前
stl--std::map
开发语言·c++·rpc
爱学习的小道长1 小时前
Python 比较huggingface_hub库的hf_hub_download函数和snapshot_download函数
开发语言·python
励志不掉头发的内向程序员1 小时前
STL库——vector(类模拟实现)
开发语言·c++
简单点了2 小时前
SM4加密算法
java·开发语言
aFakeProgramer3 小时前
使用 ROS2 构建客户端-服务器通信:一个简单的计算器示例
开发语言·python·ros2
姜太小白3 小时前
【VSCode】VSCode为Java C/S项目添加图形用户界面
java·c语言·vscode