7. 一夜发白《千字文》

#include "string.h"
#include "stdio.h"
#include "math.h"
int main(int argc, char const *argv[])
{
    unsigned char ch, ch1, ch2;
    int t, tt, ttt, m, x, xx, xxx;
    long zi[65536];
    memset(zi, 0, sizeof(zi));

    while(scanf("%c", &ch) != EOF)//
    {
        t = ch;
        if(t < 128)
            ;
        else if(t<224 && t>=192)
        {
            ch1 = getchar();
            tt = ch1;
            m = (t - pow(2, 7) - pow(2, 6)) * pow(2, 6) + tt - pow(2, 7);

            zi[m]++;
        }
        else
        {
            ch1 = getchar();
            ch2 = getchar();
            tt = ch1;
            ttt = ch2;
            m = (t - pow(2, 7) - pow(2, 6) - pow(2, 5)) * pow(2, 12) + (tt - pow(2, 7)) * pow(2, 6) + ttt - pow(2, 7);
            zi[m]++;
        }
            
    }

    int flag = 0;
    for (int i = 0; i < 65536; i++)
    {
        if(zi[i] > 1)
        {
            flag = 1;
            break;
        }
    }
    if(flag == 1)
    {
        for (int i = 128; i < 65536; i++)
        {
            if(i >= 128 && i < 2048)
            {
                if(zi[i] > 1)
                {
                    x = i/64 + 192;
                    xx = i%64+128;
                    printf("%c%c 0x%04x %ld\n", x, xx, i, zi[i]);//注意汉字的输出方式
                }
            }

            
            else
            {
                if(zi[i] > 1)
                {
                    xxx = i % 64 + 128;
                    xx = (i / 64) % 64 + 128;
                    x = i/4096+224;
                    printf("%c%c%c 0x%04x %ld\n", x, xx, xxx, i, zi[i]);

                }
            }
            
        }
    }
    
    else
    {
        printf("No repeat!\n");
    }
    
        return 0;
}

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
背景 在古代中国,《三经》、《百家姓》、《千》被合称为三、百、千,都是非常重要的启蒙教育课本,广为流传。而其中问世最早的《千》更凭借其优美的、华丽的辞藻成为中华传统化的一个重要组成部分,得到了人们的普遍重视和喜爱。 《千》的作者,是梁武帝时代官拜散骑员外郎的周兴嗣。历来在正史上的记载,就这样一笔带过,但据私家笔记的野史记载,内容不是这样简单了。周兴嗣同梁武帝本来便是之交的朋友,在萧齐时代,还在朝廷上有过同僚之谊。到了梁武帝当了皇帝,那就变成君臣的关系。由朋友变君臣,说是关系不错,其实,伴君如伴虎,反是最糟糕的事,周兴嗣有一次不小心得罪了梁武帝,梁武帝一怒之下,想杀他或很严厉地处分他,到底还是于心不忍,只好下令把先关起来再说。但梁武帝又说了一句话,你不是才很好吗?你能在一之间,把一千个不同的,写一篇好章,就赦你无罪。因此,周兴嗣就在一之间,挖空心思,写了这篇《千》。章写好了,可是在一之间,头、眉毛、胡子也都了!大家要注意,用一千个不同的中,一之间,写出有关宇宙、物理、人情、世故的间,等于写了一篇非常精简的“中国化纲领要点”,虽然,只写到南北时期的梁朝为止,实在也太难了。梁武帝本人,才华学都自命不凡,看了周兴嗣一之间之间所写的《千》,也不能不佩服。周兴嗣因此得到宽恕,而且还特加赏赐。 ——摘自南怀瑾《原本大学微言》 现代人,一生中有机会通读千的机会是非常少的,很多理工科的大学生,完全没有听说过这篇神奇的章,自然也会抱着“怀疑一切”的态度问,真的有这么神吗,真的一个重复的都没有吗?耳听为虚,眼见为实,我们就来检验一下千中是不是真的没有重复的。 不过在动手之前,先让我们花上几分钟的时间,读读《千》吧:简体中版、正体中版。 任务 请编写一个程序,从输入中读取一篇中章,并统计出该章中 ASCII 符以外的重复出现的每一个重复出现的次数。 章使用 UTF-8 编码,可能会出现任何可以用 UTF-8 编码表示的符(不限于中)。 章中所有的符在 UCS-2 能够表示的范围内,即符的 Unicode 值用两个节就可以表示。 输入 一篇章,总数不限、每行符数不限。每个重复出现的次数不超过 60000 次。 输出 按照 Unicode 编码从小到大的顺序,输出章中 ASCII (0~127) 符以外的每一个重复出现过的重复出现的次数。每行包含三项内容,首先是重复的符(以 UTF-8 编码输出),然后是该符的 Unicode 编码值(十六进制输出,母均使用小写,长度不足4位数的用0补齐),最后输出该符的重复次数。 如果章中没有出现重复的,则输出“No repeat!”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值