c语言,求助大神! 从键盘上输入三个字符串,将这三个串从小到大排序。

高分请讲解下,c语言,求助大神! 从键盘上输入三个字符串,将这三个串从小到大排序。
最新回答
月下客

2024-06-06 02:30:58

C的字符串是用字符数组操作的,所以排序应该用指针数组完成,以避免字符串拷贝。由于只有3个字符串,用直接操作的办法而不用循环以避免不必要的开销;输入函数选用fgets,既可以方便地控制输入长度不越界,又能允许字符串中存在空格。代码如下:

#include "stdio.h"
#include "string.h"
int main(int argc,char *argv[]){
char s[3][200],*ps[3],*p;//声明指针数组ps以进行指针排序
printf("Input 3 strings('Enter' separated)...\n");//回车隔开以允许含空格
fgets(ps[0]=s[0],200,stdin);//使用fgets以控制字符串输入长度
fgets(ps[1]=s[1],200,stdin);
fgets(ps[2]=s[2],200,stdin);
if(strcmp(ps[0],ps[1])>0)//由于只有3个字符串,所以直接比较交换指针而不用循环
p=ps[0],ps[0]=ps[1],ps[1]=p;
if(strcmp(ps[0],ps[2])>0)
p=ps[0],ps[0]=ps[2],ps[2]=p;
if(strcmp(ps[1],ps[2])>0)
p=ps[1],ps[1]=ps[2],ps[2]=p;
printf("\nAfter ordering:\n%s%s%s",ps[0],ps[1],ps[2]);//直接输出排序后的字符串
printf("\n");
return 0;
}

试运行结果如下图:

︶ㄣ彯逸尐苏

2024-06-06 01:15:18

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char a[128],b[128],c[128];
    scanf("%s%s%s",a,b,c);
    char t[128];
    if(strcmp(a,b)>0)
    {
        strcpy(t,a);
        strcpy(a,b);
        strcpy(b,t);
    }
    
    if(strcmp(b,c)>0)
    {
        strcpy(t,b);
        strcpy(b,c);
        strcpy(c,t);
    }
    
    if(strcmp(a,b)>0)
    {
        strcpy(t,a);
        strcpy(a,b);
        strcpy(b,t);
    }
    
    puts(a);
    puts(b);
    puts(c);
    system("pause");
    return 0;
}
↘琪子

2024-06-06 01:41:04

三个字符串从小到大排序?老哥你确定不是数字?