以下程式的輸出結果是mainintx

2021-03-07 04:29:16 字數 5830 閱讀 6902

1樓:匿名使用者

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,不滿足條件所以退出迴圈。

2樓:畢戈夫斯基

我簡單的分析下:

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;

-- 運算子同理;

(另外說一句, 以後提問最好給分, 一般沒人會高興回答的)

3樓:**ile未名湖

d、10 10 9 1 我補充一點 y出現過2次 y=10,y=++i 這是c函式變數作用域 外層**塊的變數總是有效的,除非內層的**對該變數名進行了重新定義,如果內層**對外層**塊中的變數名進行了重新定義,那麼在此內層**塊中,外層**塊的變數就被隱藏

4.以下程式的輸出結果是 main() { int x=10,y=10,i; for(i=0;x>8;y=++i) printf(「%d %d」,x--,y); } a、

4樓:匿名使用者

第一次循

環: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這句話是在每次迴圈最後執行的

5樓:百問誰度

把 for(i=0;x>8;y=++i)拆開為下面的for(i=0;x>8;)

你看看就明了~它們等價的

希望幫到你~不明再追問

以下程式的輸出結果是 #define min(x, y) (x) < (y) ? (x) : (y) main() { int i , j, k; i = 10; j = 15;

6樓:匿名使用者

結果為15。

程式的第一行進行帶參巨集定義,用巨集名min表示條件表示式(x) < (y) ? (x) : (y) ,形參x,y均出版現在條件表示式中。

權程式中 min(i,j) 為巨集呼叫,實參i,j,將代換形參x,y。

巨集後該語句為: 10*(i) < (j) ? (i) : (j),運算結束的結果為15。

巨集只是做了簡單的替換操作。而函式的引數只在函式呼叫時求值一次,並將結果傳遞給函式即可。

define,無參巨集定義的一般形式為:#define 識別符號 字串define 函式定義乙個常量。

常量類似變數,不同之處在於:

在設定以後,常量的值無法更改。

7樓:匿名_熱心網友

綜合下面兩個你再稍微改一下吧,現在沒時間專門弄個完全專扣題的了,見諒#include

#include

#include

struct stu

{屬int num;

int wuli;

int huaxue;

int math;

8樓:匿名使用者

把巨集定義帶入 k = 10 * min(i, j)得k=10*icopy由於算數運算子(*)的優先順序高於比較運算子(<)和三目運算子(?:),所以應該先計算10*i得100,然後進行三目運算,因為100<15為假,所以結果等於j,即k=15

9樓:匿名使用者

巨集定義是按字串完全。完全的字串替換內。

所以k = 10 * min(i, j);

是容:k=10*(i) < (j) ? (i) : (j);

i是10,10*i 是100,

100<15,是假,所以k=j 所以是15.

10樓:匿名使用者

巨集定義最重要的就是要把握原樣代入的原則,不要主觀的加括號#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

11樓:馮冶

首先你要明白#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

12樓:匿名使用者

我被繞進去了

抄半個多小時,終於清醒了,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。

所以巨集定義的時候最外面有沒有大括號很關鍵。

13樓:匿名使用者

c.15

k = 10 * (i) < (j) ? (i) : (j) = (10 * (i) ) < (j) ?

(i) : (j) = (100) < (15) ? (10) :

(15) = 15

main() {int x=10,y=10,i; for(i=0;x>8;y=++i) printf("%d %d",x--,y);} 求詳細過程!

14樓:匿名使用者

第一次進入迴圈時,x = 10,y = 10,i = 0,輸出中x-- = 10 ,但x = 9(前加加/前減減是先

內加/減後賦值給 x,但後容加加和減減是先賦值給x再把x減1),此時y = 10;

第二次進入迴圈時,x = 9,y = 10,輸出 9,1.此時x = 8,不會再進入迴圈

15樓:人間四月

第乙個表示式是變數賦值,第二個是迴圈條件,第三個是迴圈變數增值,一輪迴圈後再把 i賦給y

16樓:匿名使用者

執行順序:

i=0;

判斷 x>8;

執行 printf()語句;

執行 y=++i;

main() { int x=10,y=10,i; for (i=0;x>8;y=++i) printf("%d %d ",x--,y); } 答案是10 10 9 1

17樓:匿名使用者

在迴圈語句for(表示式1;表示式2;表示式3)中,先執行表示式一,再執行表示式二,如果表示式二成立,就進入迴圈,第一次迴圈執行完後(本程式共兩次迴圈),才執行表示式三(這是表示式三第一次被執行),然後再執行表示式二,看其是否成立,如果成立,就進行第二次迴圈。如此迴圈,表示式乙隻在第一次迴圈時執行,以後不再執行,表示式三在第一次迴圈不執行,以後的每次迴圈都執行。如果你要這是為什麼,我只能說這是規定,別的就不知道了。

18樓:匿名使用者

其實你的語句可以寫成這樣,就清楚了,一步步做下來。

main()}

