C语言程序题,任意输入一个整数,编一个程序,使其输出输出相应的原码、反码及补码。
展开全部
#include<stdio.h>
#include<math.h>
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<i;j++) y[j]=a[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<i;j++) y[j]=a[j];
if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;y[j]=1;
for(k=0;k<j;k++) if(y[k]) f[k]=0;else f[k]=1;f[k]=1;
for( k=0;k<j;k++) {if (k==0)b[k]=f[k]+1;else b[k]=f[k]+w;if (b[k]==2){b[k]=0;w=1;}else w=0;}b[k]=1;
}
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");
}
#include<math.h>
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<i;j++) y[j]=a[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<i;j++) y[j]=a[j];
if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;y[j]=1;
for(k=0;k<j;k++) if(y[k]) f[k]=0;else f[k]=1;f[k]=1;
for( k=0;k<j;k++) {if (k==0)b[k]=f[k]+1;else b[k]=f[k]+w;if (b[k]==2){b[k]=0;w=1;}else w=0;}b[k]=1;
}
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");
}
展开全部
#include <stdio.h>
#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();
}
#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();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询