指針練習題及答案_第1頁
指針練習題及答案_第2頁
指針練習題及答案_第3頁
指針練習題及答案_第4頁
指針練習題及答案_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第六章指針練習題及答案一、填空題1、定義int a=1,2,3,4,5,6,*p=a;語句printf("%d",(*+p)+);的輸出結果是( )。2、以下程序的執(zhí)行結果是( )。main() char s="abcdefg" char *p; p=s; printf("ch=%cn",*(p+5); 3、以下程序的執(zhí)行結果是( )。main() int a=1,2,3,4,5,6; for(p=&a5;p>=a;p-) printf("%d",*P); printf("n")

2、; 4、以下程序的執(zhí)行結果是( )。main() int a12=1,2,3,4,5,6,7,8,9,10,11,12,*p4,i;for(i=0;i<4;i+) pi=&ai*3;printf("%dn",p32);5、設包含如下程序的文件名為myprog.c,編譯后鍵入命令:myprog one two three,則執(zhí)行結果是( )。main(int argc,char *argv) int i; for(i=1;i<argc;i+) printf("%s%c",argvi,(i<argc-1)?":')

3、;6、下面程序的運行結果是( )char s80,*sp="HELLO!"sp=strcpy(s,sp); s0='h' puts(s);7、下面程序段的運行結果是( )char *s1="AbcdEf",*s2="aB"s1+; t=(strcmp(s1,s2)>0); printf("%dn",t);8、下面程序段的運行結果是( )char str="abc0def0ghi" char *p=str; printf("%s",p+5)9、若有以下定義

4、和語句: int a4=0,1,2,3,*p; p=&a1; 則+(*p)的值是( )。10、若有定義:int a23=2,4,6,8,10,12;則*(&a00+2*2+1)的值是( ),*(a1+2)的值( )。11、若有定義:int a=2,4,6,8,10,12,*p=a;則*(p+1)的值是( ),*(a+5)的值是( )。12、若有以下定義和語句: int a4=0,1,2,3,*p; p=&a2; 則*-p的值是()。13、若有以下定義和語句: int s23=0,(*p)3; p=s; 則(*(p+1)+2)的值是()。14、若有定義:int a23=2

5、,4,6,8,10,12; 則a10的值是( ),*(*(a+1)+0)的值是( )。15、若有定義:int a=2,4,6,8,10,12,14,16,18,20,22,24,*q3,k;則下面程序段的輸出是()。for(k=0;k<3;k+) qk=&ak*4; printf("%dn",q23);16、若有以下輸入:1,2<CR>(<CR>代表回車),則下面程序的運行結果是()。main()int a23=2,4,6,8,10,12 , (*p)3,i,j;p=a; scanf("%d,%d",&i,&

6、amp;j); printf("%dn",*(*(p+i)+j); )17、下面程序的運行結果是()。main() char *a="P","C","B","L", (* *p) ; int j;p=a+3;for(j=3;j>=0;j-) printf("%s",*(p-);18、以下程序的執(zhí)行結果是()。main() char *p1,*p2,str20="xyz" p1="abcd" p2="ABCD"s

7、trcpy(str+1,strcat(p1+1,P2+1); printf("%s",str); 19、若輸入的值分別是1 3 5,下面程序的運行結果是()main()int a=0,i,*p,sum; p=&a; for(i=0;i<=2;i+) scanf("%d",p); sum=s(p); printf("sum=%d,",sum); s(int *p)int sum=10; sum=sum+*p; return(sum); 20、下面程序段的運行結果是()char s20="abcd" ch

8、ar *sp=s; sp+; puts(strcat(sp,"ABCD");21、下面程序段的運行結果是()char a="12345",*p; int s=0;for(p=a;*p!='0'p+) s=10*s+*p-'0' printf("%dn",s);22、下面程序段的運行結果是()char a="123456789",*p; int i=0; p=a;while(*p) if(i%2=0) *p='*' p+;i+; puts(a);23、下面程序的運行結果

9、是()。main() char *str="Pascal","C language","Dbase","Cobol" char *p; int k;p=str;for(k=0;k<4;k+) printf("%s,",*(p+); 二、選擇題1、以下程序的運行結果是()void sub (int x,int y,int *z) *z=y-x;main() int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); print

10、f("%4d,%4d,%4dn",a,b,c);A) 5, 2, 3 B) -5, -12, -7C) -5, -12, -17 D) 5, -2, -72、執(zhí)行以下程序后,b的值為()main()int b,k=4,m=6,*p1=&k,*p2=&m; b=(-*p1)/(*p2)+7; printf("%dn",b); A)5 B)6 C)7 D)103、下面程序應能對兩個整型變量的值進行交換。以下正確的說法是()main()int a=10,b=20; printf("%d,%d",a,b); swap(&

11、;a,&b); printf("%d,%d",a,b); swap(int p,int q) int t; t=p;p=q;q=t;A)該程序完全正確B)該程序有錯,只要將語句swap(&a,&b);中的參數(shù)改為a,b即可C)該程序有錯,只要將swap()函數(shù)中的形參p和q以及t均定義為指針(執(zhí)行語句為變)即可D)以上說法都不正確4、設*p,i;以下正確的語句是()。A)*p=&i; B)i=p; C)i=*p; D)p=2*p+1;5、設char s10;int i=1;以下正確的表達式是()。A)i+2 B)*(s+i) C)*(&

12、;s+i) D)*(s+)+i)6、設有語句:int a10=0,1,2,3,4,5,6,7,8,9,*p=a;以下對a數(shù)組的元素值不正確的引用是()。A)ap-a B)*(&ai) C)pi D)*(a0+1)7、設有說明int(*ptr)M;其中ptr是()。A)M個指向整型變量的指針 B)指向M個整型變量的函數(shù)指針C)一個指向具有M個整型元素的一維數(shù)組的指針D)具有M個指針元素的一維指針數(shù)組,每一元素只能指向整型量8、如下程序的執(zhí)行結果是()。main() int i; char *s="an" for(i=0;si!='n'i+) print

