C語言題,答上點就行 這道C語言的題怎麼做?

2023-06-04 00:05:28 字數 5964 閱讀 4966

1樓:匿名使用者

a錯:不定要一致,因為型別之間可以相互轉換,是由級別低的向高的轉換,字元型->整型->浮點型->雙精度浮點型。

b錯:是無型別返回,而不是無值返回,void表示自定義型別。如果無值返回,那做什麼工作啊,要它不就沒用了嗎。

c錯:解釋同a。

d正確:因為實型(就是浮點或雙精度浮點),級別最高,也就是最後型別了。

所以它可省略,因而它是對的。

int a[10],(這個就不用解釋了,你知道)

p=a 因為p是指向陣列a首地址的指標,就是指向陣列a的指標,a就可以表示。

陣列a的首地址,(本題只是要求p為指向a首地址的指標,不需要給它。

定義型別,故是填 *p=a )。

data_structure = d, s)

其中d是資料元素的有限集,s是d上關係的有限集。

資料結構的兩個要素素:資料元素的集合、關係的集合)

2樓:匿名使用者

第一個似乎因該選b,因為void表示和函式返回值為空。

第二個 int *p=a;

第三個用二元組表示的是關係。

第一個我也不是太清楚,平時沒有注意,如果有正確答案的話麻煩告訴我一聲啊。謝謝。

第一題同意williamking1 的,應該是這樣的第三個應該是「關係」,二級c語言裡經常有這個題。

3樓:

1、b(請看清,是實型而不是整形)

2、int a[10];

int *p = a;

3、data_structure = d, s)其中d是資料元素的有限集,s是d上關係的有限集。

資料結構的兩個元素:資料、結構)

4樓:匿名使用者

a 錯。 不見得非一致,系統能做隱式轉換的也可以。

b 錯。 叫空型別。

c 錯。跟a類似。

d 對。int a[10];

int *p=a;

要素是時間,空間?結構,深度? 這個不知道。

這道c語言的題怎麼做?

5樓:月光下的

您好,很高興您的問題。

對於這個題目而言,主要是考查if~else函式的匹配使用情況。這個知識點就一定要記住:if總是與在它前面的、離它最近的、沒有與別的if匹配的else匹配。

有多層if語句的,一定要從最裡層的if與else開始匹配。

那麼我們分析的時候,從最外層的if開始,if(a=b+c),其中a=b+c是賦值語句,是永遠成立的條件,就不會執行a=b=c=-1這句話;並且在此情況下,a的值為0+-1=-1,那麼也不滿足a>0和a==0,所以執行的是倒數第二個else語句,所以最後的結果是a=b=c=1,所以答案應該選a。

6樓:岔路程式緣

這個題目關鍵是考核學生的觀察能力。

