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。
這題我真的看不懂了.....