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




