把二进制数当成数组进行左移运算的,没隔四位要输出一个空格,我在这里看到此题:
一个给定的数值由左边开始升位到右边第N位,如
0010<<1 == 0100
或者
0001 0011<<4 == 0011 0000
请用C或者C++或者其他X86上能运行的程序实现。
题目要求是可以对带格式的(4位一空格)二进制数进行位操作。
接收带有空格的输入可以用cin.getline()函数,要求一个字符数组作为参数,以及最多能接收的长度和以及一个表示结尾的字符。此题没有什么特别之处,就是记住在输出的时候每四位一个空格,并且要忽略输入行中的空格。我的算法复杂度为O(n):
#i nclude <iostream>
using namespace std;
void Convert(char* input,int num)
{
int j=0;
for(int i=num+num/4;input[i]!='\0';i++)
{
if(input[i]==' ')
continue;
cout<<input[i];
if(++j%4==0)
cout<<" ";
}
for(int i=0;i<num;i++)
{
cout<<"0";
if((++j%4==0)&&(i<num-1))
cout<<" ";
}
}
int main()
{
char input[100];
cout<<"input string:";
cin.getline(input,100,'\n');
int num;
cout<<"input number:";
cin>>num;
Convert(input,num);
getchar();
getchar();
return 0;
}
using namespace std;
void Convert(char* input,int num)
{
int j=0;
for(int i=num+num/4;input[i]!='\0';i++)
{
if(input[i]==' ')
continue;
cout<<input[i];
if(++j%4==0)
cout<<" ";
}
for(int i=0;i<num;i++)
{
cout<<"0";
if((++j%4==0)&&(i<num-1))
cout<<" ";
}
}
int main()
{
char input[100];
cout<<"input string:";
cin.getline(input,100,'\n');
int num;
cout<<"input number:";
cin>>num;
Convert(input,num);
getchar();
getchar();
return 0;
}
分类:
面試
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具