欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言的二进制输出问题

程序员文章站 2022-03-08 14:36:06
...

C语言中没有直接将ACCII码以二进制格式输出的功能,需要自己设计,现在就请你来完成这个函数。

Input
输入由若干段字符组成,每一段由5个“”作为结尾;每一段中包含符合C语言规定的字符;若干段加起来总长度不超过10000个字符。为了处理方便,我们规定一旦遇到5个连续的“”,那么就是段落分界,这5个“”不是段落内容。输入保证每个段落有5个连续的“”作为结尾。如果最后一次连续5个“*”之后还有其他字符,就视为无效字符,不需要处理。

Output
将输入中的所有字符(包括回车换行符)都转换成二进制并输出。如果没有需要转换的字符,那么输出一行“Blank !”。

Sample Input
123


Sample Output
00110001001100100011001100001010
Blank !

Hint
如果你使用java语言,因为我们今天考试的内容就是请你设计一个转换函数,所以你不能使用系统函数来解决,要求你无论用什么语言提交,都必须要自己写一个将ASCII码转换成二进制的函数。

#include<bits/stdc++.h>
using namespace std;
const int MAXN=5000005;
char s[MAXN];
int cnt;
bool ckend(int pos)
{
    if(s[pos]=='*'&&s[pos+1]=='*'&&s[pos+2]=='*'&&s[pos+3]=='*'&&s[pos+4]=='*')return true;
    return false;
}
bool f;
string p;
int main()
{
    f=false;
    while((s[cnt++]=getchar())!=EOF);//s[--cnt]='\0';
    for(int i=0;s[i];)
    {
        if(ckend(i))
        {
            i+=5;
            if(!f)
            {
                printf("Blank !\n");
            }
            else
            {
                cout<<p<<endl;
            }
            f=false;
            p.clear();
            continue;
        }
        else
        {
            for(int j=7;~j;--j)
            {
                p+=(!!((1<<j)&s[i]))+'0';
            }
            i++;
            f=true;
        }
    }
    return 0;
}