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;
}
下一篇: JSTL格式化输出