1)有以下程式
#include
void main()
{ int a=5,b=0,c=0;
if(a=b+c)cout << "***"<< ?$$$?<下列選項敘述正確的是<>
A)有語法錯不能通過編譯
B)可以通過編譯但不能通過連線
C)輸出***
D)輸出$$$
(2)已知各變數的定義如下
int i=8,k,a,b;
unsigned long w=5;
double x=1.42,y=5.2;
則以下符合C++語言語法的表示式是
A)a+=a-=(b=4)*(a=3)
B)a=a*3+2
C)x%(-3)
D)y=float i
(3)以下程式中迴圈體總的執行次數是
int i,j;
for(i=6;i>1;i--)
for(j=0;j{……}
A)20
B)261
C)15
D)25
(4)對於下面的程式,說法正確的是
#include
void main()
{ int x=3,y=4,z=2;
if(x=y+z)cout << "x=y+z";
else cout << "x!=y+z";}
A)不能通過編譯
B)輸出6
C)輸出x!=y+z
D)輸出x=y+z
(5)下列程式的輸出結果是
#include
void main()
{ int a[3],i,j,k=2;
for(i=0;i<3;i++)a[i]=i;
for(i=0;ifor(j=0;ja[j]=a[i];
cout << a[2];}
A)2
B)3
C)1
D)0
參考答案:
(1)D
解析: 解答本題時,先判斷if語句,因為a=b+c為零,則執行else語句。
(2)A
解析: 選項B)中a在運算前未賦初值,在C++語言裡變數在運算前必須賦初值;選項C)中的模運算子"%"兩側均應為整型資料;選項D)應改為y=(float)i。
(3)A
解析: 本題中第1個for迴圈執行5次後結束,第2個for迴圈執行5次。第2個for迴圈中第1次執行了6次,第2次執行了5次,第3次執行了4次,第4次執行了3次,第5次執行了2次,共20次。
(4)D
解析: 解答本題關鍵是要理解if後面的括號裡的是賦值語句而並非關係判斷,賦完值後x不等於零,C++語言裡非零都作真處理,所以輸出結果為"x=y+z",故答案為選項D),注意"="與"=="的`區別。
(5)A
解析: 本題裡有三個for迴圈,但要分清楚,第一個是單獨的給三個元素賦值,賦完值後三個a[0]=0,a[1]=1,a[2]=2;後面的兩個for是巢狀迴圈,對陣列元素的賦值,但由於k=2,初值已定for裡的條件是小於k,所以不管怎麼處理都影響不到a[2],故答案為2。