首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平 駕駛員 | 網絡編輯 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
5.1 單項選擇題
1.設有定義“int a=3, b,*p=&a;”,則下列語句中使 b不為3的語句是( )
① b=* &a; ② b=* p;
③ b=a; ④ b=*a;
【解】定義有 int a=3, b,*p=&a;對b賦值的表達式有*&a、*p、a 、*a。引用變量。的值有兩種方法,一是直接引用a,二是通過a的指針間接引用a。對于后者,又有多種表達方法,通過指向a的指針p,間接引用a的內容,如*p。或通過求地址運算符由變量a得到其指針&a,再由這指針表達式間接引用 a的內容,如* &a。所以表達式*&a、*p和a都能引用變量a的值,而使b的值為3。而表達式。a是錯誤的,因為a不是指針變量,不能對它施行取內容運算符。。所以解答是④。
2 .設指針x指向的整型變量值為萬,則"printf("%d\n",++ *x);"的輸出是( )
① 23 ② 24 ③ 25 ④ 26
【解】若指針變量x指向某個變量,例如指向變量v,并且變量v的值是25,則表達式++ *x的值是26。這是因為表達式的計算順序可加圓括號表達成(++(*x)),首先是*x,是對X所指變量V的引用,所以++ *X就是++V。++V是先讓變量V增1,并以增至后的V的值為表達式++V的結果,所以其值是 26。所以解答是④。
3.若有說明:“ int i,j= 7,*p=&i;”,則與“ i=j;”等價的語句是( )
①i=*p; ②*P=* &j;
③i==&j; ④i=* *p;
【解】指針變量 p指向變量i時,表達式i=*p等價于 i=i;表達式*p=*&j等價于i=j;而表達式i=&j企圖將整型變量的指針賦給整型變量,這是錯誤的;表達式i=* *p也是一種錯誤的表達式。p是指針,*p是p所指變量j,* *p是企圖將整型變量j當作指針,并想通過j間接引用某個變量。所以解答是②。
4.若有說明語句“int a[10],*p=a;”,對數組元素的正確引用是( )
①a[p] ②P[a]
③*(P+2) ④P+2
【解】在 C語言中,約定數組名單獨出現在表達式中時,它表示數組首元素的指針。有int a[10] ,則a可以作為&a[0]使用。另有整型指針變量p,代碼p=a實現p指向數組a的首元素。則表達式*(p+2)是引用數組元素a[2]。表達式a[p]和p[a]都是不正確的,下標必須是整型表達式,不可以是指針表達式。表達式p+2是指針表達式,它的值是&p[2]。所以只有表達式*(p+2)引用數組a的元素a[2]。所以解答是③。
5.下面各語句中,能正確進行賦字符串操作的語句是( )
①char s[5] ={"ABCDE"}; ②char s[5] ={’A’,’B’,’C’,’D’,’E’};
③ char *s;s="ABCDE"; ④ char *s;scanf("%", s);
【解】字符串最終存儲于字符數組中,存儲字符串的字符數組可以是程序主動引入的(定義或動態分配),也可以是字符串常量,由系統分配。其中字符數組用字符串初始化就是字符串存儲于由程序引入的字符數組的例子。給字符指針賦字符串則是系統自動分配字符率存儲空間的例子。給字符指針賦字符串并不是將一個長長的字符串存于字符指針變量中,而是將字符串常量存儲于常量區,并將存儲這個字符串的首字節地址賦給指針變量,讓指針變量指向字符率常量的首字符。對于以字符串作為字符數組初值的情況,要求字符數組足夠的大,能存得下字符串常量。這里有一個特別的規定,若數組的大小少于存儲字符串有效字符的字節個數,系統將報告錯誤;當字符數組的大小只能存儲字符串的有效字符,而不能存儲字符率結束標記符時,則存儲于字符數組中的內容是字符序列,因沒有存儲字符率結束標記符,存儲的內容就不是字符串。如代碼char a[5]="ABCDE"。另外,給字符數組元素逐一賦字符初值,并在字符初值中沒有字符串結束標記符,則存于字符數組中的內容也不是字符率。如代碼 char s[5]={’A’,’B’,’C’,’D’,’E’}。特別要注意當字符指針還未指向某個字符數組的元素時,不可以通過字符指針輸入字符串。如代碼char *s;scanf("%s",s)。若寫成char *str;scanf("%s",&str)更是錯誤的了。由于C語言規定數組不能相互賦值,所以只能將字符串常量賦給某字符指針。如代碼char *s;s="ABCDE"是正確的。實際上,字符率"ABCDE" 被存儲于常量區中,向指針變量賦的是字符指針,讓s指向其中的字符’A’。所以解答是③。
6.若有以下定義,則不能表示a數組元素的表達式是()
int a[10]={1,2,3,4,5,6,7,8,9,1o},*p=a;
①*p ② a[10] ③*a ④ a[p-a]
【解】上述代碼定義了有10個元素的整型數組。,和定義指針變量p,并讓p指向數組元素a[0]。所以代碼*p是引用 a[0]。由于數組a只有10個元素,最后一個元素是a[9],表達式a[10]是錯誤的。數組名a可以作為a的首元素的指針,表達式*a就是a[0] ,是對數組a的首元素a[0]的引用。指針p的值是a,表達式p-a。的值是0,所以a[p-a]就是a[0]。所以解答是②。
7.若有以下定義,則值為3的表達式是()
int a[]= {1,2,3,4,5,6,7,8,9,10},*p=a;
①p+=2,*(p++) ③p+=2,* ++p
③p+=3,*p++ ④ p+=2,++ *p
【解】數組a有10個元素,分別有值1至10,指針變量p指向a[0] ①逗號表達式 p+=2,*(P++),先是P+=2使P指向a[2],接著是*(P++),以當時P所指變量a[2]取內容3為表達式的值,同時使p指向a[3]。②返號表達式p+=2,* ++p,先是p+=2使p指向a[2],以后是* ++p,又使 p增1,讓它指向a[3],并取指針p所指變量a[3]的內容4作為表達
式的值。③逗號表達式 p+=3,*p++,先是p+=3使p指向a[3],以后是*p++,表達式的值是 a[3]為 4,而使p指向a[4]。④逗號表達式p+=2,++ *p,先是p+=2,使p指向a[2],以后是++ *p,因當時的*p就是 a[2],++a[2]使a[2]增1,變成4,并以4為表達式的值。所以只有p+=2,*(p++)的值是3。所以解答是①。
更多軟考資料請訪問:考試吧軟件水平考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |