關於C語言程式的幾個問題,關於C語言的一個問題

時間 2021-08-11 17:39:55

1樓:匿名使用者

1.1)沒有 因為(++a<0)為假,如果你看過《c陷阱與缺陷》就該知道&& 與||具有短路現象(即如果邏輯運算子&& ||前半個表示式的值可以決定整個表示式的真假,那麼就不會運算判斷後半個表示式)

例:int a=100; 3>2 || a=5>10

因為3>2為真,可以決定整個表示式的值為真了,已經沒必要判斷後面的真假了,所以a=5>10不會進行運算判斷了,a的值還是100

2)先自減再printf 為什麼呢?看例子。

例子int b=10;

if(b--<=10)

printf("%d\n",b);

//輸出的是 9

這個例子不就是先自減了再輸出??

2.1) 6個 *號

2)\t是轉義字元算一個字元 後面的a是一個字元 \01是八進位制算一個字元 數字8不包括在內算一個字元 bc算2個字元

3.b=0 因為!c為假故整個表示式為假 值為0

運算子優先順序:

先 !運算

再 &&運算

最後 =(賦值)運算

4.指向字串,就輸出指向的字元的ascii值,而不是整個字串。

指向陣列元素,就輸出該元素

5.沒有,因為printf沒有要求輸出一個分隔符啊

除非寫成printf("%d-",a[i]);

這樣每輸出一個數後面就跟個 - 符號

6.那要看實參傳遞的是地址還是數值?

如果傳遞的是數值既是 值傳遞 等於多copy了一份值用來傳遞,對形參的操作不會影響到實參

如果傳遞的是地址,等於把實參的記憶體地址傳遞給了形參,對形參的操作既是對實參記憶體地址的操作,當然會影響到實參的值了

7.沒有

8.輸出的數值列寬為3,其中小數部分佔0列

比如,a=123.5,輸出124 (超出部分按四捨五入)

其實上面很多問題都可以直接上機除錯下啊,這個也是自己學習鍛鍊的機會

如果你不知道

int b=10;

if(b--<=10)

printf("%d\n",b);

這個例子是先自減 再執行printf 還是先printf 再自減

直接看除錯結果不就明白了,如果是先printf 再 自減 ,那麼答案就不會是9了而是10

2樓:匿名使用者

1(1)

判斷句一旦可以斷定為假 後面的都不進行判斷了(2)如果是printf("%d",b--);那麼先輸出 後自減題目裡是先自減

2(1)

6個 題目中是\01 而不是\0

(2)長度為6 \t a \01 8 b c 最後還有\0不算在長度內

但是sizeof()的結果是7

3b為1 賦值語句的優先順序最低 其次是&&4輸出按int 指向什麼都不重要 都以int輸出 字元的話就輸出acsii碼

如果是字串應該是 %s

5輸出看的是""內的字串形式 字串內沒有分隔符 輸出就沒有6引用和指標差不多 都會改變 只不過引用更安全7你不寫就沒有分隔符

83.0 的3代表整個輸出的位數 小數點後代表精度如果按 6.2 輸出100 則為100.00連小數點一共6位

3樓:波波羅克羅伊斯

(1)1.沒有,因為++a<0是假命題,&&後面的不再計算了2.先判斷,再自減

(2)1.6個

2.\t,a,\01,8,b,c

說明:因為\0**是8進位制,數位中不可能出現8,所以\01和8是2個字元,而不是\018

(3)b=0,任何非0數字的邏輯值都為1啦,所以!c就是0你理解錯了,這裡是3個運算子,優先順序依次是!,&&,=(4)指標一直都是c中比較難的,建議你找本教材好好鑽研下顯示的結果是一樣的。

指向字串,就輸出指向的字元的ascii值,而不是整個字串。

指向陣列元素,就輸出該元素

(5)沒有,所以輸出的是一個很長的整數,因為中間沒有分割(6)關鍵是傳值還是傳址的問題。

