⑴ c語言的問題若有以下調用語句,則不正確的fun函數的首部是
若有以下調用語句,則不正確的fun函數的首部是?
main(){
int a[50],n;
fun(n, &a[9]);
}
解答:答案d是錯誤的,因為調用函數中的實在參數為一個是整型變數n,一個是指針變數a[9]的地址,即為指針變數。因為函數的實在參數與形式參數應該類型相同,個數相同。而答案d中的兩個參數均為整型變數,所以d是錯誤答案。答案a中的m為整型變數,x是一個數組類型的變數,而數組名代表數組的首地址,所以與形式參數類型相同。答案b與答案a原因相同。而答案c中的變數p為整型變數,變數s為指針類型的變數。
語句printf("a\bre\'hi\'y\\\bou\n");的輸出結果是什麼?其他3項哪裡錯了?
a\bre\'hi\'y\\\bou\n
a\bre\'hi'y\bou
ar'e'hi'you
b'hi'y\bou(說明:'\b'是退格符)
解答:printf()函數由兩部分組成,格式控制部分和輸出表列,其中由雙引號括起來的部分為格式控制部分,而格式控制部分有兩種功能,一種是格式轉換,該部分由%開始,另一部分屬於原樣輸出的,而該print()函數中只包括原樣輸出的部分。應該輸出a\bre\'hi\'y\\\bou\n,但是在C語言中以'\'開始的字元為轉義字元,所謂轉義字元就是不是原來字元的含義,而轉換成另一種含義了,比如說'\b'是退格符,就是游標由原來的位置向前移動一個位置。'\''輸出的是單引號,'\\'輸出的是一個反斜線,'\n'為換行。因此該輸出語句首先輸出一個字元a,然後遇到'\b'向前移動一個位置,游標移動到字元a的下面,即下一次輸出的從字元a的位置開始輸出,然後輸出re,字元r把字元a給覆蓋掉了,接著輸出單引號,然後輸出字元hi,然後再輸出單引號,然後輸出字元y,然後輸出一個反斜線,接著有遇到'\b'游標向前移動一個位置,即下一次輸出的字元把反斜線給覆蓋掉了,因此字元o把反斜線給覆蓋掉了,接著輸出字元u,然後換行。因此輸出數據為re'hi'you。