㈠ 用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]='