- 相關(guān)推薦
聯(lián)想筆試題及解答
聯(lián)想筆試題
1.設(shè)計(jì)函數(shù)
int atoi(char *s)。int atoi(char *s)
{
char sign;
char sign_val = 1;
int val = 0;
int n = 0;
/* skip spaces */
while (isspace(*s))
++s;
if (*s == '-' || *s == '+')
/* skip '-' and '+' sign */
{
sign = *s;
if (sign == '-')
sign_val = -1;
++s;
}
/* when goes here, it is not space or sign */
while ((*s != '\0') && isdigit(*s))
{
val = 10 * n + (*s - '0');
n = val;
s++;
}
if (*s != '\0')
{
printf("non digit in your input!!\n");
exit(-1);
}
/* non error occured */
return (sign_val * val);
}
2.int i=(j=4,k=8,l=16,m=32); printf("%d", i); 輸出是多少?
結(jié)果為: 32.
3.解釋局部變量、全局變量和靜態(tài)變量的含義。
局部變量包括函數(shù)的形參,包含在函數(shù)體或者語(yǔ)句塊內(nèi)的變量,局部變量的生存期在退出函數(shù)或語(yǔ)句塊后結(jié)束。
全局變量是指在所有函數(shù)和語(yǔ)句塊之外的變量,它對(duì)于整個(gè)程序均可見,全局變量的生存期與程序的生存期相同.
靜態(tài)變量指由關(guān)鍵字static聲明的變量,它的作用域和其他變量一樣,由它所在的位置決定,如在函數(shù)體或語(yǔ)句塊中聲明,則只在函數(shù)體或語(yǔ)句塊可見,其他地方均不可見.它的生存期與程序相同.
4.解釋堆和棧的區(qū)別。簡(jiǎn)述如下:
棧上分配的內(nèi)存,由系統(tǒng)自動(dòng)分配,系統(tǒng)會(huì)自動(dòng)收回.如果需要?jiǎng)討B(tài)分配內(nèi)存,則只能通過malloc/new在堆上分配的內(nèi)存,使用完畢后,通過free/delete來(lái)釋放內(nèi)存。
5.論述含參數(shù)的宏與函數(shù)的優(yōu)缺點(diǎn)。
含參數(shù)的宏優(yōu)點(diǎn):省去了函數(shù)調(diào)用的開銷,運(yùn)行效率高.
含參數(shù)的缺點(diǎn):
由于宏本質(zhì)上是字符串的替換,所有可能會(huì)由于一些參數(shù)的副作用導(dǎo)致得出錯(cuò)誤的結(jié)果.
如:
#define max(a, b) ( ((a) > (b)) ? (a) : (b) )
如果程序中出現(xiàn)這樣的調(diào)用: max(a++, b);
將導(dǎo)致a被計(jì)算2次,從而可能得到錯(cuò)誤的結(jié)果,而函數(shù)調(diào)用不會(huì)出現(xiàn)這種問題.另外,如果程序中有多次宏替換的話,可能導(dǎo)致代碼體積變大.函數(shù)的優(yōu)點(diǎn)是:
沒有帶參數(shù)宏可能導(dǎo)致的副作用,計(jì)算的正確性較宏更有保證.
函數(shù)調(diào)用的缺點(diǎn):
函數(shù)調(diào)用需要一些參數(shù),返回地址等入棧,出棧的開銷,效率沒有宏函數(shù)高
【聯(lián)想筆試題及解答】相關(guān)文章:
壓力面試題及解答技巧!08-08
迅雷2011.10.21筆試題08-10
中興2015筆試題08-02
可口可樂公司趣味面試題 解答08-09
交通銀行2014筆試題題目分享08-10
攀枝花移動(dòng)筆試題,筆經(jīng)分享08-10
求職陷阱解答08-03