求一个C语言程序使输入一个数能显示出计算出它的原码和补码并显示出来(在VC6.0上运行)

求一个C语言程序使输入一个数能显示出计算出它的原码和补码并显示出来(在VC6.0上运行),第1张

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

#include<conio.h>

void convert(int num)

void oppose(int n)

int a[16]

void main(void)

{

int num,jdz

char ans

while(1)

{

printf("请输入任意一个十进制整数: ")

scanf("%d",&num)

printf("\n")

printf("其绝对值为: ")

jdz=abs(num)

printf("%d\n\n",jdz)

printf("其原码为: \n")

convert(jdz)

printf("\n\n")

if(num>=0)

{

printf("其补码为: \n")

convert(jdz)

printf("\n\n")

}

else

{

printf("其补码为: \n")

oppose(a[16])

printf("\n\n")

}

printf("按回车键继续或按ESC键结束程序!!!\n")

ans=getch()

while(ans!=13 &&ans!=27)

{

ans=getch()

}

if(ans==13) system("cls")

if(ans==27)

{

system("cls")

printf("谢谢使用!!!\n")

break

}

}

}

void convert(int num) /*定义转化为原码的函数*/

{

int i

a[0]=num%2

for(i=1i<=15i++)

{

a[i]=(num/2)%2

num/=2

}

for(i=15i>=0i--)

printf("%2d",a[i])

}

void oppose(int n)/*定义转化为补码的函数*/

{

int i

for(i=0i<=15i++)

{

switch(a[i])

{

case 1:a[i]=0break

case 0:a[i]=1break

}

}

for(i=0i<=15i++)

{

a[i]++

if(a[i]>1) a[i]=0

else break

}

for(i=15i>=0i--)

printf("%2d",a[i])

}

#include<stdio.h>

int main(){

int i,j,k

int a[16], af[16], ab[16]//af存储反码,ab存储补码第0位为符号位

char b[16]

scanf("%s", b)

for(i = 0b[i] != '\0'i++){

a[i] = b[i] - '0'

}

j = i-1

ab[0] = af[0] = a[0]//符号位始终不变

if(a[0] == 1){//当从屏幕输入的是负数,则作相应变换

for(i = ji >0i--){

af[i] = 1 - a[i]

ab[i] = a[i]

if(a[i] == 1){

i--

break

}

}

k = i

for(i >0i--)

af[i] = 1 - a[i]

for(i = ki >0i--)//补码从末位数起第一个不为0,以后均取反

ab[i] = 1 - a[i]

}

else{//如果是正数,则全部复制

for(i = ji >0i--){//正数反码、补码都与原码相同

af[i] = a[i]

ab[i] = a[i]

}

}

printf("对应的反码是:\n")

for(i = 0i <= ji++)

printf("%d", af[i])

printf("\n")

printf("对应的补码是:\n")

for(i = 0i <= ji++)

printf("%d", ab[i])

}

在vc下编译测试通过。另,本代码未考虑输入非法问题,所输入的数字智能由1和0组成


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7995937.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存