一夜发白《千字文》

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;
}

(程序设计方法与实践)一夜发白《千字文》相关推荐

  1. BITCS2016程序设计 | 9. 一夜发白 《千字文》

    9. 一夜发白<千字文> 成绩 10 开启时间 2016年09月6日 星期二 11:00 折扣 0.8 折扣时间 2016年09月8日 星期四 23:55 允许迟交 否 关闭时间 2016 ...

  2. 【BIT2021程设】7. 一夜发白《千字文》——Unicode和UTF-8、位运算

    写在前面: 本系列博客仅作为本人十一假期过于无聊的产物,对小学期的程序设计作业进行一个总结式的回顾,如果将来有BIT的学弟学妹们在百度搜思路时翻到了这一条博客,也希望它能对你产生一点帮助(当然,依经验 ...

  3. 网教9. 一夜发白《千字文》

    </pre>背景</h2><p style="margin-top:0px; margin-bottom:10px; color:rgb(68,68,68); ...

  4. C程序设计-方法与实践(清华大学出版社)习题解析

    1. 前言 本习题解析只是作为一种参考,代码不唯一! 补充:书本重要例题点击跳转 2. C语言概述 1)习题 2.3 编写程序,由键盘输入任意3个数,找出其中最小的数 #include <std ...

  5. (程序设计方法与实践)达拉崩吧的酒宴

    达拉崩吧的酒宴 Description 很久很久以前,巨龙突然出现,带来灾难带走了公主又消失不见,王国十分危险,世间谁最勇敢,一位勇者赶来大声喊:"我要带上最好的剑,翻过最高的山,闯进最深的 ...

  6. (程序设计方法与实践)打包礼物

    打包礼物 Description 再过一段时间就是龙龙心心念念的她的生日,龙龙准备了 k 个礼物送给她,并且决定用顺丰快递寄过去. 但是龙龙发现,因为 k 太大了,所以要发很多个快递,这样就要很多的快 ...

  7. 【第二十三题】带旋转的数独游戏|dfs(北理工/北京理工大学/程序设计方法与实践/小学期 )

    目录 ​ 前言 dfs学习 思路 代码修正 源代码 我修正后的代码 前言 说实话这题我弄的也不是很明白,而csdn上只有一份代码@loveumozart,还没多少注释,关键还有很多冗余代码,于是我就做 ...

  8. C程序设计方法与实践重要例题

    1. 前言 本章节只对本人不熟悉或者认为属于考试内容属于重点的进行收录 2. C语言概述 2.3 (38页)程序分析题-错误型 留意错误写法,2022年新增程序分析题 2.6 (40页) 思想很重要, ...

  9. (程序设计方法与实践)肥宅快乐串

    肥宅快乐串 Description 龙龙在研究字符串和字符串处理.龙龙发现有一些字符串让他第一眼看到就会发自内心的感到快乐,他把这些字符串称为"肥宅快乐串".龙龙进一步研究发现,一 ...

最新文章

  1. IoT 、5G与边缘计算将会擦出怎样的火花?
  2. windows上安装Anaconda和python的教程详解
  3. 简单工厂模式与工厂方法模式
  4. 计算机硬盘清理,电脑磁盘清理,详细教您电脑磁盘怎么清理
  5. pyqt快速编程指南 源码_适合 C++ 新手学习的开源项目——在 GitHub 学编程
  6. tomcat 8安装 linux,linux下tomcat8安装详解(附图解步骤)
  7. 云杰恒指:8.30恒指期货早盘资讯
  8. lfs库下载_Git上传大文件夹LFS
  9. 流量+安全 平安WiFi卡位入口战略
  10. Android Studio方法总数超过64K报错Error:The number of method references in a .dex file cannot exceed 64K.
  11. Windows 内存机制说明
  12. Msc.Marc模拟平板圆孔处应力集中:二维轴对称线弹性分析
  13. The setting mapUnderScoreToCamelCase is not known. Make sure you spelled it correctly (case sensiti
  14. sass 转换为 css
  15. c语言嵌套结构体数组,第22节 C语言结构体之结构体嵌套、结构体指针与结构体数组的代码实现...
  16. 数据库中超码、候选码、主码的理解
  17. [转]竞价实例与AWS SPOT逆向解析
  18. 【注入】C# 构造注入的方法
  19. 汇编实例解析--利用tcb,tss,全局tss,ldt管理任务实现任务切换
  20. Jetson TX1/Tx2刷机补充版

热门文章

  1. 弱电计算机网络系统系统概述,弱电系统一、计算机网络系统.ppt
  2. 将任意一个十进制数数字转换为二进制形式,并输出转换后的结果
  3. Finger Gestures 3.1
  4. zemax光学设计轻松自学
  5. golang采集淘宝产品详情信息 解决禾匠小程序 采集淘宝失效的问题
  6. 手势识别(三)2种添加手势方法和如何响应手势
  7. 自媒体运营——创作爆款文案的五个必然要素
  8. 微信支付踩坑记录 (java后端四:企业付款到零钱)
  9. 既然选择远方的路,那就风雨兼程吧
  10. 双机位摄像机视频直播(多机位摄像机视频直播)时硬件连接示意图