C語言問題,c語言問題

2023-03-04 12:10:09 字數 3554 閱讀 3656

1樓:匿名使用者

c語言中,「/的左右兩個運算物件均為整型資料時,執行的是整除運算,只有當兩個運算物件中至少有一個為float或double型時,才執行正常的除法運算,要想得到的結果可改為:

c=(x-32)*1/;即可。

2樓:匿名使用者

在c語言中兩個整型的變數進行算術運算時,得到的結果是整數,雖然你輸出的是按浮點數輸出但是實際上是把計算的結果轉化為浮點數,要想結果得要浮點數,那麼算術運算中至少有一個為浮點數。

所以可以把5改為 或9改為 或32改為。

3樓:青雲

因為除法運算的兩邊分別是整型資料時會把小數後的資料丟掉,得到的仍然是整數;再型別轉換為浮點型,輸出就是。

4樓:匿名使用者

因為計算機中的小數儲存都是以近似值來表示的,譬如你這裡的就是以。

001來表示的,當然有時候也會是以來表示,這完全是你cpu決定的,如果要輸出正常格式的話,就把程式改我這樣,這樣後面就沒有無意義的小數位輸出了,輸出的是正確值。

#include

void main ()

5樓:匿名使用者

首先,手動計算一下怎麼才能交換。

根據題目要求,先算。

0的最小公倍數:18,這說明:最少10個一角、12個五角、9個一元才一樣高,也就是說小明可以交換的倍數是10*0.

1+12*元,而小紅交換的倍數是10元,雙方可以交換的的金額只能是90元、180元……你輸入n=3,那肯定不能交換啊。

來到這裡,如果認為效率為上的話,直接判斷小紅拿出的10元的張數n是不是9的倍數,一步就可以輸出結果了。如果n/9是整數,則一角、五角、一元的數量就是:10*n/9、12*n/9、9*n/9了,否則輸出不能交換。

其次,如果你硬要按照你源程式的思路做,那我只能指出最明顯的邏輯問題:for迴圈沒有大括號,所以它只會一直執行j=6*i/5;這一句直到條件終止,那當然輸不出結果啊。

還有沒有其他問題,既然是考題,自己思考吧。

6樓:匿名使用者

應該是資料型別的問題吧,不能用整型,整型沒有符合的解。

7樓:匿名使用者

首先,這是一道考區分 "表示式" 與 "表示式的值" 的題。

我們要注意,表示式也是有它自己的值的。

一、逗號表示式(表示式1,表示式2,..表示式n)採取從左到右順序求值,並把最後一個逗號後的表示式的值作為 "逗號表示式的值"。

如:表示式1,表示式2,……表示式n 這個 "逗號表示式的值" 就等於 "表示式n" 的值,與其它值無關。

二、賦值表示式(變數=表示式)採取從右到左求值,並把等號左邊的變數最終得到的值作為 "賦值表示式的值"。

所以,表示式(i=4,j=16,k=32)的值是 k=32 的值,而 k=32 這個賦值表示式的值就是等號左邊變數 k 的最終值,是32。於是,x 值為32。

8樓:匿名使用者

因為你只輸入了一個數10,系統把這個值賦給了變數a;你的程式中用了兩個變數去接收輸入的值,所以系統選擇了一個隨機數賦值給了變數b。

另外,虛機團上產品**,超級便宜。

9樓:匿名使用者

(一)int a,k,i;

i=1;k=(i++)i)+(i++)

a=(i++)i)+(i);

printf("%d%d%d",k,a,i);

k=1+3+3這句沒有錯但是執行完這局後i的值就為4了在「a=(i++)i)+(i);」中就是a=4+6+7然後i值為8

(二)《這個符號是將一個數的二進位制碼向右移動一位 如果0001(1)的話移動完事就是0010(2)在移動就是0100(4)

~這個符號是位反 就二進位制碼的每一位1變0 0變1^這個符號是異或 相同的為0 不同的為1 1^0為1 1^1為0~ 運算級最高 《其次 然後是 ^

2的二進位制碼是 00000010

