《C++指針》習題參考答案.doc_第1頁
《C++指針》習題參考答案.doc_第2頁
《C++指針》習題參考答案.doc_第3頁
《C++指針》習題參考答案.doc_第4頁
《C++指針》習題參考答案.doc_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

9C+指針習題學號 姓名 一、 選擇題1、有定義如下:int a5, *p; 則下列描述錯誤的是 B A表達式p=p+1是合法的B表達式a=a+1是合法的C表達式p-a是合法的D表達式a+2是合法的2、函數(shù)定義為Fun(int &i),變量定義n=100,則下面調(diào)用該函數(shù)正確的是 C AFun(20)BFun(20+n)CFun(n)DFun(&n)3、若有說明int I,j=2,*p=&i;則能完成i=j賦值功能的語句是 B Ai=*p;B*p=*&j;Ci=&j;Di=*p;4、設已有定義char *st = how are you;下列程序中正確的是 A Achar a11,*p;strcpy(p=a+1,&st4);Bchar a11;strcpy(+a,st);C. char a11;strcpy(a,st);D. char a,*p;strcpy(p=a1,st+2);5、設有數(shù)組int array34,下列引用數(shù)組元素的方法中錯誤的是 D AarrayijB*(*(array+i)+j)C. *(arrayi+j)D. *(array+i*4+j)6、有定義int s45,(*ps)5;ps=s;則對數(shù)組s中元素引用的正確的是 C Aps+1B*(ps+3)C. ps02D. *(ps+1)+37、設有說明int b44,以下不能等價表示元素b33的是: B A*&b33 B(*(*(b+3)+3) C*(b3+3) D*(*(b+3)+3)8、若有說明char *s=234,5678,9012,3456,7890;,則表達式*s1 *s3比較的是 B A1234和9012 B5和3 Cl和9 D5678和34569、設語句char *s=Student,Teacher,Father,Mother,*ps=s2;,執(zhí)行語句cout*s1,ps,*psn;,則輸出結(jié)果是 A AT,Father,F BTeacher,F,Father CTeacher,Father,Father D語法錯無輸出10、設有以下說明語句: char sl20=hello,s220=china;const char *ptr=s1; 以下語句中不符合C+語法規(guī)則的語句是 D Astrcpy(s2,ptr); Bptr=s2; Cptr=ptr+4; D*ptr=*s2;11、設s和t分別為指向兩個長度相同的字符數(shù)組的指針,則循環(huán)語句while( C );可以正確實現(xiàn)字符串t到s的完整復制功能。 A*s=*t&*t!=O Bs+=t+&*t!=0C*s+=*t+ D*(+s)=*(+t)12、設有說明:char s110,*s2=s1;則以下正確的語句是 C As1=”computer” Bs110=”computer”Cs2=”computer” D*s2=”computer”13、設有說明:int a4=1,2,3,4,5,6,7,8,9,10,*p=*(a+1);以下可得數(shù)值為9 的表達式是 B A p+=3,*p+ Bp+=4,*(p+)Cp+=4,*+p Dp+=4,+*p14、設有說明:int a44=1,2,3,4,5,6,7,8,9,10,*p=a1,(*q)4=a;則以下不能訪問數(shù)值為7的數(shù)組元素的表達式是 A A *(a+1)+2 B p2 C *(a1+2) D q12二、填空題1、在如下定義中 float a =100,200,300; float *p =&a0, &a1, &a2; 語句cout*p2的輸出是 300 2、若有說明語句char *name=newspaper; 則coutname+2的輸出是 wspaper ,cout*(name+3) 的輸出是 s 。3、int a5=100, 200,300, 400, 500, *p1=&a0; 則表達式(*p1)+的值是 100 。4、有如下定義中char *str =“Follow me”, “BASIC”, “Great Wall”, “Department”中輸出”BASIC”字符串的語句是:cout str1 5、執(zhí)行以下語句:int a5=25,14,27,18,*p=a;(*p)+; 則 *p的值為 26 ,再執(zhí)行語句:*p+;則 * p的值為 14 6、設有說明語句char s=123t45600089,*p=s;執(zhí)行以下兩個語句:cout*(p+5)n;cout(p+5)n;則輸出為 5 和 56 。7、設有如下函數(shù)定義。如果在主函數(shù)中有語句coutf(“goodbye!”); 則輸出 9 int f(char *s) char *p=s;while(*p+);return(ps);8、執(zhí)行以下程序后,y的值是 10 int main() int a4=2,4,6; int y=0,*p=a; for(;*p+;)if(*p)y+=*p; coutyendl;9、三、程序閱讀題1、 寫出如下程序的運行結(jié)果。char s = abcdefgh ,*p = s;p += 3;coutstrlen(strcpy(p,ABCD)endl; /4coutsendl; /abcABCD2、 寫出如下程序的運行結(jié)果。char *p = abcdefgh,*r;long *q = (long *)p;q+;r = (char *)q;coutrendl; /efgh3、 寫出如下程序的運行結(jié)果。void sub(int x,int y,int *z)*z = y - x;int main()int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);coutatbtcendl; /-5 -12 -7return 0;4、 寫出如下程序的運行結(jié)果。void ss(char *s,char t)while(*s)if(*s=t)*s = t - a + A;s+;int main()char str1100=abcddfefdbd,c=d;ss(str1,c);coutstr1endl; /abcDDfefDbDreturn 0;5、void swap(int *p1, int *p2)int *p;p=p1; p1=p2; p2=p;cout*p1t*p2endl;int main(void)int a=5, b=9;swap(&a, &b);coutatbendl;return 0;程序第一行輸出 9 5 ,第二行輸出 5 9 6、void exchange(int *x, int *y)int temp;temp=*x; *x=*y;*y=temp;void main(void)int data8=15,12,20,0,8,-5,17,1;for(int i=0;i=7;i+)for (int j=i;jdataj)exchange(&datai, &dataj);coutdataiendl;函數(shù)exchange的作用是: 交換指針變量指向的數(shù) ,&datai表示的是: datai的地址 ,程序的輸出結(jié)果是: -5 0 1 8 12 15 17 20 7、寫出如下程序的輸出結(jié)果void invert(char*a,int x,int y)char t,*p,*q; p=a+x; q=a+y; while(pq) t=*p; *p=*q; *q=t; p+;q-; int main() char dt13=GoodBookNice; int i=0,n=1; while(i8)invert(dt,i,i+5); cout第n+次計算:endl; for(int j=i;j=i+5;j+) coutdtj,; coutendl; i+=6;cout共執(zhí)行了i次計算。endl;return 0;第1次計算:o,B,d,o,o,G,第2次計算:e,c,i,N,k,o,共執(zhí)行了12次計算8、寫出如下程序的運行結(jié)果。char ch25=6934,8254; char *p2; int i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i0&pij=9;j+=2) s+=10*(pij-0);couts; /2209、寫出如下程序的運行結(jié)果。int sum(int p,int *w,int n)int i;int s=0,m=0;for(i=0;im) m=pi; *w=i; return s; int main() int aa33=2,4,8,7,5,3,2,6,9;int row3,col3=0,0,0;for(int i=0;i3;i+)rowi=sum(aai,col+i,3);coutrow(i)=rowiendl;for(i=1;i3;i+)cout第i行位置:coliendl;return 0;row(0)=14row(1)=15row(2)=17第1行位置:0第2行位置:210、寫出如下程序的運行結(jié)果。double fl(double x) return x+x;double f2(double(*f)(double x),int a) int x;double sum=0; for(x=a;x=a+1;x+)sum+=f(x) * f(x); return sum;int main() double sum;for(int i=1;i5;i+) sum=f2(fl,i); coutsumendl; 205210016411、以下程序運行后,輸出是 3 3 2 ,如果去掉A行的continue語句,則輸出 3 4 3 char *s=121; int k=0,a=0,b=0;do k+; if(k%2=0) a+=sk-0;continue; /A if(sk) b+=sk-0;a+=sk-0;while(sk);coutktatbn;四、程序填空題1、下面程序的功能是:主函數(shù)定義了一個整型數(shù)組data,從鍵盤上輸入一個數(shù)x,調(diào)用函數(shù)fsum()斷該數(shù)x是否在數(shù)組data中。如果x在數(shù)組中,則得到x在data中第一次出現(xiàn)時的下標值p,同時求出下標從0到P之間所有元素之和,函數(shù)返回x的下標值p;否則,x不在數(shù)組中,函數(shù)fsum()返回-1,主函數(shù)提示相應信息。主函數(shù)輸出計算結(jié)果。請完善程序。#include using namespace std;int fs(int *a,int n,int x,int &sum) sum=0; for(int i=0;in;i+) sum = sum + ai ; if(x=ai) return i;return-1;int main()int data=12,31,16,28,7,29,35,18,40;int x,s,index;coutx;index=fs( data, 9,x,s );if( index=-1 ) coutx不在數(shù)組中endl;else coutx是數(shù)組中下標為index的元素。; cout數(shù)組中前 index 項之和為:sendl;return 0;2、下面程序的功能是:從輸入的一行字符串中求出最長英文單詞長度及最長單詞個數(shù),并輸出長度和個數(shù),單詞之間只能用一個或多個空格隔開。如輸入字符串”I am a student”時,最長單詞的長度為7,個數(shù)為1。而輸入字符串”word body book try”時,最長單詞的長度為4,個數(shù)為3,即有三個單詞均為最長單詞。#includeint lenofLongest(char *s,int &num)int maxlen=0,curlen=0;num=0; for(; *s!=0 ;) while(*s= ) s+ ; /跳過空格 if(*s!=0) while(*s!= & *s) curlen+;s+; if(curlenmaxlen) m

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論