| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 456 人关注过本帖
标题:思路是啥啊??
只看楼主 加入收藏
小小12345
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2013-6-5
结帖率:92.31%
收藏
已结贴  问题点数:10 回复次数:6 
思路是啥啊??
图片附件: 游客没有浏览图片的权限,请 登录注册



求思路,,,代码更好O(∩_∩)O~
2013-06-17 15:25
yss0729
Rank: 3Rank: 3
来 自:江西 九江
等 级:论坛游侠
帖 子:43
专家分:197
注 册:2013-6-8
收藏
得分:4 
这比较的是ascii码,把每个字符串下的每个字符的ascii码加起来做比较。。
比方说 abc  加起来就是 97+98+99=294
把每个字符串值计算出来之后 做排序
2013-06-17 16:01
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:4 
用strcmp()函数比较字符串大小,排序的算法有很多。
百度一下strcmp函数的简介就清楚字符串是怎么比较大小的了
2013-06-17 16:25
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:4 
用字符指针数组...   很容易   再用个字符串比较函数   核心思路就是 冒泡排序
程序代码:
#include<stdio.h>
#include<string.h>
main()
{
    char *p[10],*t;
    int i,j;
    for(i=0;i<=9;i++){
        fflush(stdin);
        p[i]=(char*)malloc(10);
        gets(p[i]);
    }
    for(j=0;j<9;j++)           
        for(i=0;i<9-j;i++)    
        {
            if(strcmp(p[i],p[i+1])>0)  
            {t=p[i];p[i]=p[i+1];p[i+1]=t;}
        }
     printf("\n");
     for(i=0;i<=9;i++)         
         puts(p[i]);
     printf("\n");
}
图片附件: 游客没有浏览图片的权限,请 登录注册



[ 本帖最后由 韶志 于 2013-6-17 17:32 编辑 ]

三十年河东,三十年河西,莫欺少年穷!
2013-06-17 17:31
小小12345
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2013-6-5
收藏
得分:0 
   题目让用函数解决。。。
#include<stdio.h>
#include<string.h>
void px(char pA[][])
{
    int i,j;
    char *t;
    for(i=0;i<10-1;i++)
        for(j=0;j<10-1-i;j++)
            if(strcmp(pA[j],pA[j+1])>0)
                t=pA[j],pA[j]=pA[j+1],pA[j+1]=t
}
int main()
{
    char *pA[10][10];
    int i,j;
    for(i=0;i<=9;i++)
        printf("%s",&pA[i]);
    px(pA);
    for(i=0;i<10;i++)printf("%s",pA[i]);
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册
怎么改啊??????
2013-06-17 19:22
小小12345
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2013-6-5
收藏
得分:0 
   题目让用函数解决。。。
#include<stdio.h>
#include<string.h>
void px(char pA[][])
{
    int i,j;
    char *t;
    for(i=0;i<10-1;i++)
        for(j=0;j<10-1-i;j++)
            if(strcmp(pA[j],pA[j+1])>0)
                t=pA[j],pA[j]=pA[j+1],pA[j+1]=t
}
int main()
{
    char *pA[10][10];
    int i,j;
    for(i=0;i<=9;i++)
        printf("%s",&pA[i]);
    px(pA);
    for(i=0;i<10;i++)printf("%s",pA[i]);
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册
怎么改啊??????
2013-06-17 19:27
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 6楼 小小12345
程序代码:
#include<stdio.h>
#include<string.h>

void px(char *p[])//定义为指针类型  不然if语句中两个t行代码会出现left operand must be l-value的错误提示  (左值问题   具体你可以百度)
{
    int i,j;
    char *t;
    for(i=0;i<10-1;i++)
        for(j=0;j<10-1-i;j++)
            if(strcmp(p[j],p[j+1])>0)//你参照我的程序,但也要看清楚啊,是分号不是逗号
            {
                t=p[j];
                p[j]=p[j+1];
                p[j+1]=t;
            }
}
main()
{
    char *p[10];
    int i,j;
    for(i=0;i<=9;i++){
        fflush(stdin);         //清空缓冲区
        p[i]=(char*)malloc(10);//字符指针输入前必须分配内存空间
        scanf("%s",p[i]);
    }
    px(p);
    for(i=0;i<10;i++)
        printf("%s\t",p[i]);
    return 0;
}

三十年河东,三十年河西,莫欺少年穷!
2013-06-17 21:10
快速回复:思路是啥啊??
数据加载中...
 
   



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

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