求各位解一下C语言的题

编一程序,将从键盘随机输入的10个字符串由小到大排序。 该程序由2个函数来完成,一个是主函数,另一个是n个字符串由小到大排序函数。

字符串用什么排序方法?
是用长度排?(例如string 和see此时,see的长度小于string 所以string>see.)
用它们的ascii码大小排?(例如string 和saring 此时,两个s相等,a的ascii码小于t的ascii码,所以string>saring.)
还是以上两个一起用?

将字符串2复制到字符串1 strcpy(s1,s2);

交换两个字符串:strcpy(t,s1);strcpy(s1,s2);strcpy(s2,t);
字符串比大小根据ascll码挨个比较,strcmp("a","b");返回的是小于0的数,strcmp("b","b");返回的是0,strcmp("b",“a”);返回的是大于0的数,strcmp("abc","acb")先比较第一个a相等继续向后比较b和c,b<c返回小于0的数



#include <stdio.h>
#include <string.h>
main()
{
   int i,j;
   char t[10];
    char a[10][10]={'\0'};
    printf("输入10个字符串");
    for (i=0;i<10;i++)
        scanf("%s",&a[i]);
    for (i=0;i<9;i++)
        for (j=0;j<9-i;j++)
        {
            if (strcmp(a[j],a[j+1])>0)
            {
                strcpy(t,a[j]);
                strcpy(a[j],a[j+1]);
                strcpy(a[j+1],t);
            }
        }
        printf("比较大小后:\n");
        for (i=0;i<10;i++)
            printf("%s\n",a[i]);
}

2个函数解决如下:

#include<stdio.h>
#include<string.h>
void sort(char s[][50])
{
    int i,j;
    for(i=0;i<9;i++)
        for(j=0;j<9-i;j++)
            if (strcmp(s[j], s[j + 1]) > 0)
            {
                char temp[50];
                strcpy(temp,s[j]);
                strcpy(s[j], s[j + 1]);
                strcpy(s[j+1],temp);
            }

}
int main()
{
    int i;
    char s[10][50];
    for (i = 0; i < 10; i++)
        gets(s[i]);
    sort(s);
    for (i = 0; i < 10; i++)
        puts(s[i]);
    return 0;
}

输入输出:

img

望采纳!感谢!

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

char a[10][10] = {'\0'};
char t[10];

void Compare()
{
    for (int i = 0; i < 9; i ++)
    {
        for (int j = 0; j < 9 - i; j ++)
        {
            if (strcmp(a[j], a[j + 1]) > 0)
            {
                strcpy(t, a[j]);
                strcpy(a[j], a[j + 1]);
                strcpy(a[j + 1],t);
            }
        }
    }

    printf("从小到大排序:");
    for (int i = 0; i < 10; i ++) printf("%s ", a[i]);
}
int main()
{
    printf("输入10个字符串(用空格间隔):");
    for (int i = 0; i < 10; i ++) scanf("%s", &a[i]);

    Compare();
    return 0;
}

望采纳


#include <stdio.h>
#include <string.h>
char t[10];
char a[10][10]={'\0'};
   int i,j;
main()
{
    printf("输入10个字符串");
    for (i=0;i<10;i++)
        scanf("%s",&a[i]);
        Sort();
        printf("比较大小后:\n");
        for (i=0;i<10;i++)
            printf("%s\n",a[i]);
}
void Sort(){
for (i=0;i<9;i++)
        for (j=0;j<9-i;j++)
        {
            if (strcmp(a[j],a[j+1])>0)
            {
                strcpy(t,a[j]);
                strcpy(a[j],a[j+1]);
                strcpy(a[j+1],t);
            }
        }
}