13、f("%c",*(s+i); )a )a )a )a9、有四組對指針變量進行操作的語句,以下判斷正確的選項是()(1)int *p,*q;q=p; int a,*p,*q;*p=*q=&a;(2)int a,*p,*q;q=&a;p=*q; int a=20,*p;*p=a;(3)int a=b=0,*p;p=&a;b=*p; int a=20,*p,*q=&a;*p=*q;(4)int a=20,*p,*q=&a;p=q; int p,q;q=&p;A)(1)正確,其余錯 B)(1),(4)正確,其余錯C)(3)正確,其余錯

14、 D)以下結論都不正確10、以下程序中調(diào)用scanf函數(shù)給變量a輸入數(shù)值的方法是錯誤的,其錯誤原因是()main() int *p,*q,a,b; p=&a; scanf("%d",*p);. A)*p表示的是指針變量p的地址B)*p表示的是變量a的值,而不是變量a的地址C)*p表示的是指針變量p的值D)*p只能用來說明p是一個指針變量11、若有以下定義,則*(p+5)表示()。int a10,*p=a;A)元素a5的地址 B)元素a5的值 C)元素a6的地址 D)元素a6的值12、若有定義:int *p4;則標識符p()。A)是一個指向整型變量的指針 B)是一個指

15、針數(shù)組C)是一個指針,它指向一個含有四個整型元素的一維數(shù)組。D)說明不合法13、若有以下定義,且0<=i<6,則正確的賦值語句是()。int s46,t64,(*p)6;A)p=t; B)p=s; C)p=si; D)p=ti;14、若有定義:int a46;則能正確表示a數(shù)組中任一元素aij(此處0<=i<4,0<=j<6)地址的表達式是()A)&a00+6*i+j B)&a00+4*j+I C)&a00+4*i+j D)&a00+6*j+i15、以下選項中,對指針變量p的正確操作是()A)int a5,*p;p=&

16、a; B)int a5,*p;p=a;C)int a5;int *p=a=1000 D)int a5;int *p1,*p2=a;*p1=*p2;16、若有以下定義,且0<=i<5,則對數(shù)組a元素的非法引用是()int a5,*p=a;A)ai B)*(a+i) C)*(p+i) D)*(&a+i)17、設有以下定義:char *cc2="1234","5678" 則正確的敘述是()A)cc數(shù)組的兩個元素中各自存放了字符串"1234"和"5678"的首地址B)cc數(shù)組的兩個元素分別存放的是含有4