其實,把關係運算子的相等符(==寫成賦值符(=)是初學者最容易犯的錯誤。

在if(a=b+c)這一句中,本意是比較a與b+c是否相等,表示式的正確寫法是a==b+c,這樣,如果二者相等,表示式的值為真,去執行if後面的語句,否則,執行else後面的語句。

在這個題目中,如果沒有寫錯雙等號,是判斷a與b+c是否相等,前面abc分別是2/0/-1,a+b是-1,2≠-1,表示式的值是假。程式去執行else後面的a=b=c=-1。

現在,題目故意寫錯,它把a=b+c作為if語句的判斷表示式,我們看它的值。首先a=b+c是一個賦值語句,它把b+c的值-1賦值給a,即,a=-1,然後判斷它的邏輯值,它就用a的值作為邏輯值,而c語言對數字的邏輯值的解釋是,除了0為邏輯假,其他非0數字都是邏輯真,所以,a=-1的邏輯值為真。

這就有意思了,程式判斷邏輯真,會執行if語句後面的內容。可是後面仍然是一個if語句,而且是:

if()else if()

else結構,先判斷a是否》0,因a=-1>0為假,繼續判斷a是否=0,a=-1≠0仍然為假,最後只能執行else後面的a=b=c=1。

因此,最後列印出a選項的1,1,1。

結論:a選項正確。

7樓:聽不清啊

語句的執行與判斷過程,見**:

8樓:勿鏡

第一個裡面等價於y=y+(i++)所以y=3+2=5;(這裡的y是函式里面臨時定義的,遮蔽了外面的全域性變數)

main函式里面y=y+(i++)2+2=4;(這裡的y是全域性變數,注意i仍然是2,因為函式傳遞的形參沒有改變實參)

9樓:電燈劍客

第一步a=b+c是賦值, 表示式的值是新的a, 也就是-1, 所以if(a=b+c)成立, 接下去沒什麼好解釋的, 最後走a=b=c=1這個分支。

c語言題,求高手指點!?

10樓:上海長英

答案a 錯誤糾正。

int p;

scanf("%d",&p);

int *p,a;

p=&a;scanf("%d",p);

以上兩種都可以。

分析:編譯器不會對「區域性變數」 初始化,全域性變數 會預設被初始化為0.

答案a 在使用指標變數p之前沒有對其初始化,不能使用。

2. 答案b 錯誤糾正。

int *s,k;

s=&k;*s=100;

通a,都是指標在使用前沒有初始化。

3.答案c 正確。

4. 答案d 錯誤。

s=p;是錯誤的。

因為s是 一個整型數指標,而p是字元型指標。指標型別不同的兩個變數不能賦值。

希望我的對你有所幫助,很高興和你一起學習和討論c語言程式設計。

11樓:匿名使用者

a、b的指標都是空指標,d在c++中是不可能隱式轉換的,會報錯。

12樓:匿名使用者

cd都沒問題,ab都是指標沒有分配記憶體就使用。

13樓:海獅

應該只有c是正確的,d的最後2行有記憶體越界的問題。

c語言一道題

14樓:匿名使用者

a>d++ 是先判斷a>d,再d++,a>++c 是先c++,再判斷a>c,for的那個,是b=5,6,7,8,9的時候會執行i++,所以是5while的那個,相對於for的那個,是c一上來先被加一了,所以少了一個,(c自加完之後)c=6,7,8,9的時候會執行j++,所以是4

do-while的那個,相對於for的那個,k上來先被加了1(do while迴圈體先執行一次),而(d自加完之前)d=5,6,7,8,9的時候會去執行k++,所以是6

話說這種問題我也感覺比較糾結,所以我可能也會犯錯,見諒……

15樓:光亮青劍

先迴圈體,然後再執行d++,再判斷a是否大於d,a>d++是先判斷a是否大於d,然後d增1,讓後迴圈體,然後再執行d++,再判斷a是否大於d

16樓:匿名使用者

關於++和--的問題,如果++在前面(如++a),就是將a先+1,然後返回計算後的值(a+1)。如果++在後面(如a++)則計算a+1之後,返回a原來的值。

所以這道題,a>d++,先計算d+1,並以計算前的值為返回值,再與a做比較,然後再進入迴圈或跳出迴圈。所以這個迴圈執行6次。

17樓:匿名使用者

先執行k++;如果滿足條件a>d,然後d++,再執行迴圈k++;

18樓:

不是的,do …while 結構是先執行迴圈體,再判斷條件。本題:先執行k++,再比較a>d,最後,執行d++。

所以,即使條件恆不成立,k也會加1的。故結果為6。希望幫到你^_^

c語言一道題

19樓:gta小雞

fabs(t)<1e-5的補集是fabs(t)>=1e-5即t>=1e-5或t<=-1e-5

s/10等價於s/10==0,即s的取值範圍是-10兩者求交集即為a選項。

c語言的一道題

20樓:匿名使用者

這些以身試毒的奴隸,就是一堆bit,1到n這些數字對應酒的編號,所有bit0(化成二進位制,最低位是0bit)是1的數字,都給一個人喝;所有bit1是1的數字,依次類推,這樣到20小時後,所有中毒奴隸代表的bit組成的數,就是有毒那瓶酒。

如果酒的數量恰好是2的整數次冪,拿走編號最大的那瓶,剩下的按同樣方法做。

例:3瓶酒,要2個人,編號為0和1,0喝最低位是1的酒,即1號瓶和3號瓶。

1喝bit1是1的酒,即2號瓶喝3號瓶。

這樣,結果顯而易見,最終中毒的bit是1,沒中毒的是0,這個二進位制數就是要找的那瓶酒的編號。

c語言這道題怎麼做?

21樓:最大的寶寶

p = a + 1;

p指向a[1],即5

(int*)(p + 1) +2)

注意p的位置不變,每一步的結果實際都以臨時變數儲存,但為了敘述方便,我假設它是移動的。

p+1,p從a[1]指向a[2],即9。(int *)使p從一個struct指標轉為一個int指標。然後+2,這導致p向前移動了2個int的距離,即從指向9變為了指向11,這是最終結果(很顯然,如果沒有使用(int *)p將會指向a[4])

22樓:匿名使用者

p+1即&a[1]

而通過(int*),強制將p+1指標基型別轉為int,所以再後移2個int位置,即*((int*)(p+1)+2)即7

c語言的一道題

23樓:瀚漠

做題目一般是用排除法,比較容易。

首先明確幾點,p是指向結構體型別的指標,m是指向整形的指標,同時作為指標,想獲得c的值即5,a和c可以同時排除:

a中的結果是個指標,不可能是5

c中語法錯誤,m是指標必須用->來訪問。

b和d的區別就在前加加和後加加,p是個指標,對指標做加加運算會跳過一個資料位,而資料位大小取決於p的型別,這裡會跳過一個st結構體大小,p初始時指向s[0],加加之後會指向s[1],s[1]中的m指向的值正是我們需要的,顯然前加加更適合,我們需要的就是加加立即生效。

至於你說的那個p++-和(p++)的區別,沒試過我無法回答你,我只能告訴你沒人會這樣寫,如果需要自加運算,必然會加括號,屬於不成文的規範。其實很多時候不用太糾結這些太細的東西。

24樓:匿名使用者

老哥:首先先看指標對應結構體陣列的位置:

第一位。[101,2]

第二位。[102,5]

第三位。[103,3]

當執行p=s;時 p 指標指向第一位,也就是[101,2]這項,能理解不?

接下來就是先++後++的問題啦。

p++的意思是 先拿值再自加 意思是 先拿[101,2] ,本身再自加移動到下個位置去。

p的意思是 先自加後拿值 意思是 先自加移動到下個位置,再拿值 那自然拿出來的是5咯。

ps:如果只用結構體指標的話,操作符使用->,不用指標的話是用 點號。

a選項p++-和(p++)意義一樣嗎:

p++-這樣的寫法編譯器會報錯的吧,如果++在後面,正確的寫法就是(p++)

這道C語言的題怎麼解?這道C語言的題怎麼做?

for迴圈的判斷條件為當x 10或者y 10兩個均不成立時,迴圈停止。每次迴圈結束後,x和y都會自增自減來改變自己的條件。執行迴圈得到的結果就為x 0,y 12。1 第一次迴圈 x 15,y 2 2.第二次迴圈 x 7,y 5 從這次迴圈開始,x不會自減,因為x是7,7是小於10的,故x不會 自減,...

c語言這道題該怎麼做 沒有思路,C語言這道題怎麼做

最大子矩陣,最大連續子陣列進階,動態規劃初級,poj1050 題目描述 現給出一個n n矩陣,要求求出擁有最大和的子矩陣的和。例如 這樣的一個矩陣,最大子矩陣的和為15 分析 最大子矩陣可以看為求最大連續子陣列拓展到二維陣列上,因為矩陣的性質同樣在橫向豎向上需要連續,那麼可以想辦法將這個二維陣列簡化...

請問這道c語言題該怎麼做啊,請問這道c語言程式題怎麼做呀

觀察puts w 的位置不同時輸出是不同的,因為開始第一次迴圈時w i 即只有w 0 被賦值一次,就列印了,後面的w i 1 等是不確定的。第二次迴圈的時候w 0 和w 1 被賦值,依次類推。其實把puts 字串列印函式放在第25行就可以理解了。不知道,列印的是否為原題的意思 這裡借用樓上的大神的回...