以下程式的執行結果為什麼會是3啊,請高手詳細分析一下mai

2021-03-21 12:07:35 字數 4457 閱讀 3181

1樓:匿名使用者

main()

的時候,c語言自動把你這裡的else和最近的if關聯所以這個else也就是if(b<0)的else,因為if(b<0)這個判斷不執行,所以else的內容也跳過,所以程式實際上就是直接執行了printf

以下程式的輸出結果是()main(){ int a=3,b=2,c=1;

2樓:莘振梅果琴

你把**這麼寫應該能看的清晰一點12

3456

78910

1112

1314

1516

1718

1920

21main()

3樓:匿名使用者

我測試出來的結果不是2,5,1,2,2,3, -2

4樓:小陸仁

我沒看明白 你宣告2個int b 是怎麼通過的

別弄的眼花繚亂了 讓人去看,我一看語法已經不對 了 就看不下去了

5樓:謊言一樣的誓言

我輸出的時18,而且我覺得也應該是18

++b之後b=3,b*=(a+b) b=b*(a+b)=3*(3+3)=18

6樓:匿名使用者

不對吧?第二個b應該是18啊

7樓:我是胡歌粉

c-=++b//b=3,c=c-(++b)=-2

b*=a+b//b=b*(a+b)=3

8樓:夏若樹森

題錯了吧,要想b=3先把題改一下,b*=a+c

b=3,是因為在c-=++b處,b自增了,++b//b=b+1=2+1=3

b*=a+c//b=b*(a+c)=3*(3-2)=3

以下程式執行後的輸出結果是 main() {int a,b,c; a=1;b=3;c=5; printf(「%d,%d\n」,(++a,b++

9樓:塗增嶽牢嬋

我執行了下復

,結果是3,10

#include

main()

這裡面制的(++a,b++)是個bai逗號表示式du,a++和b++都執行了但最後輸出zhib++的結果所以daoa+b+c就是2+3+5

10樓:友玉花凌鸞

如果你在下面再加一句printf(「%d,%d\n」,(++a,b++),a+b+c);a,b的值就會變。

而這樣的話應該printf函式對變數只讀一遍,就是在一個printf中a都是1了。

11樓:初起雲尤丙

結果是來3,10啊。這主要是由於自增

操作源符++前置還是後置決定的,比如說++a,就是先自增再使用,而a++就是說先使用再自增。執行printf(「%d,%d\n」,(++a,b++),a+b+c)這條語句的過程中,a=2(就是說已經自增了),b=3(還沒自增)。等這條語句執行完之後,那麼a=2

b=4~

12樓:羅夕古卯

printf(「%d,%d\n」,(++a,b++),a+b+c);其中的(++a,b++)是什麼東東,有這麼寫的嗎?

++a表示先a=a+1再輸出,b++表示先輸出再b=b+1

以下程式的輸出結果是( ). #main() { int a=2,b=-1,c=2;

13樓:稽宛絲柔靖

我輸出的時18,而且我覺得也應該是18

++b之後b=3,b*=(a+b)

b=b*(a+b)=3*(3+3)=18

以下程式的輸出結果是 main() { int a,b,c; int s,w,t; s=w=t=0; a=-1,b=3,c=3;

14樓:聽不清啊

程式最後的輸出語句有誤,其一,三個%d連在一起寫而中間沒有空位,會導致輸出連到一起;其二要輸出值的變數要寫在雙引號外面,寫到雙引號裡面會照 原樣輸出字母而不是變數的值。

如下修改後會輸出 :2 0 0

main()

else if(c>0)w=a-b; else t=c;

printf("%d %d %d",s,w,t);}

15樓:匿名使用者

為什麼不自己去電腦上試試呢?

分析以下程式的輸出結果是().main() {int a=5,b=-1,c; c=add(a,b);printf("%d",c)

16樓:匿名使用者

main()

int adds( int x,int y)整個計算過程是這樣的:

第一次呼叫adds(a,b);

n*=++m //m=1 n=n*1=3m=n%x+y++; // n%x+y++=n%x+y=3%5-1=2

return(m); //m=2,所以c=2,第一次結果為2第二次呼叫adds(a,b);

n*=++m //m=3 n=n*3=3*3=9m=n%x+y++; // n%x+y++=n%x+y=9%5-1=3

return(m); //m=3,所以c=3,第二次結果為3

下列程式的輸出結果是 1 main() { int a=2,b=-1,c=2; if (a

17樓:匿名使用者

樓主好!

此題的完整寫法是:

#include

void main()

輸出的結果是8 11這兩個數。

首先你要知道指標的含義,和陣列中陣列名的作用。

第一:你定義了一個指標p,並且把a的值賦予給p,這就相當於把一維陣列a[5]的首地址賦予給哦指標p,因為陣列名a就相當於陣列的首地址。所以p指向陣列a[5]的首元素,既p指向a[0],同理可以知道*p=a[0]=8;

第二:p指向a[0],則*p=a[0],

那麼p+1指向a[1],則*(p+1)=a[1]依此推下去,

所以題目中的*(p+2)+=2;就相當於 a[2]+=2,也就相當於 a[2]=a[2]+2=9+2=11

這樣陣列中a[2]的值就變為11儲存了起來。

綜上,你最後輸出是*p和*(p+2),就相當於數出a[0],a[2],所以為8,11.

不知道樓主是否可以理解!嘿嘿

18樓:匿名使用者

請你把程式黏貼完整,不要黏貼到問題標題中呢,問題標題的長度限制很短的,請把問題黏貼在問題詳情裡面

另外,要知道程式的輸出結果,直接自己用vc把這段程式執行一遍是最好的,那樣還能加深印象

19樓:薯條的逃離

下列程式段的輸出

結果是()。

int main(void)

main() { int a=2,b=-1,c=2; if(a

20樓:匿名使用者

else關鍵字總是與它前面最接近的一個if組成一對在這題中else語句與if(b<0) c=0組成一對它們這個整體同屬於上一個if(a

因為a=2,b=-1,不能進入if(a

執行printf("%d\n",c)

這個時候c未做任何改變,

所以值為2

21樓:匿名使用者

這樣寫你看的更清楚:

main()

{int a=2,b=-1;c=2;

if(a原則,是第二if不成立時的選項。

而執行時,第一個if不成立,所以後面就不執行,直接執行printf語句,輸出2.

22樓:傾聽的你

void main() {

int a=2,b=-1,c=2;

if (a意思是如果a且b<0,才執行c=0。題意不滿足,所以不執行,else於離著它最近的if配對,所以這個程式時一個大的if裡面巢狀一個if—else語句。

所以當a

23樓:匿名使用者

#pragma hdrstop

#include

#include

#pragma argsused

main()

若想他等於3,則

main()

//****************

else c++;

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

system("pause");}

24樓:匿名使用者

if(a

在沒有加大括號的情況下else會自動與最近的if匹配。

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

加上 你就非copy常容bai易明白 main else 恩,是2啊。c語言規定,如果if後面沒有 那就只包括if後面的那條語句內,但由於這道題if後面還是if else語句 他們是一條語容句 所以相當於 main printf d n d 第一個if條件就不符合了,所以直接執行最後的輸出語句,所以...

以下程式執行後的輸出結果是mainint a,b,c a 1 b 3 c 5 printfd,d na,b

結果是3,10啊。這主要是由於自增操作符 前置還是後置決定的,比如說 a,就是先自增再使用,而a 就是說先使用再自增。執行printf d,d n a,b a b c 這條語句的過程中,a 2 就是說已經自增了 b 3 還沒自增 等這條語句執行完之後,那麼a 2 b 4 我執行了下,結果是3,10 ...

以下程式的執行結果是inta1b2c

因為c a是賦值語句,一定為true,c被賦值為a,所以輸出為1 以下程式的執行結果是 int a 1,b 2,c 3 if c a 執行結果 應該是2 如果3 1成立列印3 否則列印2 明顯不成立 結果是2 c a是賦值語句恆為真,此時c 1 所以輸出為1 以下程式的輸出結果是 main int ...