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

c语言程序转换8进制

发布时间: 2023-04-07 03:28:16

‘壹’ 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);

}

(1)c语言程序转换8进制扩展阅读:

一、二进制数转换

二进制数转换成十进制数

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

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

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

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

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

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

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

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

‘贰’ C语言 十进制数转换八进制 算法

  1. 方法一:直接使用控制字符串 %o 八进制%x

  2. 方法二:

    求余来算,比如求十进制数 x(x>100) 的8进制,先通过 x%8 可以得到个位(末位)上的数,当十进制数等于8时,必然会进位,求余的结果正好是不能进位的部分,x=x/8(这就像位移,x的8进制数向右移了一位),这样已经求出来的 个位 位移后没有了,原来的十位变成了个位,继续把得到的x按上面的方式求末位,就能求出来十位,按照这种方式得到的 8进制数 是反的(先得到个位,再十位。。。),这样很适合放到栈中,取得时候又会反过来,伪代码可以这样写:

    while(x){

    printf("%d",x%n);//会打印出x转换为 N进制数 从低位到高位上的每一位数

    x/=n;

    }

  3. 十进制转换N进制:

    #include<stdio.h>

    #include<stdlib.h>

    #include<string.h>

    typedef int INT;

    typedef struct dd

    {

    INT data;

    struct dd *next;

    }LNode,*LStack;

    LStack pushstack(LStack top,int x)

    {

    LStack p;

    p=(LStack)malloc(sizeof(LNode));

    if((x)!=-1) {p->data=(x); p->next=top; top=p;}

    return top;

    }

    LStack outstack(LStack top,int *x)

    {

    LStack p=top;

    *x=p->data;

    top=p->next;

    free(p);

    return top;

    }

    main()

    {

    int x,n;

    LStack top=NULL;

    printf("请输入原数及要转换的进制:");

    do{

    scanf("%d%d",&x,&n); //输入一个十进制数和要转换的进制,比如3 2 得到1 }while(x>35||x<0||n<2);

    while(x){ //这个循环把每一位放到栈中

    top=pushstack(top,x%n);

    x/=n;

    while(top!=NULL)

    {

    top=outstack(top,&x);

    if(x<10)

    printf("%c",x+'0');

    else

    printf("%c",x+'A'-10);

    }

    return 0; }

‘叁’ C语言编程,输入十进制数输出十六进制和八进制

可以通过下面的公式解决

#include<stdio.h>

const int maxn = 128;

const int index8 = 8;

const int index16 =16;

int main()

{int Array8[maxn];

int Array16[maxn];

int n, cot8 = 0;

scanf("%d", &n);

int m = n, cot16 = 0;

while(n) {Array8[cot8++] = n % index8;

n /= index8;}

while(m) {Array16[cot16++] = m % index16;

m /= index16;}

int i;

for(i = cot8 - 1; i >= 0; i--)

printf("%d", Array8[i]);

puts("");

for(i = cot16 - 1; i >= 0; i--)

(3)c语言程序转换8进制扩展阅读:

十进制转十六进制的具体方法:

对于整数部分,用被除数反复除以16,除第一次外,每次除以16均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。

对于小数部分,采用连续乘以基数16,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”。

10进制数转换成十六进制数,这是一个连续除以16的过程:把要转换的数,除以16,得到商和余数,将商继续除以16,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。

‘肆’ 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语言编写一个十进制转换成二进制或八进制或十六进制的程序需要怎么打

#include<stdio.h>

voidmain()

{

//进制转换函数的声明

inttransfer(intx);

intx;

printf("请输入一个十进制数:");

scanf("%d",&x);

printf("转换成二进制数是:%d ",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;

}

(6)c语言程序转换8进制扩展阅读

C语言:整数转换十六进制数和八进制

#include<stdio.h>

voidmain()

{

inti;

printf("请输入一个十进制数:");

scanf("%d",&i);

printf("这个数转换为十六进制数:%x ",i);

printf("这个数转换为八进制数:%o ",i);

getch();

return0;

}

‘柒’ 用C语言把十进制转换为8进制,最好用栈结构

用系统栈(递归)实现转换的函数:
系统递归函数在调用时,如果输出语句是在调用语句的后面时念搜,则输出部分是放入系统栈中的(须等到递归调用返回时,才轮到输出语句的执行)。使用递归函数的优点是程序编写简单,压栈与退栈操作由系统完成,特别适合于问题本身具有递归仔握历的特点。缺点是效率上比非递归的要差些。
#include<stdio.h>
void dec2oct(int x) //将十进制数x转化为8进制数输出
{if(x>7)dec2oct(x/8); //如果 x 不止一位8进制数,则先处理其高位部分
printf("%d",x%8); //递归返回时再输出 x 的最低位
}
int main()
{int x;
scanf("%d",&x); /皮缺/读入要转换的十进制数x
dec2oct(x); //将 x 转换为8进制数输出
return 0;
}

‘捌’ 要求用c语言的函数调用如何将一个十进制数转换为八进制数

  1. 10进制转换8进制输出,使用printf函数的格式输出%o即可。如果需要得到转换后的字符串,茄滚使用sprintf函数即可。

  2. 例程:

    #include<stdio.h>
    intmain(){
    intx;
    chars[100];
    printf("输入要转换的十进制数: "颤雹余);
    scanf("%d",&x);
    sprintf(s,"%o",x);//十进制转换为八进制,并保存到s字符串当中
    printf("使用sprintf函数转换的八进制数是:肆漏%s ",s)
    printf("使用printf函数转换的八进制数是:%o ",x);//十进制转换为八进制,并直接输出到屏幕
    return0;
    }

‘玖’ C语言中的八进制

除了二进制,C语言还会使用到八进档早谨制。

八进制是一种“逢八进一”的进制,它由 0~7 八个符号来描述。同样,此处通过十进制和八进制的对比来描述八进制的表示方式。

八进制基数为8,加法运算时逢八进一,减法运算时借一当八。例如,数字 0、1、5、7、14、733、67001、25430 都是有效的八进制。

当使用八进制表示十进制数字8时,由于表示八进制的符号只有 0~7,因此,根据逢八进一的规则,需要向高位进一位,表示为10。同理,使用八进制表睁闭示十进制数字16时,继续向高位进一位,表示为 20。

扩行基展资料

八进制转换为十进制的源代码如下

#include<stdio.h>

void main()

{

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

p=s;

printf("Please input a Octal number:");

gets(p);

n=0;

while(*(p)!='')

{

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

p++;

}

printf("Octal number to Decimal number:%d",n);

}

‘拾’ 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]);
}

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