【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;
    }

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

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

    🌹🌹谢谢观看!

相关推荐
曹牧8 分钟前
Java:强类型转换
开发语言·python
wuguan_11 分钟前
C#之线程
开发语言·c#
LXS_35714 分钟前
STL - 函数对象
开发语言·c++·算法
木千19 分钟前
Qt5.15.2安装MSVC2019编译器
开发语言·qt
仟濹23 分钟前
【Java加强】1 异常 | 打卡day1
java·开发语言·python
去往火星26 分钟前
Qt6 CMake 中引入 Qt Linguist 翻译功能
开发语言·qt
阿猿收手吧!30 分钟前
【C++】atmoic原子操作与并发安全全解析
开发语言·c++·安全
AllData公司负责人34 分钟前
【亲测好用】实时开发平台能力演示
java·c语言·数据库
pcm12356735 分钟前
设计C/S架构的IM通信软件(3)
java·c语言·架构
zz345729811335 分钟前
C语言基础概念7
c语言·开发语言