确实题目虽然有点水,但是开始的时候好像还真的没有想到怎么提取出这个编号一不小心感觉可以可以用unsigned char 这种类型,直接转为16进制,但是之后发现虽然第一次在codeblock中还行,但是第二天尝试的时候还是出错了,DEV中没有问题,所以瞬间感觉自己的肯定不是标准答案,查询之后才感觉位运算终于在题目中能够运用上了

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int table[27] =
{
0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,
0xB7A2,0xB8C1,0xB9FE,0xBBF7,0xBBF7,
0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,
0xC5BE,0xC6DA,0xC8BB,0xC8F6,0xCBFA,
0xCDDA,0xCDDA,0xCDDA,0xCEF4,0xD1B9,
0xD4D1,0xFFFF
};
//注意题中没有关于i,u,v开头的拼音(因为拼音中没有以i,u,v开头的),所以用下一个值代替即可,最后边界用极大值代替
int search(int p)
{
for(int i = 0; i < 27; ++i)
if(table[i] > p)
return i-1;
}
int main()
{
int T;
char buf[110];
scanf("%d", &T);
while(T--)
{
scanf("%s", buf);
int len = strlen(buf);//一个汉字占两个字节
for(int i = 0; i < len; i+=2)
{
int tmp1 = 0x000000ff & buf[i]; ///取第一个字节,因为temp1为32位整数,所以只需取出其低八位即可。 char字符只有一个字节
int tmp2 = 0x000000ff & buf[i+1]; ///取第二个字节。
int pos = search( (tmp1<<8) +tmp2);///组合成编码后在 编码表中查找。
printf("%c", 'A'+pos);
}
printf("\n");
}
return 0;
}

开始的时候自己写的代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#define INF f0x3f3f3f3f
using namespace std;
int s[30];
void judgePrintf(unsigned char ch[],char table[]){
int i;
for(int x=0;ch[x]!='\0';x+=2) {
for(i=0;i<23;i++)
if(ch[x]*1000+ch[1+x]<s[i])
break;
cout<<table[i-1];
}
cout<<endl;
return ;
}
int main(){
int Count=0;
char table[]="ABCDEFGHJKLMNOPQRSTWXYZ";
unsigned char ch1[100]="啊芭擦搭蛾发噶哈击喀垃妈拿哦啪期然撒塌挖昔压匝",temp[100];
for(int i=0;ch1[i]!='\0';i+=2){
s[Count++]=ch1[i]*1000+ch1[i+1];
}
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>temp;
judgePrintf(temp,table);
}
return 0;
}

顺便说一下char和unsigned的区别,好像其他的什么大的区别也没有,就是char能表示-128~127, unsigned char没有符号位,因此能表示0~255

蓝桥杯---汉字取首字母(位运算 & 水题)的更多相关文章

  1. 【BZOJ4300】绝世好题(位运算水题)

    点此看题面 大致题意: 给你一个序列\(a\),让你求出最长的一个子序列\(b\)满足\(b_i\&b_{i-1}!=0\). 位运算+\(DP\) 考虑设\(f_i\)表示以第\(i\)个数 ...

  2. [poj2777] Count Color (线段树 + 位运算) (水题)

    发现自己越来越傻逼了.一道傻逼题搞了一晚上一直超时,凭啥子就我不能过??? 然后发现cin没关stdio同步... Description Chosen Problem Solving and Pro ...

  3. java获取汉字拼音首字母 --转载

    在项目中要更能根据某些查询条件(比如姓名)的首字母作为条件进行查询,比如查一个叫"李晓明"的人,可以输入'lxm'.写了一个工具类如下: import java.io.Unsupp ...

  4. AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)

    AutoCompleteTextView具有输入提示的功能,但是它的这种提示不适合对股票列表的过滤,如果你玩过股票软件,就会知道只要输入股票名称的首字母或股票代码就会出现符合匹配的股票,这种过滤怎么实 ...

  5. sql 汉字转首字母拼音

    从网络上收刮了一些,以备后用 create function fun_getPY(@str nvarchar()) returns nvarchar() as begin declare @word ...

  6. JAVA获取汉字拼音首字母

    package com.common.util; import java.io.UnsupportedEncodingException; /** * 取得给定汉字串的首字母串,即声母串 * Titl ...

  7. java汉字获取首字母

    前言 在项目中很多时候我们需要获取姓名或者名称的首字母或者全拼,以用于模糊查询或者字母查询,在这里分享一个实例:供小伙伴们参考. 导入jar包 <dependency> <group ...

  8. C# 获取汉字拼音首字母

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精   本节探讨C#获取汉字拼音首字母的方法: 代码类东西, ...

  9. Android -- 获取汉字的首字母

    转换                                                                                             获取一个汉 ...

随机推荐

  1. Android软键盘遮挡的四种解决方案

    问题概述 在编辑框输入内容时会弹出软键盘,而手机屏幕区域有限往往会遮住输入界面,我们先看一下问题效果图: 输入用户名和密码时,系统会弹出键盘,造成系统键盘会挡住文本框的问题,如图所示: 输入密码时输入 ...

  2. jquery点击改变图片src源码并toggle

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 通过改变计算机策略来解决“只能通过Chrome网上应用商店安装该程序”的方法及模版文件下载

    通过改变计算机策略来解决“只能通过Chrome网上应用商店安装该程序”的方法及模版文件下载 操作步骤 1.开始 -> 运行 -> 输入gpedit.msc -> 回车确定打开计算机本 ...

  4. final,static

    如果输入参数在方法体执行过程中,强制不能被修改,那么参数类型前加final比较安全. final修饰的函数会被编译器优化,优化意味着编译器可能将该方法用内联(inline)方式载入.final修饰变量 ...

  5. JDBC Driver

    Infomix Driver: com.informix.jdbc.IfxDriver JDBC URL : jdbc:informix-sqli://<host>:<port> ...

  6. 【转】JVM 分代GC策略分析

    我们以Sun HotSpot VM来进行分析,首先应该知道,如果我们没有指定任何GC策略的时候,JVM默认使用的GC策略.Java虚拟机是按照分代的方式来回收垃圾空间,我们应该知道,垃圾回收主要是针对 ...

  7. Python函数,参数,变量

    func1.py def sayHello(): print ('hello world') sayHello() func_parm.py def printMax(a,b): if a>b: ...

  8. windows下制作u盘启动的工具

    推荐rufus,快捷方便

  9. HDU 3480 division

    题目大意:一个有n个数的集合,现在要求将他分成m+1个子集,对子集i设si表示该集合中最大数与最小数的差的平方.求所有si的和的最小值.n<=10000,m<=5000. 分析:最优解的m ...

  10. POWERDESIGNER中显示样式设置

    1.调整表.视图的显示样式. 右键选中的对象,选择format(或ctrl+t),在弹出窗口中选中content,可以设置只显示表名还是把所有列也显示出来. 2.如何显示表中字段的code. tool ...