2018第九届蓝桥杯C++省赛B组第二题 标题:明码

题目

汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。

16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。

一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。

把每个字节转为2进制表示,1表示墨迹,0表示底色。每行2个字节, 
一共16行,布局是:

第1字节,第2字节
第3字节,第4字节
....
第31字节, 第32字节

 思路:
就是核心一个bitset容器,自动转换成二进制,然后再把二进制数转换成字符串逐一判断,是1就输出墨迹,否则输出空格、

#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;

int main()
{
int  n,m;
string b1,b2;//设置一个字符串,用来存储八个位的数据 
while(cin>>n>>m)//输入两个字节 
{
	bitset<8>b(n);//二进制有序集,设置大小是8,将n字节放入 
	string b1=b.to_string();//转换成字符串,方便逐一判断 
	for(int i=0;i<b1.length();i++)
	{
		if(b1[i]=='1')
		printf("*");//一就要输出墨迹 
		else
		printf(" ");
	}
	bitset<8>a(m);//同理 
	string b2=a.to_string();
	for(int i=0;i<b2.length();i++)
	{
		if(b2[i]=='1')
		printf("*");
		else
		printf(" ");
	}
	cout<<endl;//输入完两字节后要换行,输入下两个字节 
}
return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值