标题:字符串排序 不知道咋存这些数据
只看楼主
king_kong
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:71
专家分:55
注 册:2010-9-9
结帖率:68.75%
已结贴  问题点数:10 回复次数:4 
字符串排序 不知道咋存这些数据
字符串排序
题目描述
输入3个字符串,按字典序从小到大进行排序。
输入
输入数据 有一行,分别为3个字符串,用空格分隔。
输出
输出排序后的三个字符串,用空格分隔。
示例输入
abcd cdef bcde
示例输出
abcd bcde cdef
搜索更多相关主题的帖子: 字符串 字典 
2011-03-10 22:32
cacker
该用户已被删除
得分:3 
提示: 作者被禁止或删除 内容自动屏蔽
2011-03-10 22:44
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:5 
刚刚完成了字符串的学习, 作为一个练习,仅供楼主参考(本人初学菜鸟)
程序代码:

root@~ #cat 1.c
#include <stdio.h>

struct string {
        char str[10];
};
int main (void) {
        struct string array[3];
        int cmpstr (char s1[],char s2[]);
        void cpstr (char dest[],char source[]);
        char a[10],b[10],c[10],tmp[10];
        int i,j,n;

        for(i=0;i<3;i++) {
                scanf ("%s",array[i].str);
        }

        printf ("Before sorted ...\n");

        for (i=0;i<3;i++) {
                printf ("%s ",array[i].str);
        }

        printf ("\n\n\n");

        for(i=0;i<2;i++) {
                for(j=i+1;j<3;j++) {
                        n=cmpstr(array[i].str,array[j].str);
                        if(n==1) {
                                cpstr(tmp,array[i].str);
                                cpstr(array[i].str,array[j].str);
                                cpstr(array[j].str,tmp);
                        }
                }
        }

        printf ("After sorted...\n");

        for(i=0;i<3;i++) {
                printf ("%s ",array[i].str);
        }

        printf ("\n");

        return 0;
}
//compare string1 and string2
int cmpstr (char s1[],char s2[]) {
        int i=0;
        while(s1[i]!='\0'&&s2[i]!='\0') {
                if(s1[i]>s2[i]) {
                        return 1;
                }
                if(s1[i]<s2[i]) {
                        return -1;
                }
                i++;
        }
        if(s1[i]=='\0'&&s2[i]=='\0') {
                return 0;
        }
}
//copy string from source to destination
void cpstr (char dest[],char source[]) {
        int i;
        for(i=0;source[i]!='\0';i++) {
                dest[i]=source[i];
        }
        dest[i]='\0';
}
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-10 23:02
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:1 
以下是引用cacker在2011-3-10 22:44:30的发言:

笨方法  用二维数组存

char szBufs[3][64];   一共3组   每个字符串最大不超过63字节

printf("请输入3组字符串");
for( int i = 0; i < 3; ++i )
   scanf("%63s", szBufs);

比较的时候  还是用最苯的方法 用strcmp库函数

哦, 可以用二维数组呀!!!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-10 23:04
默默学习
Rank: 4
等 级:业余侠客
帖 子:134
专家分:200
注 册:2010-6-22
得分:1 
回复 楼主 king_kong
存放字符,可以用数组指针的形式哦。
注意的是,实参为数组指针 形参的三种格式
                1.   (*p)[3] //数组指针形式.
                2.    p[2][3]//标准数组形式
                3.    p[ ][3]//可以缺省行标,这个内容在定义二维数组初始化提到.

其实我也犯过迷糊,关于承接字符等值与实参,形参等问题。一起加油吧.
2011-03-10 23:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-333787-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016362 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved