兩道C語言題目,求答案和解析,謝謝

時間 2021-08-30 11:20:57

1樓:碧海風雲

第9題:【c】

核心知識點:1、逗號表示式,從左往右逐個計算表示式,整個表示式的值為最後一個表示式的值。2、++a與a++的區別,前者為先自加1而後引用當前值參與計算,後者為先引用當前值參與計算而後自加1。

x=(a=3,b=++a);

1)執行a=3,此時a值為3;2)執行++a,此時a值為4;3)執行b=++a,此時b值為4,a值為4;4)此時逗號表示式值為4,執行x=4,此時x值為4,a值為4,b值為4。

#include

#include

int main (void)

執行結果

第10題:【b】

a:連續賦值,除了最右的項外,其餘所有項都必須是可以賦值的變數,不可以是常量或者表示式。

b:y==1是一個邏輯表示式,從題幹得出其值為0,再將其賦值給x,最終結果是x被賦值0。

c:i=float(x);語法錯了。如果要實現將x強制轉換為float型別並賦值給i,應該寫作i=(float)(x);

d:求餘運算(%)參與運算的量均必須為整型。

2樓:

9 c.4 4 4;

這個題了解 逗號運算子的運算規則就行了 ; -----簡單來說就是:分別運算。取最後一個值。

a=3 ---> a==3 ; ++a -> a == 4; b=++a; -> b==4; x=b --> x=4;

10. c (如果是多選 ,把b也選上)

a. x*3 表示式不能賦值;

b. y==1 是一個c++中的bool值 x與bool型別不匹配(但是也可以這樣用)

c. i = float(x) 把x的值強制轉換為float型別 賦值給i 沒毛病;

d. i%-3 前面i是float 後面-3 都有問題;

兩道c語言題求解,知道的謝謝解答。(請寫出詳細分析過程!!謝謝!滿意答案與解釋者給分。)

3樓:睡不著想你了

你好,第一題選 d, 因為*ps是指這個指標指向的初始位置,也就是p,這個字母的位置,所以取不到o。

第二題無答案,剛開始j=10,i=9 然後 if(!(j%i)) break;也就是if(!(10餘9)) break;即if(!(1)) break;

也就是if(0) break; 因為它不成立,所以我們執行下一步,if(9>10-1) 不成立,我們再回到第一個迴圈。

接下來 j=11,i=9 if(!(11%9))break; if(9>11-1) 因為它不成立,我們又不能輸出了,而在i=10的情況也和這個一樣,所以最後無結果,我覺得你可能if(i>j-1) printf("%d",j);打漏了,應該是if(i>=j-1) printf("%d",j);

4樓:科博熊

第一題d項怎麼有兩項啊?

反正我確定*ps是絕對不能引用字母o的,因為*ps代表字母p的首地址。

第二題沒答案

因為首先j=10,然後到下一步i=9,

!(j%i)=0,是假的,所以又進行下一步, 判斷(i>j-1) ,實際上是9>9,又是假的。此次迴圈結束

所以又進行上一步j=11,然後又到下一步i=9,!(j%i)=0是假的,又進行下一步,9>10,假的。

於是返回上一步i=10,!(j%i)=0還是假的,10>10還是假的。沒有任何步驟被執行。

不知你有沒有打錯什麼字?

5樓:匿名使用者

問題一 你把s =2;去掉就可以了,不知道你想用s =2;表達什麼,就是這句錯了。 問題二 我也不懂,是不是因為a組預設字串後面有個\\0的,然後b

兩道c語言試題,求講解;謝謝

6樓:匿名使用者

編譯器有個前處理器,會把所有的巨集,所以第一個問題後就是:

printf(“%d”,30/3*10);很明顯,結果就是10*10 = 100

要想得出你希望的結論,可這樣寫巨集#define md (3*t)第二個問題就是左值和右值問題,說簡單就是傳值與傳地址的問題了,x是傳指標進去,屬於左值,所以,在裡面*x實際上就是對x的更改,而y傳入的是一個值,是一個右值,無法更改y的值的。

