| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5455 人关注过本帖
标题:多个字符串比较大小
只看楼主 加入收藏
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
什么二维字符串的指针?概念不清
我说的是二维数组或者指针数组

下面是只用一个指针数组的形式
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
        char *p,*ss[5];
        int i,j;

        for(i=0;i<5;i++)//输入
        {
            ss[i]=(char *)malloc(80);
            memset(ss[i],'\0',80);
            scanf("%s",ss[i]);
        }

        printf("交换前:\n");//打印
        for(i=0;i<5;i++)
        printf("%s ",ss[i]);
        printf("\n");
      
        for(i=0;i<4;i++)//比较交换
        for(j=i+1;j<5;j++)
        if(strcmp(ss[i],ss[j])>0)
        {
                p=ss[i];
                ss[i]=ss[j];
                ss[j]=p;
        }

        printf("交换后:\n");//打印
        for(i=0;i<5;i++)
        printf("%s ",ss[i]);
        printf("\n");

        return 0;
}
---------------------------------------------------------------------------------------------------------------------
如果要只用用二维数组,那么比较的时候就不能用strcmp,因为二维数组的每一维都是一个数组的首地址,是一个常量,不能改变,要循环比较二维数组每一维的每个字符元素,交换的时候也是每个字符元素进行交换的
如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
        char temp,*p,s[5][80];
        int i,j,k;
        
        for(i=0;i<5;i++)//输入
        {
            scanf("%s",s[i]);
            printf("%s\n",s[i]);
        }

        printf("交换前:\n");//打印
        for(i=0;i<5;i++)
        printf("%s ",s[i]);
        printf("\n");
      
        for(i=0;i<4;i++)//比较交换
        for(j=i+1;j<5;j++)
        {
            k=0;
            while(s[i][k]==s[j][k])
            k++;
            if(s[i][k]>s[j][k])
            {
                for(k=0;k<80;k++)
                {
                    temp=s[i][k];
                    s[i][k]=s[j][k];
                    s[j][k]=temp;
                }
            }
        }

        printf("交换后:\n");//打印
        for(i=0;i<5;i++)
        printf("%s ",s[i]);
        printf("\n");

        return 0;
}
---------------------------------------------------------------------------------------------------------------------
下面是用一个二维数组和一个指针数组实现的,向二维数组输入字符串后,用ss的每个指针元素指向s的每一维,才能strcmp比较
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
        char *p,s[5][80],*ss[5];
        int i,j;

        for(i=0;i<5;i++)//输入
        scanf("%s",s[i]);

        for(i=0;i<5;i++)//赋值
        ss[i]=s[i];

        printf("交换前:\n");//打印
        for(i=0;i<5;i++)
        printf("%s ",ss[i]);
        printf("\n");
      
        for(i=0;i<4;i++)//比较交换
        for(j=i+1;j<5;j++)
        if(strcmp(ss[i],ss[j])>0)
        {
                p=ss[i];
                ss[i]=ss[j];
                ss[j]=p;
        }

        printf("交换后:\n");//打印
        for(i=0;i<5;i++)
        printf("%s ",ss[i]);
        printf("\n");

        return 0;
}
自己再理解理解,多看看书

小小战士,战士中的战斗机!
2012-12-07 11:56
快速回复:多个字符串比较大小
数据加载中...
 
   



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

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