百练_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!
string.h库文件中字符串比较大小在windows平台是stricmp,在Linux平台是strcasecmp。提示string.h找不到stricmp函数可以将其换为strcasecmp函数
描述
给定一组字符串,按指定的排序方式输出这些字符串。排序可是自然顺序(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函数
相关文章推荐
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
- 用qsort对字符串数组排序需要注意的几个问题
- 2752:字符串数组排序问题(java语言)
- 1754:字符串数组排序问题(4.1算法之排序和算法性能)
- 数组排序问题(数字字符串排序)
- 百练_2752:字符串数组排序问题
- PHP 字符串数组按照拼音排序的问题
- java数组、字符串比较插入及排序问题
- 字符串数组排序问题
- 用qsort对字符串数组排序需要注意的几个问题
- 用qsort对字符串数组排序需要注意的几个问题
- 按字符串中的数字排序问题
- JPasswordField 中得到的字符数组转化为字符串(密码乱码问题)
- 对字符串数组进行排序,将所有变位词排在相邻的位置。
- PHP 多维数组的排序问题 根据二维数组中某个项排序
- C/C++字符串,字符数组,字符指针及其相互静态拷贝与追加的安全问题解决方案(1)
- Byte 数组转字符串 - 回复 "不知道" 问题
- <笔试><面试>编写一个排序函数,实现,既可以排序整形数组,又可以排序字符串。
- 字符串转换整形数,结构体数组排序