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語言的幾個問題,c語言的幾個問題
分析如下 1.用exit語句種植執行報告錯誤。優點 處理簡便,直接終止程式,並可以將錯誤通知給作業系統。缺點 無論在哪個函式中執行,程式會直接終止,沒有機會對錯誤進行進一步處理。2.以函式的返回值區別正確返回或錯誤返回。缺點 函式多層呼叫時,需將錯誤資訊層層傳遞。3.設定一個整形變數的函式引數以區別...
幾個關於C語言的小問題,幾個關於C語言的小問題
int main viod 是整形的主函式,而不是三個函式,這個函式返回值要求是整形就不能改。圖中第一處註釋部分是函式宣告,表示在後面會用到這個函式。第二處是函式呼叫,意思是主函式裡呼叫了一個其它函式。第三處就是被呼叫函式的具體定義。printf是輸出關鍵字,scanf是從外部輸入的關鍵字。你好像基...
C語言的幾個問題
i 是將i得值作為i 的值 執行後給i自加1 具體來說 假設i 1 那麼i 的值也為1 執行後i值加1 i 2 i 是先將i自加1 再將自加後的i的值作為 i的值 具體來說 假設i 1 那麼 i先將i自加1 i 2 再將i得值作為 i的值 i值也為2 第二題是因為你沒有寫break語句 執行swit...