华为OJ平台试题 —— 排序:字符统计
2015-08-15 22:33
363 查看
字符统计
代码:
代码:
#include<stdio.h> #include <string.h> /* * 定义一个结构体:字符和字符数目 */ struct CountChar { int c; int count; }; /* 根据结构体里面的数字的大小,对结构体进行排序 */ <span style="color:#ff0000;"> /* 结构体是可以整体进行搬移排序的 */</span> void sort(struct CountChar chara[], int n ) { int i, j; struct CountChar temp; for( i = 0; i < n; i++) for(j = i; j < n ; j++) { if(chara[i].count < chara[j].count ) { temp = chara[i]; chara[i] = chara[j]; chara[j] = temp; } } } /* * 统计字符函数,由主函数传递输入字符 * 返回字符和字符数目 */ int main(void) { struct CountChar a[256]; /* 定义一个结构体数组,该数组有236个元素,均为struct CountChar 类型数据 */ char b[200]; int i; /* 将结构体数组初始化 */ for(i = 0; i < 256; i++) { a[i].c= 0; a[i].count=0; } gets(b); /* 输入字符串 */ /* 将每个字符赋值给tmp,同时对其数目进行统计,a[tmp],tmp为ASCII值,每个字符都有一个结构体 */ for(i=0; b[i] != '\0'; i++) { if (b[i] >= 'a' && b[i] <= 'z' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= '0' && b[i] <= '9' || b[i]==' ') { char tmp=b[i]; a[tmp].c = b[i]; a[tmp].count++; } } /* 对统计出来的数字进行排序 */ sort(a, 256);
/* 输出字符 */ for(i = 0; i < 256; i++) { if(a[i].count != 0) printf("%c", (a[i].c)); } }
相关文章推荐
- 对于a标签点击之后可以发邮件和打电话的功能实现
- 前端开发时经常会被浏览器缓存搞得头大,apache设置一下就好了
- 算法(一)
- EmguCV+Kinect2.0获取高清面部帧
- 21. Function 对象
- hdu 5391 Zball in Tina Town (数学)
- 不坠华年(大一篇)
- 前端开发时经常会被浏览器缓存搞得头大,apache设置一下就好了
- POJ 3278 Catch That Cow
- 二叉树中和为某一值的路径(算法)
- oracle 学习笔记之PL/SQL程序设计
- VS2013 编写调用 动态链接库
- tar压缩/解压、加密压缩/解密解压
- hibernate基本映射
- AngularJs 入门系列-2 表单验证
- eclipse启动错误:java.lang.NoClassDefFoundError: org/eclipse/core/resources/IContainer
- C#与yaml解析
- HDOJ 5099 Comparison of Android versions(字符串模拟)
- [Java]Invert Binary Tree翻转二叉树
- Spring+SpringMVC+JPA