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

 

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

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


解题思路:

  1. 首先:使用一个二维字符数组来存储输入的字符串。由于n的范围是1到9,我们可以直接定义一个固定大小的二维数组。
  2. 读取输入
    • 然后读取整数n,并检查其是否在有效范围内。
    • 然后使用循环读取n个字符串。可以使用fgets函数来读取字符串,同时要注意处理字符串末尾可能存在的换行符。(fgets不会忽略空格及空格后面内容,而scanf会忽略)
  3. 排序字符串:选择一个合适的排序算法对字符串进行排序。由于字符串的排序通常基于字典序,我使用了strcmp函数来比较两个字符串的大小。这里我采用了冒泡排序来实现。
  4. 代码
    #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;
    }

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

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

    🌹🌹谢谢观看!

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 06:12:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 06:12:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 06:12:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 06:12:05       20 阅读

热门阅读

  1. mysql字段乱序 information_schema

    2024-05-12 06:12:05       10 阅读
  2. MySQL 事务的隔离级别

    2024-05-12 06:12:05       9 阅读
  3. Php 如何使用进程

    2024-05-12 06:12:05       7 阅读
  4. 常用设计模式

    2024-05-12 06:12:05       10 阅读