㈠ 用c语言编程把一个十进制数转化为八进制数
先将十进制数转换为二进制数,然后就是从低位开始,每三位对应一位,不足补0
比如-32的代码是10101110(随便写的)
转换之后就是256,前面一个不足三位,在最前面补0
010
101
110
2
5
6
㈡ 将10进制数转化为16进制数和8进制数的c语言代码
摘要 您好,很高兴为您解答。将10进制数转化为16进制数和8进制数的c语言代码,步骤如下哦亲~:
㈢ C语言 十进制数转换八进制 算法
方法一:直接使用控制字符串 %o 八进制%x
方法二:
求余来算,比如求十进制数 x(x>100) 的8进制,先通过 x%8 可以得到个位(末位)上的数,当十进制数等于8时,必然会进位,求余的结果正好是不能进位的部分,x=x/8(这就像位移,x的8进制数向右移了一位),这样已经求出来的 个位 位移后没有了,原来的十位变成了个位,继续把得到的x按上面的方式求末位,就能求出来十位,按照这种方式得到的 8进制数 是反的(先得到个位,再十位。。。),这样很适合放到栈中,取得时候又会反过来,伪代码可以这样写:
while(x){
printf("%d",x%n);//会打印出x转换为 N进制数 从低位到高位上的每一位数
x/=n;
}
十进制转换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语言程序怎么把十进制的数转换成八进制的数
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);
}
㈤ 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语言的函数调用如何将一个十进制数转换为八进制数
10进制转换8进制输出,使用printf函数的格式输出%o即可。如果需要得到转换后的字符串,使用sprintf函数即可。
例程:
#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语言十进制怎么转换八和十六(求过程)
先10转2 再转8,16进制。8,16转2再转10进制。
比如:
八进制:63 ->二进制:110(6) 011(3) -> 十进制:32+16+2+1 = 51
十六进制:A5 ->二进制:1010(A) 0101(5) -> 十进制:128+32+4+1 = 165
十进制 19 ->二进制 1 0011 -> 八进制: (010 011) = 23
-> 十进制:(0001 0011) = 13
通过二进制之后 会简单多了,希望对你有帮助。
㈧ C语言十进制转八进制
现在我一共给你三个答案:
1递归的,
2你原先改成的,
3一般的
**********************************************************************
/*如你所愿写个递归的*/
#include<stdio.h>
r8(int a)
{
int i,j;
if(a==0)
return (0);
else
{
j=a%8;
i=a/8;
r8(i);
printf("%d",j);
}
}
int main()
{
int n;
printf("请输入十进制数:");
scanf("%d",&n);
printf("转换成八进制数是:");
r8(n);
printf("\n");
}
**********************************************************************
原先代码修改的:
#include "stdio.h"
#include "math.h"
main()
{
int i,n=0,o=0,j=0;
scanf("%d",&i); /*改成*/
if(i<=7)
o=i;
else
{
while(i>7)
{ /*加括号*/
j=i%8;
i=i/8;
o=j*pow(10,n)+o;
n++;
} /*加括号*/
}
o=o+i*pow(10,n);
printf("o=%d\n",o);
}
**********************************************************************
另外,转八进制可以这样写
#include "stdio.h"
int main()
{
int d;
printf("请输入十进制数:");
scanf("%d",&d);
printf("该数的八进制表示为:%o\n",d);
return 0;
}
㈨ 用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]='