您的位置:首页 > 其它

百练_2757字符串数组排序问题

2017-04-22 14:08 232 查看
POJ2752:字符串数组排序问题

描述

给定一组字符串,按指定的排序方式输出这些字符串。排序可是自然顺序(inc)、自然逆序(dec)、忽略大小写顺序(ncinc)、忽略大小写逆序(ncdec)等。

输入

输入有多行,第一行为一个表明排序方式的字符串见题面,第二行为字符串的数目。

其余各行每行一个字符串,字符串中间可能空格,前后也可能有空格,但前后的空格要忽略。

输出

输出也有多行,按指定的顺序输出输入的字符串。

样例输入

ncdec

3

Hello World!

You're right!

haha! you're wrong!

样例输出

You're right!

Hello World!

haha! you're wrong!

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void inc(char *s[],int n){
int i,j;
char *p;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(strcmp(s[j],s[j+1])>0)
{
p=s[j];
s[j]=s[j+1];
s[j+1]=p;
}
}
for(i=0;i<n;i++)
printf("%s\n",s[i]);
}

void dec(char *s[],int n){
int i,j;
char *p;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(strcmp(s[j],s[j+1])>0)
{
p=s[j];
s[j]=s[j+1];
s[j+1]=p;
}
}
for(i=n-1;i>=0;i--)
printf("%s\n",s[i]);
}

void ncinc(char *s[],int n){
int i,j;
char *p;

for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(strcasecmp(s[j],s[j+1])>0) //不区分大小写比较两个字符串
{
p=s[j];
s[j]=s[j+1];
s[j+1]=p;
}
}
for(i=0;i<n;i++)
printf("%s\n",s[i]);
}
void ncdec(char *s[],int n){
int i,j;
char *p;

for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(strcasecmp(s[j],s[j+1])>0)
{
p=s[j];
s[j]=s[j+1];
s[j+1]=p;
}
}
for(i=n-1;i>=0;i--)
printf("%s\n",s[i]);
}

int main()
{
int i,n;
char s[10];
char *string[16]={NULL};
scanf("%s",&s);

scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
string[i]=(char *)malloc(sizeof(char)*20);  //将字符串存储在string[]中
gets(string[i]);
}
if(strcmp(s,"inc")==0)    inc(string,n);  //自然顺序(inc)
if(strcmp(s,"dec")==0)    dec(string,n);  //自然逆序(dec)
if(strcmp(s,"ncinc")==0)  ncinc(string,n);
if(strcmp(s,"ncdec")==0
4000
)  ncdec(string,n);

return 0;
}


string.h库文件中字符串比较大小在windows平台是stricmp,在Linux平台是strcasecmp。提示string.h找不到stricmp函数可以将其换为strcasecmp函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