1樓:
main( )
2樓:bruce於
x--或者x++,是先輸出x的值,再修改x的值
--y或者++y,是先修改y的值,再輸出y的值
以下程式的輸出結果是 #define min(x, y) (x) < (y) ? (x) : (y) main() { int i , j, k; i = 10; j = 15;
3樓:匿名使用者
結果為15。
程式的第一行進行帶參巨集定義,用巨集名min表示條件表示式(x) < (y) ? (x) : (y) ,形參x,y均出版現在條件表示式中。
權程式中 min(i,j) 為巨集呼叫,實參i,j,將代換形參x,y。
巨集後該語句為: 10*(i) < (j) ? (i) : (j),運算結束的結果為15。
巨集只是做了簡單的替換操作。而函式的引數只在函式呼叫時求值一次,並將結果傳遞給函式即可。
define,無參巨集定義的一般形式為:#define 識別符號 字串define 函式定義一個常量。
常量類似變數,不同之處在於:
在設定以後,常量的值無法更改。
4樓:匿名_熱心網友
綜合下面兩個你再稍微改一下吧,現在沒時間專門弄個完全專扣題的了,見諒#include
#include
#include
struct stu
{屬int num;
int wuli;
int huaxue;
int math;
5樓:匿名使用者
把巨集定義帶入 k = 10 * min(i, j)得k=10*icopy由於算數運算子(*)的優先順序高於比較運算子(<)和三目運算子(?:),所以應該先計算10*i得100,然後進行三目運算,因為100<15為假,所以結果等於j,即k=15
6樓:匿名使用者
巨集定義是按字串完全。完全的字串替換內。
所以k = 10 * min(i, j);
是容:k=10*(i) < (j) ? (i) : (j);
i是10,10*i 是100,
100<15,是假,所以k=j 所以是15.
7樓:匿名使用者
巨集定義最重要的就是要把握原樣代入的原則,不要主觀的加括號#define min(x, y) (x) < (y) ? (x) : (y)
所以:回
10 * min(i, j)
=10*i在10*i被結合了,答
將i = 10; j = 15代入,變成:
=10*10<15?10:15
=100<15?10:15
由於100<15為假,所以k=15
8樓:馮冶
首先你要明白#define min(復x,y) (x)<(y)?(x):(y).的意思,這是制一個帶引數的
bai巨集定義,起作用就du
是一個簡單的替換。其次你要zhi明白dao ? :是一個三目運算子。問號前面的表示式為真的話表示式的值就是?後面的值,要是假的話就是:後面的值。所以有:
k=10*min(j,k)=10*min(10,15)=10*10<15?10:15=15
9樓:匿名使用者
我被繞進去了
抄半個多小時,終於清醒了,bai答案是
du15.
關鍵在 (x) < (y) ? (x) : (y)對min(x,y)進行巨集定義的時zhi候,保險起見,應該寫成((x)dao
<(y)?(x):(y))。
為什麼外面再加個大括號呢,我一開始算的時候就是按照10小於15成立,所以min(i,j)等於i等於10,所以k=100。但是這是外面加了個大括號才這麼算的。沒加的話,就是這道題,結果就是k=10*x x:y;即k=10*i j,先計算乘法,k=100<15?10:15,也就是說100<15不成立,所以k=j=15。 所以巨集定義的時候最外面有沒有大括號很關鍵。 10樓:匿名使用者 c.15 k = 10 * (i) < (j) ? (i) : (j) = (10 * (i) ) < (j) ? (i) : (j) = (100) < (15) ? (10) : (15) = 15 以下程式執行後的輸出結果是___。 main() { int x=10; printf("%d,%d\n",--x,--x); } 11樓:匿名使用者 c語言函式引數處理順序-從右向左 printf是函式,遵循這個規律 所以先執行後面的--x,那麼第二個引數就是--x就是9,執行完第二個引數後,x就變成9了,再執行第一個引數--x就是8 以下程式的輸出結果是 main( ) { int x=10,y=10,i; for(i=0;x > 8;y=++i) printf("%d,%d ",x--,y) 12樓:匿名使用者 d、10 10 9 1 第一次執行 for(i=0;x > 8;y=++i) // 此時x = 10, 這句y=++i要迴圈體執行完後執行,即執行完printf後,在執行到for時。 printf("%d,%d ",x--,y); // 先輸出後計算,所以輸出10,10,之後x執行減一,x=9. 第二次執行 for(i=0;x > 8;y=++i) // 此時x=9,i=1,y=1, printf("%d,%d ",x--,y); // x=9,y=1輸出9,1,結束後x=8. 第二次執行 for(i=0;x > 8;y=++i) //由於x=8,不滿足條件所以退出迴圈。 13樓:畢戈夫斯基 我簡單的分析下: x,y 均初始化為10, 第一次迴圈, i=0; (x=10)>8; y=1 輸出10, 1; 第二次迴圈,i=1; (x=9)>8; y=2; 輸出9, 2; 第三次(x=8)>8 不成立, 退出; 此題考察你 ++ 運算子, x++ : 先運算x, 再+1; ++x : 先+1, 再運算x; -- 運算子同理; (另外說一句, 以後提問最好給分, 一般沒人會高興回答的) 14樓:**ile未名湖 d、10 10 9 1 我補充一點 y出現過2次 y=10,y=++i 這是c函式變數作用域 外層**塊的變數總是有效的,除非內層的**對該變數名進行了重新定義,如果內層**對外層**塊中的變數名進行了重新定義,那麼在此內層**塊中,外層**塊的變數就被隱藏 以下程式的輸出結果是(a)。 main() { int x=0,y=1,z=2; if 15樓:匿名使用者 main() //因為x件 花括號內所以不執行 else z-=1; //執行else z=z-1 所以z=2-1=1 printf(「%d\n」,z);} 16樓:匿名使用者 把**整理一下就比較清楚了,看註釋 #include main() else printf("%d\n",z); /*這裡輸出z的值就是1*/ }答案選a 10、以下程式執行後的輸出結果是( ) main() { int x=20; printf( 17樓:妖★燎雨 答案是1,0 因為根據算數優先順序從左到右進行運算(0<x)為真,真就是1,1<20也為真所以為1,然後下一條0<x為真就是1,x<20為假就是0,1與上0就是0 第一次循 環 i 0 x 10 y 10 輸出bai10,10 完了x自減 等du於9,zhiy i 1 第二dao次循迴環 i 1 x 9 y 1 輸出9,1,x自減等於8,跳出迴圈 主要答是y i這句話是在每次迴圈最後執行的 把 for i 0 x 8 y i 拆開為下面的for i 0 x 8... y最終值為 1 y 是先抄作運 bai算然後減變 du量值 y是先減變數值然後再作運算zhi printf d n y 運算到這裡時,y是的dao值為0,由於是先算後減,所以在輸出y值後,再作減1運算,就成了 1 如果 y的初始值是不是偶的話,那就是死迴圈了.以下程式的輸出結果是 define mi... a分析 在c語言中當遇到 0 時,即結束,所以在s info 0mis 中,只有 info 計數了即為4 選擇a,因為c語言字串以 0結束。有以下程式段,輸出結果是 char s 141 141abc t printf d n strlen s char s 141 141abc t 轉義字元 14...4以下程式的輸出結果是mainintx
執行以下程式後輸出的結果是mainint y 10 do ywhileyprintfd n ,y
以下程式段執行後輸出結果是char sinfo 0misprintfd ,strlen sA 4 B 5 C 8 D