1.語句"printf("%d\n"strlen("ats\nol2\1\\"));"的輸出結果是( )
、11
、10
③9
、8
【解】字符串中的字符可以是一般的普通字符,也可以是由反斜杠字符開頭的轉
義字符。在字符串"abs\no12\11\\" 中,有三個轉義字符,它們是\n、\1、\\,
所以該字符串的有效字符個數是9。所以正確的回答是③。
2.函數調用“strcat(strcpy(strl,str2),str3)”的功能是( )
、賹⒆址畇trl復制到字符串str2中后再連接到字符串str3之后
②將字符串strl連接到字符串str2中后再復制到字符率str3之后
、蹖⒆址畇tr2復制到字符串strl中后再將字符串str3連接到字符串strl之后
、軐⒆址畇tr2連接到字符率strl之后再將字符串strl復制到字符串str3中
【解】函數調用strcat(s1,s2)是將s2字符串復制連接到s1字符串之后,使s1字符
串變得更長。函數調用strcpy(s1,s2)是將s2字符串復制到s1,使s1字符串的內容
與s2字符串的內容相同。函數調用strcat(strcpy(strl,str2) ,str3) 是先執(zhí)行
strcpy(strl,str2),然后再執(zhí)行strcat(strl,str3),所以其功能是③.
3.設有如下定義,則正確的敘述為( )char x[]={"abcdefg"};char y[]={’
a’,’b’,’c’,’d’,’e’,’f’,’g’};
、贁到Mx和數組y等價
②數組x和數組y長度相同
、蹟到MX的長度大于數組y的長度
、軘到MX的長度小于數組y的長度
【解】不指定數組長度的字符數組定義,其所需要的字節(jié)數可由初始化中給出的值
的個數確定。字符數組可以用字符串初始化,也可用字符逐個給字符數組的元素初
始化。但用字符初始化時,盡管給出了字符串中的全部字符,還是不會自動有字符
率結束字符。但字符串初始化自動會含有字符串的結束標記符,字符串初始化所需
要的字節(jié)個數會比用同樣多的字符初始化多1個字節(jié)。所以③才是正確的。
4.根據變量定義“static int b[5],a[][3]={1,2,3,4,5,6};”,b[4]=
( ),a=[1][2]
【解】系統(tǒng)規(guī)定,靜態(tài)變量定義時,若末初始化,系統(tǒng)自動給定二進制代碼全0的
值。所以態(tài)數組b的元素全為0,當然包括b[4]也為幾靜態(tài)數組a是二維數組,每行
有三個元素,在初始化中結出了六個初值,所以數組a有2行。由于數組的元素按
行順序存儲,并按行順序初始化。前三個值是第一行,后三個1][2]是第二行的第
三列元素,也是a的最后一個元素,所以其值是6。
5.設有定義語句“static int a[3][4]={{1},{2},{3}};”則a[1][1]值為( ),
a[2]
[1]的值為( )。
【解】給二維數組初始化時,可按行給出初值,并且每行可以只給前面部分的元素
給出初值。系統(tǒng)規(guī)定,對哪些未給出初值的部分元素,系統(tǒng)自動置二進制代碼全0
的值。由于定義語句只給a[0][0]給定初值1、a[1][0]給定初值2、a[2][0]給定初
值3。這樣,其它元素都為0值。所以,a[1][1]=( )。0,a[2][1]=( )。
6.若在程序中用到“putchar( )”函數時,應在程序開頭寫上包含命令( ),
若在程序中用到“strlen( )”函數時,應在程序開頭寫上包含命令()。
【解】putchar()是系統(tǒng)提供的頭文件stdio.h中定義的宏,所以程序要使用它,必
須寫上包含命令:#include。函數strlen()是系統(tǒng)提供的字符串處理函數之一,字
符串處理函數的函數原型說明和它們用到的有關常量、數據結構等,在系統(tǒng)提供的
頭文件tring.h中定義,所以使用該函數的程序應在程序開頭寫上包含命令
并include