初学者的C语言题目.
编写程序,给定一个整数i,请求出另一个整数j,使i和j在用8位二进制表示时互为逆序。例如,给定i=3,应得到j=192(3的二进制为00000011,192的二进制为11...
编写程序,给定一个整数i,请求出另一个整数j,使i和j在用8位二进制表示时互为逆序。例如,给定i=3,应得到j=192(3的二进制为00000011,192的二进制为11000000)。提示:
(1) 十进制整数转换成二进制整数用“除2求余”法;
(2)二进制整数转换成十进制整数“按权相加”法。
1楼能不能简单点;比如:f[n]是什么?我们没学。还有些东西能不能简单一点? 真是很感谢你 展开
(1) 十进制整数转换成二进制整数用“除2求余”法;
(2)二进制整数转换成十进制整数“按权相加”法。
1楼能不能简单点;比如:f[n]是什么?我们没学。还有些东西能不能简单一点? 真是很感谢你 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
展开全部
程序代码如下:
程序说明:定义了一个字符常量n和一个整型的数组f[n]给n赋值20是为了给数组足够大的空间,用来存放所求出来的二进制代码,其实在实际抄作过程中只用到了8个,这个在定义时只要大于8的数一般就可以了,这对去程序的运行没有任何影响。因为程序中所求出来的二进制码是逆序的(如3的二进制代码按此程序求出来为11000000即为192源码,如果要得到正常的二进制码则另外定义一数组,将所求代码逆序存放或者用堆栈。但是此程序已经能够达到所要的功能不需要再进行上述类似抄作)(这个算法已经很简单了)
#include <math.h>
#define n 20
main()
{int i=0,j,k,a,f[n],sum=0;
printf("please input the number you want to operate\n");
scanf("%d",&a);
while(a!=0)
{f[i]=a%2;
a=(int)(a/2);
i++;
}
if(i<7)
for(;i<=7;i++)
f[i]=0;
k=i--;
for(j=0;j<k;j++)
{sum+=f[j]*pow(2,i);
i--;}
printf("the number you want is:\n");
printf("%d",sum);
}
程序说明:定义了一个字符常量n和一个整型的数组f[n]给n赋值20是为了给数组足够大的空间,用来存放所求出来的二进制代码,其实在实际抄作过程中只用到了8个,这个在定义时只要大于8的数一般就可以了,这对去程序的运行没有任何影响。因为程序中所求出来的二进制码是逆序的(如3的二进制代码按此程序求出来为11000000即为192源码,如果要得到正常的二进制码则另外定义一数组,将所求代码逆序存放或者用堆栈。但是此程序已经能够达到所要的功能不需要再进行上述类似抄作)(这个算法已经很简单了)
#include <math.h>
#define n 20
main()
{int i=0,j,k,a,f[n],sum=0;
printf("please input the number you want to operate\n");
scanf("%d",&a);
while(a!=0)
{f[i]=a%2;
a=(int)(a/2);
i++;
}
if(i<7)
for(;i<=7;i++)
f[i]=0;
k=i--;
for(j=0;j<k;j++)
{sum+=f[j]*pow(2,i);
i--;}
printf("the number you want is:\n");
printf("%d",sum);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询