🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊
🌈感谢大家的阅读、点赞、收藏和关注
解题思路:
- 首先:使用一个二维字符数组来存储输入的字符串。由于n的范围是1到9,我们可以直接定义一个固定大小的二维数组。
- 读取输入:
- 然后读取整数n,并检查其是否在有效范围内。
- 然后使用循环读取
n
个字符串。可以使用fgets
函数来读取字符串,同时要注意处理字符串末尾可能存在的换行符。(fgets不会忽略空格及空格后面内容,而scanf会忽略)
- 排序字符串:选择一个合适的排序算法对字符串进行排序。由于字符串的排序通常基于字典序,我使用了
strcmp
函数来比较两个字符串的大小。这里我采用了冒泡排序来实现。 - 代码
#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; }
🎉🎉本次的内容结束啦,欢迎有问题评论区讨论。
😘💕希望大家能够三连支持,你们的鼓励是我前进的动力
🌹🌹谢谢观看!