C语言程序题,任意输入一个整数,编一个程序,使其输出输出相应的原码、反码及补码。

2024-12-02 07:32:41
推荐回答(3个)
回答1:

#include
#include
void main()
{
int m,n,a[10],i=0,y[100],f[100],b[100],j,k;
printf("请输入一个整数:");
scanf("%d",&n);
m=abs(n);
while (m!=0)
{
a[i]=m%2;
m=m/2;
i=i+1;
}
if (n>=0)
{
for(j=0;j if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;
y[j]=0;
for(k=0;k<=j;k++)
{
f[k]=y[k];
b[k]=y[k];
}
}
else
{
int w=0;
for(j=0;j if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;y[j]=1;
for(k=0;k for( k=0;k }
printf("原码:");for(k=j;k>=0;k--)printf("%d",y[k]);printf("\n");
printf("反码:");for(k=j;k>=0;k--)printf("%d",f[k]);printf("\n");
printf("补码:");for(k=j;k>=0;k--)printf("%d",b[k]);printf("\n");
}

回答2:

#include
#include "math.h"
main()
{
int x,s;
int i,p=1;
int a[32],b[32];
printf("\n输入一个数\n");
scanf("%d",&x);
s=x;
if(x<0)
{
x=abs(x);
a[0]=1;
}
else
a[0]=0;

for(i=31; i>0; --i)
{
a[i]=x%2;
x /= 2;
}

printf("原码是:\n");
for(i=0; i<32; ++i)
{
printf("%d",a[i]);
if(3 == i%4)
{
printf(" ");
}
}
printf("\n");
printf("反码是: \n");
if(s>0)
{
for(i=0;i<32;i++)
{
printf("%d",a[i]);
if(i%4==3)
{
printf(" ");
}
}
}
else
{
for(i=0;i<32;i++)
{
if(i==0)
printf("%d",a[0]);
else
{
a[i]=(a[i]+1)%2;
printf("%d",a[i]);

}
if(i%4==3)
{
printf(" ");
}
}
}
printf("\n");
printf("补码是:\n");
if(s>0)
{
for(i=0;i<32;i++)
{
printf("%d",a[i]);
if(i%4==3)
printf(" ");
}
}
else
{
for(i=31;i>0;i--)
{
if(p==1)
{
a[i]=(a[i]+1)%2;
p=(a[i]+1)%2;
}
}
for(i=0;i<32;i++)
{
printf("%d",a[i]);
if(i%4==3)
printf(" ");
}
}
getch();
}

回答3:

自己去下载吧。