7樓:蘇星洗滌機械

1.#define 的作用是原封不動的代入,所以30/md就相當於30/3*10,乘除法是同級運算,從左向右算,所以結果是100。

2.p函式中x傳遞的是指標,指向的就是x這個變數所存在的地址,所以對指標的操作就會影響原有的x。而y的傳遞的是y的一個拷貝,變化的只是y的一個副本,所以原有的y沒有變化。

8樓:匿名使用者

#define t 10

#define md 3*t

printf(“%d”,30/md); 因為md=3*t 這一句30/md相當於30/3*t顯然等於100;

第二個程式涉及引數引用問題,

void p(int *x,int y) 中用*x 引用是採用&x形式讀取地址,可以改變x的值,而其中y與下面主函式中y佔用不同記憶體,故修改的只能是當前函式的y值而非主函式的值,若想改變,可以跟x採取同樣的引用方式

9樓:匿名使用者

#define 定義的兩個常量啊!

30/md=30/3*10=100

10樓:額滴那個腎啊

第一行定義了t=10,同理第二行定義 md=3*t 即是3*10

輸出30/3*10=10*10=100

第二題:首先x++是x先自加1,再在以後的語句中使用,而y--是以後使用y時才自減1,多以最後結果是1和3

11樓:匿名使用者

30/3*10=10*10=100.

y--表示y的值先賦好,再減、

++x表示x的值先加好,再賦值。。

12樓:陽光上的橋

#define t 10

#define md 3*t

printf("%d",30/md);

編譯之前進行預處理之後的**是:

printf("%d",30/3*10);

結果當然是100,30/3等於10,10*10等於100,乘除運算依次進行。

看呼叫:

p(&x,y);

y在函式p裡面被修改了,但是這個修改是函式的臨時空間,不會被修改的。

其實函式引數裡面的東西都不會被修改,包括前面一個引數&x(表示變數x的地址),函式裡面是通過這個地址對x變數的內容進行了修改,如果函式裡面對地址進行修改,返回後也是沒有影響的。

c語言選擇題,這兩道題求c語言大哥解答,詳細點哈,謝謝

13樓:匿名使用者

第一題*和++運算優先順序相等,運算自右向左*p++; 相當於p++後再*p,所以p指向&a[1], *p等於11

*比+的運算優先順序高

*p+=1;相當於*p=*p + 1;

答案為c

第二題答案為a

s是陣列首地址,不是指標,不可移動

14樓:白色靈雲

p(2,2)=3*(6*5*4*3*2*1)

15樓:匿名使用者

p(2,2)=3*(6*5*4*3*2* 1*)

c語言題目~求詳細解釋 答案我已經知道謝謝

16樓:匿名使用者

#include

main()

17樓:

通過字元陣列接受一個字串,然後判斷每個字元是不是‘0’~‘9’之間的字元,如果是,就把它變成字母表裡的倒數第幾個字母。比如字元為‘0’,那麼就變成z,'1'~y.....依次類推。

c語言簡單程式設計題目兩道,求高手做一下。高分

第1題 include include define max 200 int main void i file fp if fp fopen in.dat wb null fwrite a,sizeof a 1,fp 將資料寫入檔案,位元組的方式 for i 0 i max i return 0 第...

大佬們求兩道c語言程式設計題,一道C語言程式設計題,求解大佬

一 include stdio.h typedef struct nodenode int main int argc,char ar p for p s p p p next printf d p data printf n return 0 執行結果 題目沒有硬性要求,只有5個結點的連結串列本人...

初學者請教 兩道簡單的c語言程式設計題目

沐沐 我沒有改你的輸入語句,如果改了會更短一點。include void main else if j 2 0 t for j 1 j else if j 2 0 t day 30 d1 12 m1 30 y2 y1 1 365 m2 1 30 d2 t printf total day d n d...