綜合練習題
一、從下列四個供選擇的答案中選出正確的乙個答案
1、語句printf(「%%d%d」, 123); 將輸出:
a) %123%d b) %%d123 c) %d123 d)上述語句語法有錯
「%%」格式表示輸出乙個「%」。
2、執行下列程式段後, a值為:
int a, b;
a=15; b=12;
a=(a-- ==b++)? a%5 : a/5;
a) 0b) 2.8c ) 4d) 2
先計算a--==b++的值:
a--的值為15,執行後a=14;b++的值為12,執行後b=13;15==12為假
執行a/5即14/5值為2
結果: a = 2
3、判斷字元變數c的值為數字(』0』---』9』)則返回1,否則返回0, 可用表示式:
a) 『0』<=c<=『9』 b) 『0』<=c && c<=『9』 c) 『0』<=c || c<= 『9』 d)以上均不是
4、對於int x, y; 語句 if (x<0) y= -1; else if (!x) y=0; else y=1; 等價於:
a) y=0; if (x>=0) if (x) y=1; else y= -1;
b) if (x!=0) if (x>0) y=1; else y= -1; else y=0;
c) if (x<0) y= -1; if (x!=0) y=1; else y=0;
d) y= -1; if (x!=0) if (x>0) y=1; else y=0;
語句if (x<0) y= -1; else if (!x) y=0; else y=1; 等價於:
if (x < 0)
y = -1;
else
即:1 x < 0
y = 0 x = 0
1 x > 0
5、迴圈 for(i=0, j=5; ++i!=--j; ) printf(「%d %d」, i, j); 將執行
a) 6次 b) 3次 c) 0次 d) 無限次
i = 0, j = 5, (++i1) != (--j4) 成立: i = 1, j = 4
i = 1, j = 4, (++i2) != (--j3) 成立: i = 2, j = 3
i = 2, j = 3, (++i3) != (--j2) 成立: i = 3, j = 2
……6、下列程式段執行後s值為:
int i=5, s=0;
do if (i%2) continue; else s+=i; while (--i);
a) 15 b) 9 c) 6 d) 以上均不是
寫成規範形式:
doif (i % 2)
continue;
else
s += i;
while (--i);
i = 5, s = 0: i % 2 = 1i = 4
i = 4, s = 0: i % 2 = 0: s = 0 + 4 = 4; i = 3
i = 3, s = 4: i % 2 = 1i = 2
i = 2, s = 4: i % 2 = 0: s = 4 + 2 = 6; i = 1
i = 1, s = 6: i % 2 = 1i = 0
7、對於int a,要使((1<<2>>1)|a)==a; 則a 可以是:
a) 2 b) 6 c) 10 d) 2,6,10均可
10000 0000 0000 0001
1<<20000 0000 0000 0100
1<<2>>1: 0000 0000 0000 0010
(1<<2>>1) | 2: 0000 0000 0000 0010 (2)
(1<<2>>1) | 6: 0000 0000 0000 0110 (6)
(1<<2>>1) | 10: 0000 0000 0000 1010 (10)
8、對於以下巨集定義:
#define sq(x) x*x
#define dd(x,y) sq(x)-sq(y)
巨集呼叫dd(2*3, 2+3)執行後值為:
a) 43 b) 11 c) 25 d) 以上均不是
dd(2*3,2+3)
sq(2*3)-sq(2+3)
2*3*2*3-2+3*2+3
439、對於以下結構定義:
struct *p;
*p->str++中的++加在
a) 指標str上 b) 指標p上 c) str所指的內容上 d) 以上均不是
優先順序: 「->」 >是右結合
*p->str++ *((p->str)++)
例子: 假如有
則*p->str++的值為 『h』, 執行後, str指向』e』單元.
10、將s所指節點加到p所指節點之後(如下圖), 其語句應為:
next .
pnext
s a) s->next = p+1; p->next = s
b) p->next = s; s->next = p->next;
c) s->next=p->next; p->next=s->next;
d) s->next = p->next; p->next = s;
11、語句if (a>b) k=0; else k=1; (int a, b, k) 等價於:
a) k=(a>b)?1:0; b) k=a>b; c) k=a<=b; d) 以上均不是
12、對於int i; char c, s[20];從輸入序列123ab45efg中將123讀入i; 』 b』讀入c; 「45efg」讀入s, 則scanf語句應寫為:
a) scanf(「%da%c%s」, i, c, s) b) scanf(「%d%*c%c%s」,&i, &c, s);
c) scanf(「%da%c%s」, &i,&c,&s) d) scanf(「%d%c%c%s」, &i, &c, s);
13、若有以下說明和語句, 已知int和double型別分別佔2和8個位元組,則sizeof(st)的值為:
struct st
};a) 18b) 20c) 12d) 以上均不是
14、對於以下程式段, 執行後i值為:
enum weeks ;
enum weeks a=1;
int i=0;
switch (a)
a) 1 b) 0 c) 3 d) 上述程式有語法錯誤
15、對於以下遞迴函式f, 呼叫f(4),其返回值為:
int f(int n)
a) 10 b) 11c) 0d) 以上均不是
16、某一程式test.c,編譯後執行:test 123 456 abc 則相應的argc及ar**[3]分別為:
a) 3 「456」 b) 3 「abc」 c) 4 「456」 d) 4 「 abc」
17、如下程式段:
int c=;
int *k;
k=c;
printf("next k is %d",*++k);
其輸出應為:
a) 2 b) 7 c) 1 d)以上均不對
18、如果變數xx有如下型別:
struct {
char a1; 1
int a2; 2
xx; 如果sizeof(xx)的值為3, 則:
union {
char a1;
int a2;
c語言練習題
下列敘述中不正確的是 c a 函式可以帶引數 也可以不帶引數。b main函式在c程式中必須有惟一乙個 c c程式的執行從main函式開始,所以main函式必須放在程式最前面 d 每個函式執行時,按函式體中語句的先後次序,依次執行每條語句 以下四個程式中,完全正確的是 d a include mai...
C語言練習題
1.兔子繁殖問題 設有一對新生兔子,從第三個月開始它們每個月都生一對兔子。按此規律,並假設沒有兔子死亡,一年後共有多少對兔子?答 include int main void 執行後結果 一年後的兔子數為 144 1 fib1 1 2 fib2 1 3 fib3 2 4 fib4 3 5 fib5 5...
C語言迴圈結構練習題
while語句的使用格式和注意事項 do while語句的使用格式和注意事項 for語句的使用格式和注意事項 break和continue語句在迴圈語句中的應用 迴圈結構的巢狀 使用goto語句實現迴圈結構 窮舉法程式設計方法 迭代程式設計方法 1 語句while e 中的條件 e等價於 a.e 0...