指標,陣列名做引數,傳地址,實參會變化

一般的都是單項傳值,實參不變

建議你找本教材好好鑽研一下,指標是c的精髓(7)那要看你的格式輸出字串裡有沒有間隔符號了(8)3:輸出的數值列寬為3

0:小數點後無數字

比如,a=123.3,輸出123

a=1234.3輸出1234(列寬《實際寬度,建議你找教材看,說的很詳細)

4樓:未來未去

(1)沒有執行“!(b--<=0)”,因為“表示式a&&表示式b”運算子是左面的表示式a為真才執行表示式b,如果表示式a為假則不執行表示式b。

假設判斷了,是先判斷b<=0後b自減之後再printf(2)輸出6個*

\ta\018bc佔6個位元組,分別是'\t','a','\01','8','b','c'

\0表示八進位制數,而八進位制數不能有8,所以\01是一個數,8是一個數(3)b=0,"b=!c&&a"式子的意思是b=(!c&&a);

!c是一起的,‘!’的優先順序比‘&&’高

(4)是一樣的,因為輸出格式是%d,只輸出所指元素(5)%d是輸出格式,想輸出空格可以寫成“ %d”或者“%d ”或者

“%d\t”

(6)引數傳遞的問題

值傳遞:傳的是變數名,它不會改變原變數

址傳遞:傳的是變數的地址(指標),它能改變原變數(7)還是輸出格式的問題,如(5)

(8)3:輸出的數值列寬為3

0:小數點後無數字

例如,a=999.99,輸出999

5樓:匿名使用者

(1)1,錯。整個程式不管怎麼樣都要執行的。

2,先b自減之後再printf;

(2)6個

6樓:匿名使用者

絕對沒判斷!不知道的別誤導人家啊!

關於c語言的一個問題

7樓:萢萢

這種題目挺坑人的,基本都是在玩文字遊戲。

第一題中的c的意思是,如果一門程式語言要成為結構化程式,必須要具備順序、分支、迴圈這三種基本結構。比如:一個人要是人,就必須是人生出來的,而不是狗或者豬生出來的,因為基因不一樣。

這裡的順序、分支、迴圈結構就相當於基因。

第二題中的c的意思是,如果一個程式是由結構化程式語言寫的,那麼這個程式就是結構化程式,它不一定需要具備順序、分支、迴圈等基本結構,但是用來寫這個程式的程式語言一定是具備寫順序、分支、迴圈等基本結構能力的程式語言,也就是說如果把這個程式擴充套件,是可以寫出順序、分支、循序結構的。比如:一個已經出生了的人,由於天生殘疾,缺了胳膊斷了腿,雖然這樣,但是他仍然是一個人,因為他具備的基因是人的基因,只是不完全而已。

關於C語言幾個程式的問題

第一個程式 修改兩處 include void main int qh int x,int y 第二個程式 修改4處 include include void main else if d 0 注意這裡 else 第一個 下面幾行格式控制有誤 scanf f l 輸入變數 printf 請輸入出發時...

關於c語言的問題,關於C語言的問題

鷹弈 1 有定義 int n 0,p n,q p 則以下選項中,正確的賦值語句是 d a.p 1 b.q 2 c.q p d.p 5 解 p為一級指標,其中p為指標的地址,q為二級指標,其中 q為指標的地址,只能給變數或指標變數賦值,不能給地址賦值,所謂地址,就是由acs碼構成,簡單的說,就是每個人...

關於c語言的幾個問題。麻煩大家幫幫忙!謝了

想徹底明白這個問題需要一定的編譯原理基礎。程式在編譯完成以後,所有變數名都將被替換為記憶體地址。函式內部的區域性變數佔用的記憶體是執行時堆疊,而函式自己會有一個 記憶體區用來存放函式 函式 包括cpu執行所需要的指令,比如判斷,轉向,運算等等。所有由主函式呼叫的函式,它們 在主函式開始執行的時候就固...