#include <stdio.h>
#include <iostream>
#include<math.h>
#include<cstring>
using namespace std;
int arr[100];
void Change(int x)
{
int i,j,k;
k=abs(x);
i=0;
while(k!=0)
{
arr[i]=k%2;
k/=2;
i++;
}
if(x<0)
{
for(i=0;i<7;i++)
{
if(arr[i])
{
arr[i]=0;
}
else
{
arr[i]=1;
}
}
int y=0;
while(arr[y])
{
arr[y]=0;
y++;
}
arr[y]=1;
//arr[7]=1;
}
}
int main(int argc, char *argv[])
{
// 请在此输入您的代码
int a[32];
int i,j,k;
for(k=0;k<=9;k++)
{
for(i=0;i<32;i++)
{
cin>>a[i];
Change(a[i]);
for(j=7;j>=0;j--)
{
if(arr[j]==1)
cout<<arr[j];
else
cout<<" ";
}
memset(arr,0,sizeof(arr));
if(i%2==1)
{
cout<<endl;
}
}
}
return 0;
}
这道题难度不算太大,基本思想是把每个数字转换成对应的八位二进制补码的形式
注意正负数补码的区别!
同时,还学到了新的函数memset(初始化函数)
一般使用格式为memset(首地址,值,sizeof(地址总大小));
比如对数组a赋值
memset(a,0,sizeof(a));