1. 程式人生 > >牛客網刷題——心裡沒數的題

牛客網刷題——心裡沒數的題

1.

題目:

以下程式段的執行結果是()。
double  x;x=218.82631;
printf("%-6.2e\n",x);

A.輸出格式描述符的域寬不夠,不能輸出
B.輸出為21.38e+01
C.輸出為2.19e+02
D.輸出為-2.14e2

答案:

C。
%:表示格式說明的起始符號,也是轉義符號,有一題 printf(“%%%%”)輸出幾個?答案輸出%% 兩個
-:有-表示左對齊輸出,如省略表示右對齊輸出 
0:有0表示指定空位填0,如省略表示指定空位不填 
m.n m指域寬,即對應的輸出項在輸出裝置上所佔的字元數。
n指精度。用於說明輸出的實型數的小數位數。沒有指定n時,隱含的精度為n=6位 
e格式表示以指數形式輸出實數
那麼這題的意思是以左對齊、指數形式、總長度m =6、小數n=2兩位 輸出 
如果實際長度大於域寬,則以實際長度為準

2.

題目:

某32位系統下, C++程式如下所示,sizeof 的值應為?
char str[] = “http://www.renren.com”  (長度為21)
char *p = str ; 

sizeof (str ) = ?(1)
sizeof ( p ) = ?(2)
void Foo ( char str[100]){
    sizeof( str ) = ?(3)
}
void *p = malloc( 100 );
sizeof ( p ) = ?(4)

A.22, 22, 100, 100
B.4, 4, 4, 4
C.22, 4, 4, 4
D.22, 4, 100, 4

答案:

C.
第一個長度為21,加上\0為22,第二個在32位作業系統中,指標大小為4,第三個,陣列在作為函式的形參時,自動退化為同類型的指標,第四個指向開闢的記憶體的指標,大小仍然為4

陣列長度就是你定義陣列時方括號中數字的大小。
字串長度就是字元的個數。
字串所佔空間大小就是字串長度+1(1個結束符的長度);
作為函式的形參傳遞時陣列退化為指標 

char c[10]={'x','y','z'},d[]={'x','y','z'}; 不以‘\0’作為結束標誌的,它就沒有串結束標誌, 字元陣列的長度,就是陣列的長度
sizeof(c)=10,sizeof(d)=3