字符串排序
发布日期:2021-06-29 11:18:00 浏览次数:3 分类:技术文章

本文共 1717 字,大约阅读时间需要 5 分钟。

本题要求编写程序,读入5个字符串,按由小到大的顺序输出。

输入格式:

输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。

输出格式:

按照以下格式输出排序后的结果:

After sorted:

每行一个字符串

输入样例:

red yellow blue green white

输出样例:

After sorted:bluegreenredwhiteyellow

思路一:用一个二维数组a[5][100]记录五个字符串,用b[5]记录对应字符串是否已经排序,用c[5]记录排序好的字符串下标。排序算法是拿一个未排序的字符与其他所有未排序的字符串依次比较,得到最小的字符串下标,记录到c[5]数组中,再将其记录为已排序。(算法比较繁琐)

#include 
#include
int main() {
char a[5][100]; int b[5] = {
0};//记录是否已经排序 int c[5];//记录排序好的下标 int i, j, min; for (i = 0; i < 5; i++) {
scanf("%s", &a[i]); } for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (b[j] == 0) {
//找到第一个未排序的字符串下标 min = j; break; } } for (j = 0; j < 5; j++) {
if (b[j] == 0 && strcmp(a[j], a[min]) <= 0) {
//找到最小的字符串的下标 min = j; } } c[i] = min;//记录下标 b[min] = 1;//标记已排序 } printf("After sorted:\n"); for (i = 0; i < 5; i++) {
printf("%s\n", a[c[i]]); } return 0;}

思路二:使用指针数组p,让p数组的每个指针分别指向a数组的对应的行。通过选择排序算法排序得到结果。

#include 
#include
int main() {
char a[5][100]; char *p[5]; int i, j, min; for (i = 0; i < 5; i++) {
scanf("%s", &a[i]); p[i] = a[i];//使p数组里的指针指向a数组的对应的行 } char *temp; //选择排序算法 for (i = 0; i < 4; i++) {
min = i; for (j = i + 1; j < 5; j++) {
if (strcmp(p[min], p[j]) > 0) {
min = j; } } temp = p[i]; p[i] = p[min]; p[min] = temp; } printf("After sorted:\n"); for (i = 0; i < 5; i++) {
printf("%s\n", p[i]); } return 0;}

转载地址:https://blog.csdn.net/zxc0074869/article/details/115188339 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:输出学生成绩
下一篇:字符串转换成十进制整数

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月14日 16时33分58秒