5的二進位制碼是 00000101

先進行a的位反 11111101

然後進行b<<2 00010100

然後異或結果 11101001 這個數的最前邊的位數也就是符號位為1代表負值。

負值輸出時候要求其補碼 補碼=反碼+1 符號位不變。

輸出結果 10010111 這就是-23的二進位制碼。

10樓:匿名使用者

第一題中,i先自加得i=2,然後k=2+2+2;然後自加兩次i=4,然後自加一次得到i=5,先前兩個加起來,就是5+5,然後i自加一次此時i=6,故a=5+5+6

(注意:加法的話譯成組合語言以後只能兩項相加)

第二題中,c語言有個優化原則,也就是++x||+y&&+z;語句中,先判斷++x>0,就直接判斷此語句為真,故接下來的語句沒有執行,所以答案是2,1,1

第三題中,~a^b<<2語句中,~為按位取反,優先順序最高;《為左移,優先順序次之;^為按位異或,優先順序最低;

a=2的ascii原碼為00000010;b=5的原碼為00000101

樓主你試試看。

c語言問題 50

c語言問題

11樓:網友

a :陣列名。

a[4] :是指陣列a中的第五個元素,陣列都是從0開始的,所以第5個元素是a[4]。

而++的意思就是自加一次,a[4]++等價於 a[4]=a[4]+1;

比如說:定義一個。

int a[5]=;此處的a[4]的值是4,即a[4]=4。

當執行 a[4]++時原來的a[4]會自加1,變成5,即a[4]=5。

一看哥們就是初學者,好好看書,這些東西書上都有的。。

12樓:汪好帥

額,前面的都已經解釋過了。

針對你補充的問題來講。

你是有意,讓它陣列越界的麼?!

int a[4];/最大的下標是a[3]a[4]是陣列越界了,a[4]沒有被分配,你可以嘗試去除錯測試看看。

#include

void main()

; /試試檢視a[4]是啥東東。

printf("%d",a[4]++

13樓:海獅

a[4]++是什麼意思。

單獨使用相當於a[4]=a[4]+1;

如果在語句中表示,使用增量前的a[4]進行計算,執行完「;」後a[4]=a[4]+1;

14樓:下一次遠足

你定義的陣列沒有 a[4] 的吧。

int a[4]=只有 a[0],a[1],a[2],a[3]

a[4]越界了,編譯器會提示錯誤的。

15樓:網友

陣列a的元素只有4個,分別是a[0],a[1],a[2],a[3],a[4]是不在a的陣列裡的。

16樓:匿名使用者

陣列及運算問題,你先看看基本的型別中,陣列a的每個單元的型別,看是否符合++運算的規則,根據++的前置與後置的意義具體解答就行了。

17樓:帳號已登出

就是一個一個依次加一的順序。

C語言的問題C語言問題C語言問題

若有說明語句double p,a 則能通過scanf語句正確給輸入項讀入資料的程式段是 解 p a 將a的地址賦值給p,scanf lf p 從鍵盤獲取一個數值賦值給地址p指向的變數 所以選d 有函式fun的定義形式如下。int fun float f 則以下對函式fun的呼叫語句中,不正確的是 a...

C語言問題,c語言問題?

一 c語言規定總是從main 開始執行的 這個函式也叫 主函式 因此,你發來的題目中的 1 6 8 敘述都是錯誤的,都應該選擇f。二 第2題中,c語言對其資料在記憶體中所佔用的實際位元組數,隨著程式中宣告的資料型別以及資料的多少而變化,c語言本身並沒有明確規定。這題應該選f。三 第3題,c語言中強制...

C語言問題,c語言問題?

你這個程式是捕捉0到9的按鍵狀態,按下再鬆開時才會記錄,想要識別所有按鍵,把for迴圈範圍擴大。比如for charch 32 ch 127 ch 這樣就包含了特殊符號及大小寫字母還有數字。但是,這個 是有問題的!一 你這個 需在鍵位已經按下後啟動才能識別,否則啟動時沒有按下對應鍵位,程式就結束了。...