1樓:網友
比如123你將它除以8
得到商15(123/8得到),和餘數3(123%8得到)然後因為15還大於8,所以還要轉。
得到商1(15/8得到),得餘數7(15%8得到)7小於8,轉化完成 ,你得到 123 = 173(8)
2樓:手機使用者
char buffer[16]; 長整型數追多有16為,所以設乙個16位的char陣列*/
int len, i;
number *u;
len = sprintf(buffer, "d", n >=0) ?n : n);/把n用sprintf列印到buffer中。
for (i = 0; buffer[i] !0'; i++)buffer[i] !0'意思是到字串末尾。
buffer[i] =buffer[i] -0'; 把buffer[i]中的內容由字元轉換為數字(因為sprintf自動將其轉換成了字元)。
比如n=10時,buffer[0]='1'(ascii碼49),buffer[1]='0'(ascii碼48)。
我們想要的是buffer[0]=1,buffer[1]=0。所以要buffer[i]=buffer[i]-'0'*/
c語言型別轉換運算問題
3樓:網友
這個問題有點麻煩。
是這樣的。雖然你宣告瞭unsigned char a,b,c,d,e;
但實際上,在進行+-*/四則運算時,他實際上是當成整型變數int來處理的。
先看a=0 這個沒什麼問題。
b=251,如果是int型別的話:0000 0000 1111 1011(一共32位,我只寫這幾位)
但由於b是unsigened char型別,所以b各二進位位是1111 1011
好了,關鍵的地方來了。
a-b==-251這時,他已經變成了int型別了,-251在計算機中的二進位表示(補碼)
251的反碼:1111 1111 1111 1111 1111 1111 0000 0100加1:就是-251的表示。
這就是-251在記憶體中的表示。
好啦這時把這個值賦給d,所以只留下最低8位 0000 0101,又是無符號數,明白了吧,就是5
所以d的值最後是5
c=(a-b)/4這兒。
251/4==-62(int型別)
62在計算機中表示:
反碼加1:1111 1111 1111 1111 1111 1111 1100 0001+1
取最低8位給c賦值:
c :1100 0010
由於c是unsigned char 最高位也不是符號位,轉成整數就是194
所以最後,c是194,d是5
4樓:網友
c=(a-b)/4;
好像會轉成int 來計算 c = -62 ,然後再轉回unsigned char -62(4294967234)[0xffffffc2]
所以c 最後是0xc2 也就是194
d=a-b;
同理 d = -251(4294967045) (0xffffff05)
d = 5;
5樓:it孤鶩
靠。。。少看了乙個減。
c=-251/4=-62=256+(-62)=194d=-251=256+(-251)=5
e=5/4=1
unsigned char 就是非負 他的範圍是0-255要是是負數 他會把他轉換成0-255範圍的只要加256就可以了。
6樓:被世界
c=194,d=5。
c定義的型別是unsigned char 無符號字元,所以c=(a-b)/4這條語句先計算(a-b)/4的值為-62然後強制轉換成unsigned char ,-62的二進位為11000010,當強制轉換之後就將符號位的1計算進去,11000010 就是194。
同理得到d的值。
希望對你有幫助。
7樓:封視萌
c = 194; d = 5;
負數在在記憶體上儲存是有補碼錶示的。
a-b)/4 = -62;
原碼1011 1110
補碼1100 0010 = 194;同理可以求出d。
c語言轉化問題?
8樓:網友
釐公尺(cm)到英吋(inch)到英呎(foot)是2個步驟的換算。
第一步,得到英呎:
int(cm/inch/12),即。
長度(以cm表示的)÷,用int()函式,只保留英呎部分並輸出。
int(cm/inch/12)*12,是整數英呎部分換算為英吋的值。
cm/inch-int(cm/inch/12)*12,是餘下的不能換為整數英呎的英吋值。
如: 180cm
180/英呎,int()取整後,為5英呎。
180/英吋。
即:180釐公尺=5英呎11英吋。
c語言演算法問題
9樓:網友
大部分浮點數在計算機中是無法表示的,你進行了多次除法運算,中途損失了一些精度,最後結果和理論不一樣很正常。
c語言演算法問題
10樓:建築之風帶動
(1)、由e、f、o組成的全部字串為3^n;
2)、想法有些麻煩,但應該是正確的,同時出現"oo"的情況,1》、假設第乙個位置出現「oo」,則「oo」(非o)(之後任意),則為2*3^(n-3),2》、假設第2個位置出現「oo」,則(非o)「oo」(非o之後任意),則為2*2*3^(n-4),3》、假設第i個位置出現「oo」,則(前面i-1個為非o)「oo」(非o之後任意),則為2^(i-1)*2*3^(n-i-2)
3)、所以綜上的話,應該是3^n - 2^i*3^(n-i-2)(i=1 to n-1)
11樓:金宵失眠夜
這是數學組合問題;
演算法思路是 :一共有n個字母,先排e和f,最後把o「插空」;
n為奇數:e和f的和最少有(n-1)/2個,否則不可能沒有oo;
n為偶數:e和f的和最少有n/2個,否則不可能沒有oo;
計算機中讓e和f的和個數為i,i++,e,f的排列數為2^i,o的插空為c(i+1,n-i);
樓主,要程式嗎?
C語言怎麼將longlong型別數字轉化成字串
如下 include include int main 執行結果 c語言中如何將short,int,long,float這些型別的數值轉換為字串?可以使用sprintf函式轉換。1 對於整型,各個平台有一些函式可以專門轉換,比如itoa等。不過更通用的做法是使用sprintf函式。2 宣告 int ...
C語言問題,C語言問題
符合,相當於一個字元,ascii字元可以直接轉成short整型數字。101 不符合,這是一個字串,不能作為常數。不符合,因為 會對雙引號轉義,找不到另一個雙引號。會出錯。而且就算是 也不符合,因為編譯器會把它理解成一個字串,而非單個字元。e3不符合。019不符合,0開頭代表8進位制數,不能出現9。0...
C語言問題,c語言問題
這是值傳遞,值傳遞的過程的是,系統會給你的實參的值進行乙個拷貝,把這個拷貝傳遞給形式引數。因為是拷貝,所以實參裡頭的值是不會改變的。如果是位址傳遞就不一樣了。補充 你可以定義乙個指標,這個指標指向主函式的結構體。然後子函式的形參也定義乙個指向結構提的指標。這樣就是位址傳遞了。樓主還是好好花點時間看看...