1.
#include
main()
{ int a=1,b=3,c=5;
if (c==a+b)
printf("yes\n");
else
printf("no\n");
}
運行結(jié)果為:no
詳見教材p89 選擇結(jié)構(gòu)
詳見教材p91關(guān)系符號
詳見附錄D p378符號的優(yōu)先級
==表示判斷符號兩邊的值是否相等;=表示將符號右邊的值賦給左邊的變量
本題考點是選擇結(jié)構(gòu)3種基本形式的第二種
選擇結(jié)構(gòu)三種一般形式中的“語句”皆為復(fù)合語句,復(fù)合語句要用{ }括起來,只有當(dāng)復(fù)合語句中只包括一條語句時可以省略{ },此題即如此,因此兩個printf操作沒有加{ }
若c==a+b成立,則執(zhí)行printf("yes\n");
否則(即c==a+b不成立),執(zhí)行printf("no\n");
+的優(yōu)先級高于==,因此先算a+b,值為4, 表達(dá)式5==4不成立,因此執(zhí)行printf("no\n");即輸出字符串no
2.
#include
main()
{ int a=12, b= -34, c=56, min=0;
min=a;
if(min>b)
min=b;
if(min>c)
min=c;
printf("min=%d", min);
}
運行結(jié)果為: min=-34
詳見教材p89 選擇結(jié)構(gòu)
本題考點是選擇結(jié)構(gòu)3種基本形式的第一種
一共包含了兩個選擇結(jié)構(gòu)(兩個if語句)
定義變量,并賦值 此時a=12, b= -34, c=56, min=0
將a中值拷貝,賦給min,覆蓋了min中的0,此時min中的值被更新為12。
若min>b成立,則執(zhí)行min=b;
若min>c成立,則執(zhí)行min=c;
輸出min中的值
12大于-34,第一個if語句的表達(dá)式成立,因此執(zhí)行min=b; 執(zhí)行后min中的值被更新為-34.
-34小于56,第二個if語句的表達(dá)式不成立,因此不執(zhí)行min=c;
最后輸出min中的值,為-34.
3.
#include
main()
{ int x=2,y= -1,z=5;
if(x if(y<0)
z=0;
else
z=z+1;
printf(“%d\n”,z);
}
運行結(jié)果為:5
遇到選擇結(jié)構(gòu),首先要明確條件表達(dá)式成立時執(zhí)行哪些操作。本題中,第一個if語句,其后的復(fù)合語句沒有大括號{ },說明復(fù)合語句中只包含一條語句,進(jìn)而省略了{(lán) }。內(nèi)層的if...else...是選擇結(jié)構(gòu)的第二種基本形式,在結(jié)構(gòu)上視為一條語句。因此內(nèi)層的if...else...作為第一個if語句的復(fù)合語句。
若表達(dá)式x 若y<0,則執(zhí)行z=0;
否則(即y>=0),執(zhí)行z=z+1;
輸出z
2>-1,表達(dá)式x 輸出z中的值為5