17、個字符的一維字符數(shù)組的首地址C)cc是指針變量,它指向含有兩個數(shù)組元素的字符型一維數(shù)組D)cc數(shù)組元素的值分別是"1234"和"5678"18、若有以下定義:int x43=1,2,3,4,5,6,7,8,9,10,11,12; int (*p)3=x;則能夠正確表示數(shù)組元素x12的表達式是()A)*(*p+1)2) B)(*p+1)+2 C)*(*(p+5) D)*(*(p+1)+2)19、以下正確的敘述是()A)C語言允許main函數(shù)帶形參,且形參個數(shù)和形參名均可由用戶指定。B)C語言允許main函數(shù)帶形參,形參名只能是argc和argv。C)當ma

18、in函數(shù)帶有形參時,傳給形參的值只能從命令行中得到。D)若有說明,main(int argc,char *argv),則形參argc的值必須大于1。20、main函數(shù)的正確說明形式是()A)main(int argc,char *argv)B)main(int abc,char *abv)C)main(int argc,char argv)D)main(int c,char *v)21、以下程序能找出數(shù)組x中的最大值和該值所在的元素下標,數(shù)組元素值從鍵盤輸入。main()int x10,*p1,*p2,k;for(k=0;k<10;k+) scanf("%d",x+k

19、);for(p1=x,p2=x;p1-x<10;p1+) if(*p1>*p2) p2=p1;printf("MAX=%d,INDEX=%dn", *p2,);A)p1-x B)p1C)p2-x D)x-p222、若有說明:char *language="FORTRAN","BASIC","PASCAL","JAVA","C"則表達式*language1>*language3比較的是()A)字符F和字符P B)字符串BASIC和字符串JAVAC)字符B和字符

20、J D)字符串FORTRAN和字符串PASCAL23、若有說明:char *language="FORTRAN","BASIC","PASCAL","JAVA","C"則language2的值是()A)一個字符 B)一個地址 C)一個字符串 D)一個不定值24、語句int(*ptr)();的含義是()A)ptr是指向一維數(shù)組的指針變量 B)ptr是指向int型數(shù)據(jù)的指針變量C)ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)D)ptr是一個函數(shù)名,該函數(shù)的返回值的指向int型數(shù)據(jù)的指針25、若

21、有函數(shù)max(a,b),并且已使函數(shù)指針變量p指向函數(shù)max,當調(diào)用該函數(shù)時,正確的調(diào)用方法是()A)(*p)max(a,b); B)*pmax(a,b); C)(*p)(a,b); D)*p(a,b);26、已有函數(shù)max(a,b),為了讓函數(shù)指針變量p指向函數(shù)max,正確的賦值方法是()A)p=max B)*p=max; C)p=max(a,b) D)*p=max(a,b)27、已有定義int(*p)();指針p可以()。A)代表函數(shù)的返回值 B)指向函數(shù)的入口地址C)表示函數(shù)的類型 D)表示函數(shù)返回值的類型28、若要對a進行+運算,則a應具有下面說明()A)int a32; B)char

22、 *a="12","ab" C)char (*a)3; D)int b10,*a=b;29、下面正確的程序段是()A)char str20; scanf("%s",&str); B)char *p; scanf("%s",p);C)char str20; scanf("%s",&str2); D)char str20,*p=str; scanf("%s",p2);30、下面程序段的運行結果是()char str="ABC",*p=str;

23、printf("%dn",*(p+3);A)67 B)0 C)字符'C'的地址 D)字符'C'31、下面程序段的運行結果是()char *p="abcdefgh" p+=3; printf("%dn",strlen(strcpy(p,"ABC");A)8 B)12 C)4 D)732、下面說明不正確的是()A)char a10="china" B)char 10,*p=a; p="china"C)char *a; a="china&q

24、uot; D)char a10,*p; p=a="china"33、若有說明語句char a="It is mine"char *p="It is mine"則以下不正確的敘述是()A)a+1表示的是字符t的地址B)p指向另外的字符串時,字符串的長度不受限制C)p變量中存放的地址值可以改變D)a中只能存放10個字符34、若已定義char s10;則在下面表達式中不表示s1的地址是()A)s+1 B)s+ C)&s0+1 D)&s135、下面程序段的運行結果是()char s6; strcpy(s,"abcd&

25、quot;); printf(""%s"n",s);A)"abcd" B)"abcd " C)"abcd" D)編譯出錯36、若有說明:char *language="FORTRAN","BASIC","PASCAL","JAVA","C"則以下不正確的敘述是()A)language2表示字符串"pascal"的首地址B)*language2的值是字母PC)language是一

