字符排序(美团网笔试题)C语言实现
2014-09-11 22:01
106 查看
#include<stdio.h> #include<string.h> void sort(char str[],int len) { int i,j; int temp; for (i=0;i<len;i++) { for (j=len-1;j>i;j--) { if (str[j]-str[j-1]==32||str[j-1]-str[j]==32) { if (str[j]-str[j-1]==32) { temp=str[j]; str[j]=str[j-1]; str[j-1]=temp; } } else if ((str[j]>='A'&&str[j]<='Z'&&str[j-1]>='A'&&str[j-1]<='Z')||(str[j]>='a'&&str[j]<='z'&&str[j-1]>='a'&&str[j-1]<='z')) { if (str[j]<str[j-1]) { temp=str[j]; str[j]=str[j-1]; str[j-1]=temp; } } else if (str[j]>='a'&&str[j]<='z'&&str[j-1]>='A'&&str[j-1]<='Z') { if (str[j]<(str[j-1]+32)) { temp=str[j]; str[j]=str[j-1]; str[j-1]=temp; } } else if (str[j-1]>='a'&&str[j-1]<='z'&&str[j]>='A'&&str[j]<='Z') { if ((str[j]+32)<str[j-1]) { temp=str[j]; str[j]=str[j-1]; str[j-1]=temp; } } } } for (i=0;i<len;i++) { if(i!=len-1) printf("%c,",str[i]); else printf("%c\n",str[i]); } } int main() { char str[1024]; char ch; int num=0; while(scanf("%c",&ch)==1) { if(ch!=',') str[num++]=ch; } //gets(str); sort(str,num-1); return 0; }注意字符串输入时,num会计算enter字符,因此在调用函数时,要num-1.
相关文章推荐
- 【C语言】【笔试题】【面试题】实现一个函数,可以左旋字符串中的k个字符
- 一次C语言实现字符排序出现的问题
- 【笔试面试知识点查缺补漏深入理解之C与C++篇】排序的C语言实现-插入-选择-快排
- 【C语言】【笔试题】【面试题】实现一个函数,可以左旋字符串中的k个字符
- 华为笔试1 去除重复字符并排序的字符串 c++ string 实现
- 【C语言】【笔试题】【面试题】实现一个函数,可以左旋字符串中的k个字符
- 排序系列之(2)堆排序及C语言实现
- C语言:实现N个整数排序,并插入一个整数!
- 经典排序思想,并用C语言指针实现排序算法
- 一个java笔试题的实现:用5位字符表示日期,并且要求500年不能重复
- C语言字符切割函数的实现——不需要自己指定分配多少个字符串分组
- 快速排序分析与C语言实现
- 【回忆c语言】从指针的定义初始化到链表的插入删除排序实现code
- C语言实现冒泡和直接插入排序
- 简单插入排序的C语言实现
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- C语言实现八种基本排序(二)
- .net 经典笔试题(字符排序)
- C语言实现八种基本排序(一)
- Windows 界面:具有“删除元素”和“按列进行字符比较排序”的 CListCtrol 继承类 CListCtrolEx 的实现