当前位置:首页 » 编程语言 » c语言数值转换八进制
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言数值转换八进制

发布时间: 2022-09-18 22:32:32

c语言: 输入一个十进制正整数,将其转换成八进制数,并输出结果。

个人意见,仅供参考!
1.
//用转意字符
⑴这是输出有前缀“0”的八进制数
int
main(void)
{
int
a;
printf("\n");
scanf("%d",&a);
printf("%#o",a);
/*"%#o"这里的“#”就是输出前缀的,“o”是八进制*/
getch();
return
0;
}
⑵输出无前缀的八进制数
main()
{
int
a;
printf("\n");
scanf("%d",&a);
printf("%o",a);
/*不要在o前加“#”*/
}
——————————————————————————————
2.
//用数据结构的知识解决
int
*Init()
{
int
*top,*base;
base=(int
*)malloc(sizeof(int)
*
50);
if(!base)
{printf("Error!");exit();}
top=base;
return
top;
}
int
*push(int
*top,int
n)
{
*top=n;
top++;
return
top;
}
int
pop(int
*top)
{
int
e;
top--;
e=*top;
return
e;
}
void
convs()
{
int
*top,
*base;
int
e,N;
int
i;
top=Init();
base=top;
printf("Input
the
number:\n");
scanf("%d",&N);
while(N!=0)
{
top=push(top,N%8);
N=N/8;
}
printf("After
change,the
number
is:\n");
while(top!=base)
{
e=pop(top);
top--;
printf("%d",e);
}
printf("\n");
}
main()
{
convs();
getch();
}

❷ 用C语言进行十进制和八进制的转换怎么做

如果输入是十进制字符串,输出是八进制字符串,则用如下dec2oct函数可实现转换

#include<stdio.h>

intdec2oct(char*dec,char*oct){
intnum=0,i=0,t;
charc;
do{
c=*dec;
if(!c)return0;//出错了,没找到10进制数
if(c>='0'&&c<='9')break;//找到十进制数了
elsedec++;
}while(1);
do{
num=num*10+(c-'0');
c=*++dec;
if(!c)break;//没有其他字符了
if(c>='0'&&c<='9')continue;//还有十进制字符,继续
elsebreak;//没有其他十进制字符了,退出
}while(1);
do{
t=num%8;
oct[i]=t+'0';
num=num/8;
if(num==0)break;
i++;
}while(1);
for(t=(i+1)/2;t<=i;t++){
num=oct[t];
oct[t]=oct[i-t];
oct[i-t]=num;
}
oct[i+1]='';
return1;
}
intmain()
{
chardec[20],oct[20];
while(scanf("%s",dec)==1)
if(dec2oct(dec,oct))printf("%s ",oct);
elsebreak;
return1;
}

该函数dec2oct先将输入字符串中的10进制字符串转换成二进制数存下来,然后再将二进制数转换成八进制字符串。

❸ c语言十进制转换为八进制

#include<stdio.h>

void main()

{

char *p,s[6];int n;

p=s;

gets(p);

n=0;

while(*(p)!='')

{n=n*8+*p-'0';

p++;}

printf("%d",n);

}

(3)c语言数值转换八进制扩展阅读:

一、二进制数转换

二进制数转换成十进制数

由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。例1105把二进制数110.11转换成十进制数。

二、十进制数转换为二进制数

十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。

1、十进制整数转换为二进制整数十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,

如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

2、十进制小数转换为二进制小数

十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

❹ 在C语言中如何把十进制数变成八进制数

不知道你要的是那种,是自己换算吗?
自己换算的话,用"除8求余数法“
比如(145)
145/8=18 余1
18/8=2 余2
2/8=0 余2
则自下往上取余数就可以了,即221
如果你想让计算机自己转换的话,就像楼上说的办法办就行了,呵呵。祝你好运!

❺ c语言十六进制转换为八进制

手工还是编程?
手工可以这样:把16进制数从左至右按16进制各位上的“数”代表的二进制依次写出来,比如0x9B8D7F6543D为,再从右至左每3位分开(最左端不足3位时在前面用0补齐)010,011,011,100,011,010,111,111,101,100,101,010,000,111,101。最后用八进制符号对应写出来就可以了——233432775452075。十六进制数0x9B8D7F6543D的八进制就是233432775452075!
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "string.h"
void dtob(char *p,int n){
static i=0;
if(n) dtob(p,n/2);
if(n) p[i++]=n%2+'0';
}
int dtoo(char *p){
int x,i,k=strlen(p)%3;
for(x=i=0;i<k;(x*=2)+=p[i++]-'0');
for(;p[i];i+=3)
(x*=10)+=((p[i]-'0')<<2)+((p[i+1]-'0')<<1)+p[i+2]-'0';
return x;
}
void main(void){
int n;
char a[33]="";
printf("Type a hexadecimal number...\nn=0x");
scanf("%X",&n);
dtob(a,n);
printf("The binary is %s.\n",a);
printf("The octal %d.\n",dtoo(a));
}

❻ C语言十进制怎么转换八进制,求详细描述,不要编译器运行的结果

十进制转任意进制一般都是用除基取余法,比如说102转8进制,
102除以8,商12,余6
12除以8,商1,余4
1除以8,商0,余1
商为0的时候即转换完成,将余数逆序连接起来就是结果,即10进制的102转8进制为146
将上述过程转为代码就是
#include <stdio.h>
int main()
{
int number = 102, i=0, div, rem;
int system = 8;//8进制
char s[50];

while (number) //除基取余法
{
div = number / system; //商
rem = number % system; //余
s[i++] = rem <= 9 ? rem + '0' : rem - 10 + 'A';
number = div; //上次的商赋给number
}
for (--i; i >= 0; i--)
printf("%c", s[i]);
printf("\n");

getchar();
return 0;
}

❼ 用c语言编程把一个十进制数转化为八进制数

先将十进制数转换为二进制数,然后就是从低位开始,每三位对应一位,不足补0
比如-32的代码是10101110(随便写的)
转换之后就是256,前面一个不足三位,在最前面补0
010
101
110
2
5
6

❽ c语言“把十进制数转换成八进制数”怎么写

#include<stdio.h>
#include<string.h>
main()
{
inti,m,n,s=0,t=1;chara[100],b[100];
gets(a);//用回车分割
scanf("%d%d",&n,&m);//输入的进制和想要转换的进制
for(i=strlen(a)-1;i>=0;i--)//先转10进制
{ if(n!=16)
s+=(a[i]-48)*t;
else
s+=(a[i]-55)*t;
t*=n;
}
for(i=0;s;i++)//10进制转你想要的进制
{
if(s%m>=10)
b[i]=s%m+55;
else
b[i]=s%m+48;
s/=m;
}
b[i]='';
for(i=strlen(b)-1;i>=0;i--)
printf("%c",b[i]);
}

这是任意进制的转换 望满意

❾ C语言程序怎么把十进制的数转换成八进制的数

C语言程序十进制的数转换成八进制的数的办法:

#include <stdio.h>
#include <math.h>
void main()
{
int n,a,sum = 0,i =0;
printf("十进制输出一个数n ");
scanf("%d",&n);
while(n)
{
a = n%8;
n = n/8;
sum += a*pow(10,i);
i++;
}
printf("八进制输出sum:%d",sum);
}