26、個字符型指針數(shù)組,它包含5個元素,每個元素都是一個指向字符串變量的指針D)language是一個字符型指針數(shù)組,它包含5個元素,其初值分別是:"FORTRAN","BASIC","PASCAL","JAVA","C"37、設char s10,*p=s;以下不正確的表達是()A)p=s+5; B)s=p+s; C)s2=p4; D)*p=s0;38、設char *s;以下正確的表達式是()。A)s="computer" B)*s="computer" C)*

27、s="computer" D)*s='c'39、選擇i的正確結果()。int i; char *s="a045+045'b" for(i=0;*s+;i+);A)7 B)8 C)11 D)1240、如下程序的執(zhí)行結果是()。main() int i; char *s="ann35b" for(i=0;*s+;i+); printf("i=%dn",i);A)i=5 B)i=6 C)i=7 D)i=841、如下程序的執(zhí)行結果是()。main() int i; char *s="&qu

28、ot;" for(i=0;si!='0'i+); printf("%c",*(s+i);)" )" )""" )不正確42、如下程序的執(zhí)行結果是()。main() int i; char *s=""" for(i=0;si!='0'i+) printf("%c",*(s+i);)" )a" )"" )不正確43、如下執(zhí)行的程序結果是()。main()static int a =1,2,3,4,5

29、,6;int *p;p=a;*(p+3)+=2;printf("%d,%dn",*p,*(p+3);)1,3 )1,6 )3,6 )1,444、以下正確的說明語句是()A)int *b=1,3,5,7,9; B)int a2; int *num2=&a0,&a1;C)int a=1,2; int *num2=a0,a1;D)int a34,(*num)4; num1=&a13;45、若有以下定義,且0<=i<4,則不正確的賦值語句是()int b46,*p,*q4;A)qi=bi; B)p=b; C)p=bi; D)qi=&b00

30、;46、若有定義:int a=2,4,6,8,10,12,14,16,18,20,22,24,*q4,k;則下面程序段的輸出是()for(k=0;k<4;k+) qk=&ak*3; printf("%dn",q30);A) 8 B)16 C) 20 D)結果不確定47、若有以下定義,則數(shù)值不為3的表達式是()int x10=0,1,2,3,4,5,6,7,8,9,*p1;A)x3 B)p1=x+3,*p1+ C)p1=x+2,*(p1+)D)p1=x+2,*+p148、下面程序的運行結果是()main()int x5=2,4,6,8,10,*p,*pp;p=x

31、;pp=&p;printf("%d",*(p+);printf("%3dn",*pp);A)4 4 B)2 4 C)2 2 D)4 649、若有以下說明和語句:char *language="FORTRAN","BASIC","PASCAL","JAVA","C"char *q;q=language+2;則語句printf("%on",*q);A)輸出的是language2元素地址 B)輸出的是字符串PASCALC)輸出的是la

32、nguage2元素的值,它是字符串PASCAL的首地址D)格式說明不正確,無法得到確定的輸出50、下面程序段的運行結果是()char *format="%s,a=%d,b=%dn" int a=1,b=10; a+=b;printf(format,"a+=b",a,b);A)for,"a+=b",ab B)format,"a+=b" C)a+=b,a=11,b=10 D)以下結果都不對三、編程題1、有3個學生,每人考5門課,求每個學生的平均分和每門課的平均分數(shù)2、輸入一個字符串,內(nèi)有數(shù)字和非數(shù)字字符,如:a123x

33、456 1760?302ab567,將其中連續(xù)的數(shù)字作為一個整數(shù)依次存放到一數(shù)組a中,如123存放到a0中,456存放到a1中。3、求定積分:計算0,1之間函數(shù)1+x2、0,2之間函數(shù)1+x+x2+x3、0,3.5之間函數(shù)x/(1+x2)的定積分。附錄:答案一、 填空題1、2 2、f 3、654321 4、12 5、one:two:three 6、HELLO! 7、1 8、of 9、2 10、12 12 11、4 12 12、113、0 14、8 8 15、24 16、12 17、LBCP 18、xbcdBCD 23、Pascal,C language,Dbase,Cobol二、 選擇題15 BCCCB 610 DBCCB 1115 BCBCB 1620 DADCD 2125

溫馨提示

  • 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

提交評論