請各位幫我們下列C語言的問題

2008-04-16 6:15 am
1.
若在C語言中宣告下列結構、變數及初值:

struct student{

char *last_name;

int student_id;

char grade;

};

struct student tmp, *p=&tmp;

tmp.grade=’A’;

tmp.last_name=’Laugero’;

tmp.student_id=12345;
則下列運算式之運算結果何者錯誤? 
(A)tmp.last_name 為Laugero (B)*p->last_name+1 為a 

(C)*(P->last_name+2) 為u (D)(*p).student_id 為12345。

答案是(B)*p->last_name+1 為a 
解釋是(B)*p->last_name+1 為M 才對
Orz 哪來的M啊

2.
以C語言定義下列函式:

double add(double a[],int n)

{

int i;

double add=0.0

for(i=0;i<n;++i)

add+=a[I];

return add;

}
若陣列v有100個元素且k大於7,以add(&v[7], k-7) 呼叫此函式,請問此函式中for迴圈內之程式碼add+=a[i];共被執行幾次? 

(A)7 (B)k-7 (C)k-1 (D)k。
為啥是(B)k-7

3.
若在C語言中宣告下列變數及初值:

char c=`A`;

int i=7, j=7;

double x=0.0, y=2.3;

則下列運算式之運算結果何者正確? 

(A)!c為0 (B)!(i-j)為0 (C)!i-j為1 (D)!x*!!y為0。
答案是(A)!c為0
哪裡的!c.....
不是!‘A’嗎
還是就是(D)!x*!!y為0。
為啥不是0*0,而是1*1呢

4.
若在C語言中宣告下列變數及初值:

unsigned a=1,b=2;
則a<<1+b<<3之運算結果為? 

(A)1 (B)16 (C)32 (D)64。
這題我真的看不懂了.....

回答 (1)

2008-04-16 7:28 am
✔ 最佳答案
1. *p->last_name='L', 其ASCII code加1即為'M'.
2. double add(double a[],int n), k-7被帶入為n, 且為for loop的條件值, 所以執行k-7次.
3. 'A'的ASCII code為65, !(not)65, 或是not任何數均為0.
4. a=1向左移1+b=3位元即為8, 8=00001000, 左移3位為64.


收錄日期: 2021-04-11 18:33:41
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20080415000015KK10606

檢視 Wayback Machine 備份