(程序设计方法与实践)一夜发白《千字文》
一夜发白《千字文》
Background
在古代中国,《三字经》、《百家姓》、《千字文》被合称为三、百、千,都是非常重要的启蒙教育课本,广为流传。而其中问世最早的《千字文》更凭借其优美的文字、华丽的辞藻成为中华传统文化的一个重要组成部分,得到了人们的普遍重视和喜爱。
现代人,一生中有机会通读千字文的机会是非常少的,很多理工科的大学生,完全没有听说过这篇神奇的文章,自然也会抱着“怀疑一切”的态度问,真的有这么神吗,真的一个重复的字都没有吗?耳听为虚,眼见为实,我们就来检验一下千字文中是不是真的没有重复的字。
不过在动手之前,先让我们花上几分钟的时间,读读《千字文》吧:简体中文版、正体中文版。
Description
请编写一个程序,从输入中读取一篇中文文章,并统计出该文章中 ASCII 字符以外的重复出现的每一个字重复出现的次数。
文章使用 UTF-8 编码,可能会出现任何可以用 UTF-8 编码表示的字符(不限于中文)。
文章中所有的字符在 UCS-2 能够表示的范围内,即字符的 Unicode 值用两个字节就可以表示。
Input
一篇文章,总字数不限、每行字符数不限。每个字重复出现的次数不超过 60000 次。
Output
按照 Unicode 编码从小到大的顺序,输出文章中 ASCII (0~127)字符以外的每一个重复出现过的字重复出现的次数。
每行包含三项内容,首先是重复的字符(以 UTF-8 编码输出),然后是该字符的 Unicode 编码值(十六进制输出,字母均使用小写,长度不足 4 位数的用 0 补齐),最后输出该字符的重复次数。
如果文章中没有出现重复的字,则输出No repeat!。
代码如下:
#include<string.h>
#include<stdio.h>
#include<math.h>
int main(int argc, char const *argv[])
{ unsigned char ch,ch1,ch2; int i,j,t,t2,t3,x,x2,x3; long z[65536]; memset(z,0,sizeof(z)); while(scanf("%c",&ch)!=EOF) { t=ch; if(t<128) { ; } else if(t<224&&t>=192) { ch1=getchar(); t2=ch1; j=(t-pow(2,7)-pow(2,6))*pow(2,6)+t2-pow(2,7); z[j]++; } else { ch1=getchar(); ch2=getchar(); t2=ch1; t3=ch2; j=(t-pow(2,7)-pow(2,6)-pow(2,5))*pow(2,12)+(t2-pow(2,7))*pow(2,6)+t3-pow(2,7); z[j]++; } } int flag=0; for(i=0;i<65536;i++) { if(z[i]>1) { flag=1; break; } } if(flag==1) { for(int i=128;i<65536;i++) { if(i>=128&&i<2048) { if(z[i]>1) { x=i/64+192; x2=i%64+128; printf("%c%c 0x%04x %ld\n",x,x2,i,z[i]); } } else { if(z[i]>1) { x3=i%64+128; x2=(i/64)%64+128; x=i/4096+224; printf("%c%c%c 0x%04x %ld\n",x,x2,x3,i,z[i]); } } } } else { printf("No repeat!\n"); } return 0;
}
(程序设计方法与实践)一夜发白《千字文》相关推荐
- BITCS2016程序设计 | 9. 一夜发白 《千字文》
9. 一夜发白<千字文> 成绩 10 开启时间 2016年09月6日 星期二 11:00 折扣 0.8 折扣时间 2016年09月8日 星期四 23:55 允许迟交 否 关闭时间 2016 ...
- 【BIT2021程设】7. 一夜发白《千字文》——Unicode和UTF-8、位运算
写在前面: 本系列博客仅作为本人十一假期过于无聊的产物,对小学期的程序设计作业进行一个总结式的回顾,如果将来有BIT的学弟学妹们在百度搜思路时翻到了这一条博客,也希望它能对你产生一点帮助(当然,依经验 ...
- 网教9. 一夜发白《千字文》
</pre>背景</h2><p style="margin-top:0px; margin-bottom:10px; color:rgb(68,68,68); ...
- C程序设计-方法与实践(清华大学出版社)习题解析
1. 前言 本习题解析只是作为一种参考,代码不唯一! 补充:书本重要例题点击跳转 2. C语言概述 1)习题 2.3 编写程序,由键盘输入任意3个数,找出其中最小的数 #include <std ...
- (程序设计方法与实践)达拉崩吧的酒宴
达拉崩吧的酒宴 Description 很久很久以前,巨龙突然出现,带来灾难带走了公主又消失不见,王国十分危险,世间谁最勇敢,一位勇者赶来大声喊:"我要带上最好的剑,翻过最高的山,闯进最深的 ...
- (程序设计方法与实践)打包礼物
打包礼物 Description 再过一段时间就是龙龙心心念念的她的生日,龙龙准备了 k 个礼物送给她,并且决定用顺丰快递寄过去. 但是龙龙发现,因为 k 太大了,所以要发很多个快递,这样就要很多的快 ...
- 【第二十三题】带旋转的数独游戏|dfs(北理工/北京理工大学/程序设计方法与实践/小学期 )
目录 前言 dfs学习 思路 代码修正 源代码 我修正后的代码 前言 说实话这题我弄的也不是很明白,而csdn上只有一份代码@loveumozart,还没多少注释,关键还有很多冗余代码,于是我就做 ...
- C程序设计方法与实践重要例题
1. 前言 本章节只对本人不熟悉或者认为属于考试内容属于重点的进行收录 2. C语言概述 2.3 (38页)程序分析题-错误型 留意错误写法,2022年新增程序分析题 2.6 (40页) 思想很重要, ...
- (程序设计方法与实践)肥宅快乐串
肥宅快乐串 Description 龙龙在研究字符串和字符串处理.龙龙发现有一些字符串让他第一眼看到就会发自内心的感到快乐,他把这些字符串称为"肥宅快乐串".龙龙进一步研究发现,一 ...
最新文章
- IoT	、5G与边缘计算将会擦出怎样的火花?
- windows上安装Anaconda和python的教程详解
- 简单工厂模式与工厂方法模式
- 计算机硬盘清理,电脑磁盘清理,详细教您电脑磁盘怎么清理
- pyqt快速编程指南 源码_适合 C++ 新手学习的开源项目——在 GitHub 学编程
- tomcat 8安装 linux,linux下tomcat8安装详解(附图解步骤)
- 云杰恒指:8.30恒指期货早盘资讯
- lfs库下载_Git上传大文件夹LFS
- 流量+安全 平安WiFi卡位入口战略
- Android Studio方法总数超过64K报错Error:The number of method references in a .dex file cannot exceed 64K.
- Windows 内存机制说明
- Msc.Marc模拟平板圆孔处应力集中:二维轴对称线弹性分析
- The setting mapUnderScoreToCamelCase is not known. Make sure you spelled it correctly (case sensiti
- sass 转换为 css
- c语言嵌套结构体数组,第22节 C语言结构体之结构体嵌套、结构体指针与结构体数组的代码实现...
- 数据库中超码、候选码、主码的理解
- [转]竞价实例与AWS SPOT逆向解析
- 【注入】C# 构造注入的方法
- 汇编实例解析--利用tcb,tss,全局tss,ldt管理任务实现任务切换
- Jetson TX1/Tx2刷机补充版