标题:分享快乐散分(小牛 中牛 大牛 统统飘过~~~~~~~)
取消只看楼主
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
结帖率:99.76%
已结贴  问题点数:20 回复次数:3 
分享快乐散分(小牛 中牛 大牛 统统飘过~~~~~~~)
题目:估计老掉牙了
由控制台输入N行字符串  由程序把这些字符串接收进来  然后对这些字符串进行排序  最后输出排序后的字符串。


解题有2种方式:
1、使用指针数组  2、使用二级字符串指针

下面分别就这两种方式给出代码  欢迎指正

1、以下是使用指针数组完成

程序代码:
//////////////////////////////////////////////////////////
#include <stdio.h>
#include <string.h>
#include <malloc.h>

#define N 10

int main()
{
    char *p[N];
    char *tmp;
    int i=0,j=0;
    for(i=0;i<N;i++)
    {
        p[i]=(char*)malloc(256);     //给字符串开辟内存空间
        memset(p[i],0,sizeof(p[i]));  //初始化为 0
    }
    i=0;
    while(i<N)
    {
        scanf("%s",p[i]);
        i++;
    }
    for(i=0;i<N;i++)
    {
        for(j=i+1;j<N;j++)
        {
            if(strcmp(p[i],p[j])>0)   //由小到大排序
            {
                tmp=p[i];
                p[i]=p[j];
                p[j]=tmp;
            }
        }
    }
    printf("======== 神奇的分界线========\n");
    for(i=0;i<N;i++)
    {
        printf("%s\n",p[i]);
    }
    return 0;
}


2、以下使用二级字符串指针完成
程序代码:
#include <stdio.h>
#include <string.h>
#include <malloc.h>

#define N 10

int main()
{
    char **p;
    char *tmp;
    int i=0,j=0;
    p= (char**)malloc(N*sizeof(char*));  //给指针数组开辟内存空间
    for(i=0;i<N;i++) *(p+i)=(char*)malloc(256);  //给字符串开辟内存空间
    i=0;
    while(i<N)
    {
        scanf("%s",*(p+i));
        i++;
    }
    for(i=0;i<N;i++)
    {
        for(j=i+1;j<N;j++)
        {
            if(strcmp(*(p+i),*(p+j))>0)   //由小到大排序
            {
                tmp=*(p+i);
                *(p+i)=*(p+j);
                *(p+j)=tmp;
            }
        }
    }
    printf("======== 神奇的分界线========\n");
    for(i=0;i<N;i++)
    {
        printf("%s\n",*(p+i));
    }
    return 0;
}




搜索更多相关主题的帖子: include 控制台 字符串 
2013-08-09 21:52
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用beyondyf在2013-8-9 23:19:47的发言:

哥,我就想提醒一句,记得释放动态申请的空间。
没事   windows 会自动管理内存的  哈哈

DO IT YOURSELF !
2013-08-10 07:20
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
写这个  主要是以前对  char **p  始终搞不懂   具体咋用

而书上  或网上  资料有限    这个基本上是自己N+1次失败  摸索着弄出来的  所以很高兴

DO IT YOURSELF !
2013-08-10 07:22
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
一高兴 就忘乎所以  连释放内存  最基本的常识 都忘掉了

DO IT YOURSELF !
2013-08-10 07:22



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




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

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