分享快乐散分(小牛 中牛 大牛 统统飘过~~~~~~~)
											题目:估计老掉牙了由控制台输入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;
}



 
											





 
	    

 
	
