百练_2752:字符串数组排序问题

来源:互联网 发布:爱奇艺获取网站源码 编辑:程序博客网 时间:2024/06/09 15:41
描述

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

输入
输入有多行,第一行为一个表明排序方式的字符串见题面,第二行为字符串的数目。
其余各行每行一个字符串,字符串中间可能空格,前后也可能有空格,但前后的空格要忽略。
输出
输出也有多行,按指定的顺序输出输入的字符串。
样例输入
ncdec3Hello 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);gets(string[i]);    }if(strcmp(s,"inc")==0)    inc(string,n);if(strcmp(s,"dec")==0)    dec(string,n);if(strcmp(s,"ncinc")==0)  ncinc(string,n);if(strcmp(s,"ncdec")==0)  ncdec(string,n);return 0;


原创粉丝点击