初学者的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]是什么?我们没学。还有些东西能不能简单一点? 真是很感谢你
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
百度网友9edcf2987
2009-11-16 · TA获得超过443个赞
知道答主
回答量:99
采纳率:0%
帮助的人:0
展开全部
程序代码如下:
程序说明:定义了一个字符常量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);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式