怎样写一个c语言程序 将八进制数转换为二进制数啊? 帮忙写一下程序,最好有注释。谢谢各位啦。

如题所述

//我刚写了一个十进制转化为八进制的,比你要求的多一步,希望你自己好好看看啊
//你看程序时,自己手动的算一下十进制转化为二进制,以及二进制转化为八进制,这样就可以理解里面的意思了
#include
int
a[100];//十进制数转化为八进制数
要先把十进制数转化为二进制
在把二进制转化为八进制
void
fun2(int
k)//二进制转化为八进制数
{
int
i,
sum,
b[100],
top
=
0;
for(i
=
0;
i
<=
k
-
3;
i
+=
3)//每三位二进制转化为一位八进制数
{
b[top++]
=
a[i]*1
+
a[i
+
1]*2
+
a[i
+
2]*4;//每三位二进制转化为一位八进制数
分别乘以
2^0
2^1
2^3
}
if(i
==
k
-
2)//最后二进制还有三位没有算
{
b[top]
=
a[i]*1
+
a[i
+
1]*2
+
a[i
+
2]*4;//每三位二进制转化为一位八进制数
分别乘以
2^0
2^1
2^3
}
else
if(i
==
k
-
1)//最后还有两位没算
{
b[top]
=
a[i]*1
+
a[i
+
1]*2;//每三位二进制转化为一位八进制数
分别乘以
2^0
2^1
2^3
}
else
if(i
==
k)//只有一位没算了
{
b[top]
=
a[i]*1;
}
printf("八进制数为:
");
for(top;
top
>=
0;
top--)//栈,
先进入数组
{
printf("%d",
b[top]);
}
printf("\n");
}
void
fun(int
k)//转化为二进制数
{
int
top;
for(top
=
0;
k
!=
0;
top++)
{
a[top]
=
k%2;
k
/=
2;
}
fun2(top
-
1);
}
int
main()
{
int
i,
k;
printf("输入十进制数:
");
scanf("%d",
&k);
fun(k);
return
0;
}
//其实栈就是数组倒着的,别把它写的太复杂了
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-11-20
#include
"stdio.h"
int
max(int
x,int
y)
//这是函数的定义,这你应该明白吧!x,y是形参
{
int
z;
if(x>y)
/*函数被调用后,主调函数中的实参被传递,也就是相当于把要比较的两个数被分别赋值给了x,y了*/
{
z=x;
//如果x>y,就把x赋值给z;
}
else
{
z=y;
//如果x
评论
0
0
加载更多本回答被提问者采纳
第2个回答  2019-06-24
#include
int
main()
{
int
i;
char
s[16];
scanf("%o",&i);
itoa(i,s,2);
printf("%s\n",s);
}
//转10、16进制更简单,直接printf("%X;%d\n",i,i);
//没有楼上几位讲的那么复杂,你们都陷入了进制的怪圈去了。在计算机里的数就是数,只有整形、实型等等的分别,根本没有进制那么一说,进制只是显示格式而已。

怎样写一个c语言程序 将八进制数转换为二进制数啊? 帮忙写一下程序,最...
void fun2(int k)\/\/二进制转化为八进制数 { int i, sum, b[100], top = 0;for(i = 0; i <= k - 3; i += 3)\/\/每三位二进制转化为一位八进制数 { b[top++] = a[i]*1 + a[i + 1]*2 + a[i + 2]*4;\/\/每三位二进制转化为一位八进制数 分别乘以 2^0 ...

用c语言编写八进制转换二进制程序
int main(){ int num;char str[33];printf("输入八进制数:");scanf("%o",&num);itoa(num, str, 2);printf("八进制数%o转化为二进制是%s\\n", num,str);return 0;} 已修改!解题技巧: 用 itoa()和atoi() 两个库函数。注:1.itoa()函数有3个参数:第一个参数是要转换的数字,第...

8进制转2进制怎么转?
第n位的位权就为 8n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。注意,这里我们需要以十进制形式来表示位权。再如,将十六进制数字 9FA8C 转换成十进制:9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)从右往左看,第1位的位权为 160=1,第2位的位权...

八进制整数向二进制、十进制、十六进制整数转换的C语言编程
printf("%c",b[i]);return 0;} 十六进制转十进制 1.#include<stdio.h> 2.#include<string.h> 3.#include<math.h> 4.int main()5.{ 6. double sum=0,x;7. char a[8];8. int len,i=0;9. gets(a);10. ...

c语言中的数据怎么转换成二进制?
c语言中没有表示二进制的字符,但是你可以根据十进制、八进制或者十六进制转换一下。可以利用短除法,将十进制转变成二进制,我们一般的思路是这样的,下面给出一个例子:把20转换成二进制:20\/2=10...余数为0 最低位10\/2=5...余数为05\/2=2...余数为12\/2=1...余数为01\/2=0...余...

八进制转换二进制数怎么转换?
1、十进制转换二进制 2 \/100 0 2\/50 0 2\/25 1 2\/12 0 2\/6 0 3\/2 1 1\/2 1 然后从尾到头读数就是 1100100 二进制转换八进制是3位一组 所以就是 001 100 100 位数不够,前面补0 2、八进制与二进制、十六进制之间关系与具体步骤 八进制 对应二进制 十六进制 对应二进制 十六进制 ...

请问用C语言编写一个十进制转换成二进制或八进制或十六进制的程序需要...
inttransfer(intx);intx;printf("请输入一个十进制数:");scanf("%d",&x);printf("转换成二进制数是:%d\\n",transfer(x));} inttransfer(intx){ intp=1,y=0,yushu;while(1){ yushu=x%2;x\/=2;y+=yushu*p;p*=10;if(x<2){ y+=x*p;break;} } returny;} ...

C语言-二进制、八进制、十进制、十六进制相互转换
将二进制数三位一组,依次求和,得到八进制结果。例如,01000010表示的八进制数为102。八进制转二进制:将八进制数倒序排列,每3位转化为二进制,高位补0。例如,八进制102转为二进制为001000010。二进制转十六进制:四位一组,依次求和,得到十六进制结果。例如,01000010表示的十六进制数为42。十六进制...

...键盘输入一个十进制数,将其转换为二进制、八进制和十六进制数...
\/\/转换为8进制 void showoct(int n){ if(n>7){ showoct(n\/8);printf(" ");} printf("%d",n%8);} \/\/转换为16进制 void showhex1(int n){ switch(n){ case 10: putchar('A'); break;case 11: putchar('B'); break;case 12: putchar('C'); break;case 13: put...

C语言\/C++实现任意进制数之间互转|详细思路|看完保证会!不会你找我...
首先,实现任意进制数转换为十进制数。以八进制数76543210为例,转换为十进制数的公式为:7*8^{7}+6*8^{6}+5*8^{5}+4*8^{4}+3*8^{3}+2*8^{2}+1*8^{1}+0*8^{0},最终结果为十进制数16434824。此方法适用于任意进制数到十进制数的转换。接着,十进制数转换为任意进制数。以...

相似回答