19樓:匿名使用者

for 迴圈是在執行完迴圈體裡面的語言之後,再執行第二個分號裡的內容

你的例子裡面,首先執行printf("%d %d ",x--,y);,然後執行y=++i

c語言 結果是什麼 為什麼 main() {int x=10,y=10,i; for(i=0;x

20樓:譚正誠完衍

輸出為:10109

1main()

21樓:有求9必應

10 10 9 1,x--是先取x的值再減,--x則相反;for迴圈括號最後一句 y=++i 是在迴圈體執行後再自加。

22樓:頂尖級

main()

i=0 x=10 y=11輸出x=10;y=11++i之後i=1,x進過printf("%d %d ",x--,y);中間--之後x=9,

i=1 x=9 y=12輸出x=9;y=12x在經過一迴圈x=8; 8>8不成立跳出來,++在前面先加在賦值,在後面先賦值在加

按照輸出格式寫出以下程式的執行結果 main() { int a,b,c; int x=8,y=10; a=(++x==--y) ? --x:++y;

23樓:天天老肥

++在資料前,bai則在相關運算

du之前進行++。++在數zhi據後,則在dao相關運算後進行++。內

a = (++x==--y)?--x:++y;

先對x加1,再對y加1. 然後判容斷x等於y嗎? 若等於, 對x減1,然後將x賦值給a。若不等於,對y加1,然後將y賦值給a。

b=x++;

將x賦值給b,然後對x++。

c = ++y;

先將y加1,再將y賦值給c。

24樓:

夠詳細了吧bai,不懂再問du

……#include "stdio.h"

int main()

25樓:匿名使用者

int a,b,c;

duint x=8,y=10;

a = ( ++x == --y ) ? --x:++y;

// ++x==--y是先將x遞增,zhiy遞減再將x,y比較。

dao// x遞增,y遞減後,x = 9, y = 9。

// 所以判斷結果為回false。

// 所以a==--x。因為答此時x已經遞增為9了,// 而這道式子是x先遞減再賦給a,x=8// 所以a=7。

b=x++;

// x先賦值再遞增。此時x = 8。所以b = 8。

c=++y;

// y先遞增再賦值給c。所以c=10。

// 綜上所述,輸出結果為:a=7,b=8,c=10

26樓:匿名使用者

b=x++;// b=x; x++;

c=++y;// y++; c=y;給分

有以下程式程式執行後的輸出結果是

這個問題嘛,其實比較簡單。由於for迴圈裡面沒有趨近迴圈結束的語句,所以每次for迴圈都是要執行的。i 0時,兩個if都不成立,所以直接執行i 和s 1這兩句,使i 1 以此類推,i 2時,也是這樣執行,最後i 3i 3進入迴圈內的第乙個if語句判斷是成立的,所以執行continue,也就是跳出本次...

以下程式執行後的輸出結果是maininta,b

我執行了下復 結果是3,10 include main 這裡面制的 a,b 是個bai逗號表示式du,a 和b 都執行了但最後輸出zhib 的結果所以daoa b c就是2 3 5 如果你在下面再加一句printf d,d n a,b a b c a,b的值就會變。而這樣的話應該printf函式對變...

以下程式執行後的輸出結果是mainint x 20 printf

答案是1,0 因為根據算數優先順序從左到右進行運算 0 x 為真,真就是1,1 20也為真所以為1,然後下一條0 x為真就是1,x 20為假就是0,1與上0就是0 以下程式執行後的輸出結果是 main int x 10 printf d,d n x,x c語言函式引數處理順序 從右向左 printf...