三進制C語言
1. 在c語言中整型常數可用十進制、八進制和______進制三種數製表示。
在C語言中整型常數可用十進制、八進制和十六進制三種數製表示。
1、八進制整常數必須以0開頭,即以0作為八進制數的前綴。數碼取值為0~7。八進制數通常是無符號數。
(1)以下各數是合法的八進制數:
015、0101、0135777。
(2)以下各數不是合法的八進制數:
252(無前綴0)、0386(包含了非八進制數碼)、-0127。
2、十六進制整常數的前綴為0X或0x。其數碼取值為0~9,A~F或a~f。
(1)以下各數是合法的十六進制整常數:
0X2A(十進制為42)、0XA0 (十進制為160)、0XFFFF (十進制為65535)。
(2)以下各數不是合法的十六進制整常數:
5A (無前綴0X)、0X3H (含有非十六進制數碼)。
3、十進制整常數沒有前綴。其數碼為0~9。
(1)以下各數是合法的十進制整常數:
235、-528、65535、1627。
(2)以下各數不是合法的十進制整常數:
023 (不能有前導0)、23D (含有非十進制數碼)。
(1)三進制C語言擴展閱讀:
C語言的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
C語言包含有各種控制語句僅有9種,關鍵字也只有32個,程序的編寫要求不嚴格且多以小寫字母為主,對許多不必要的部分進行了精簡。
實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故C語言擁有非常簡潔的編譯系統。
C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。
2. c語言中怎麼轉換為三進制
轉為2進制會吧
3進制類似 進行模3取余
然後逆序就可以了
參考代碼
#include<stdio.h>
intmain()
{
intn,l;
intv[100]={0};
scanf("%d",&n);
l=0;
while(n)
{
v[l++]=n%3;
n/=3;
}
while(l--)
{
printf("%d",v[l]);
}
return0;
}
3. 用c語言將十進制轉化三進制怎麼做
用內部函數 itoa(v,s,3); v 為給入的10進制數,s 為3進制結果 字元串。
例如:
#include <stdio.h>
int main(){
int v;
char s[60];
printf("input v:");
scanf("%d",&v);
itoa(v,s,3);
printf("%s\n",s);
return 0;
}
輸入10,輸出101
====
手工計算也可以,用不斷除以3,取余數,拼起來即可。與除2取余數轉換到2進制的方法一樣。用 itoa(v,s,base); 的好處是,你只要更換base,便可得 base 進制的結果,免得自己寫程序轉換。
4. 為什麼在c語言中會引入三種進制數!八進制,十進制,十六進制!難道一種進制數不夠用還是為什麼哪位
1) 二進制數中只有兩個字元0和1,表示具有兩個不同穩定狀態的元器件。例如,電路中有,無電流,有電流用1表示,無電流用0表示。類似的還比如電路中電壓的高,低,晶體管的導通和截止等。
2) 二進制數運算簡單,大大簡化了計算中運算部件的結構。
由於二進制數據的基R較小,所以二進制數據的書寫和閱讀不方便,為此,在小型機中引入了八進制。
八進制的基R=8=2^3,有數碼0、1、2、3、4、5、6、7,並且每個數碼正好對應三位二進制數,所以八進制能很好地反映二進制。八進制用下標8或
數據後面加O表示 例如:二進制數據 ( 11 101 010 . 010 110 100 )2 對應 八進制數據 ( 3 5 2 . 2 6 4
)8或352.264O.
人們通常使用的是十進制。它的特點有兩個:有0,1,2….9十個基本數字組成,十進制數運算是按「逢十進一」的規則進行的.
在計算機中,除了十進制數外,經常使用的數制還有二進制數和十六進制數.在運算中它們分別遵循的是逢二進一和逢十六進一的法則.
由於二進制數在使用中位數太長,不容易記憶,所以又提出了十六進制數
十六進制數有兩個基本特點:它由十六個字元0~9以及A,B,C,D,E,F組成(它們分別表示十進制數10~15),十六進制數運算規律是逢十六進一,即基R=16=2^4,通常在表示時用尾部標志H或下標16以示區別。
例如:十六進制數4AC8可寫成(4AC8)16,或寫成4AC8H。
5. C語言中的整數可用哪幾種進製表示如何表示
C語言只有十進制和十六進制,平常用的一般都是十進制,十六進制是以0x開頭的,其他進制可以通過itoa函數很容易轉換得到,頭文件是stdlib.h,itoa有三個參數,第一個參數是十進制的數,第二個參數是用來存儲轉換後的內容,第三個參數就是想轉換的進制類型,比如二進制就寫2
6. C語言求教大神,這個平衡三進制怎麼轉換的啊,有什麼簡便的方法嗎
1 和0就是自己值了, -就是-1
於是 一個字元串
比如
1-10-
就是
1*3^4 + (-1)*3^3+1*3^2+0*3^1 + (-1)*3^0
這樣明白了嗎?
其實代碼很好寫的。
7. 將10進制轉為三進制的c語言
#include<stdio.h>
#include<stdlib.h>
#defineN30
intmain()
{
inta[N],m,i=0,t;
printf("請輸入一個10進制數: ");
scanf("%d",&m);
t=m;
while(t)
{
t/=3;
a[i++]=m-3*t;
m=t;
}
printf("轉換成3進制數為: ");
while(i)
printf("%d",a[--i]);
printf(" ");
return0;
}
希望對你有所幫助,滿意請採納,謝謝!!
8. C語言:鍵盤輸入一個十進制整數,輸出其對應的二進制、三進制、四進制……十六進制數值。
#defineN"0123456789ABCDEF"
#include<stdio.h>
voidchange(intx,intn,char*p){
chartmp[100];//臨時存放轉換數
inti,total=0;
while(x){
tmp[total++]=N[x%n];
x/=n;
}
for(i=total-1;i>=0;i--){
p[total-1-i]=tmp[i];
}
if(total==0){
p[0]='0';
p[1]=0;
}
else
p[total-1-i]=0;
}
intmain()
{
chars[100];//用於存放轉換的進制的數
inti,x;
printf("把一個數轉換成234...16進制數 ");
scanf("%d",&x);
for(i=2;i<=16;i++){
change(x,i,s);
printf("轉換成%d進制是:%s ",i,s);
}
}
9. 把一個十進制數轉化成一個三進制數,這個程序錯在哪裡
num=num/3-num%3;這句話有點問題,應該是num=num/3或者num=(num-num%3)/3;輸出的時候是逆序。for(i=0;i<k;i=i+1)
{ printf("%d",a[i]);}
改成for(i=k-1;i>=0;i--)
{ printf("%d",a[i]);}
10. c語言123456789=100編程思想
就是個深度優先搜索。
枚舉所有符號可能添加的情況。
{
s=0; /*該方式下的和*/
m=1; /*作操作數*/
n=i; /*獲取i在3進制下的每一位會破壞i,所以借用變數n來獲取*/
op='+'; /*第一次操作方式為+*/
ptr=0; /*指針用來記錄運算過程*/
str[ptr++]='1'; /*首先記錄一個1*/
for (j=2;j<=9;j++) /*八次循環,每次的下一個操作數是j*/
{
if (n%3) /*3進制下的第j-1位數,如果不是0,則要完成先前的操作*/
{
if (op=='+') s+=m; else s-=m;m=j;
}
這段是在做拆符號的事情,就是根據i的值確定那8個空格填什麼
switch(n%3) /*根據這一位的情況進行處理*/
{
case 0:m=m*10+j;break;
case 1:op='+';break;
case 2:op='-';break;
}
if (n%3) str[ptr++]=op; /*記錄運算模式*/
str[ptr++]='0'+j;
n/=3;
}
就是按照填好的符號,計算表達式的結果
然後就是判斷是不是是100。