C語言習題集答案(指針)_第1頁
C語言習題集答案(指針)_第2頁
C語言習題集答案(指針)_第3頁
C語言習題集答案(指針)_第4頁
C語言習題集答案(指針)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第五章 指針習題一選擇題1. 若定義 int a=8,b,*p=&b; 則下面對賦值語句 p=&a; *p=a; 的正確解釋為【 】。A)兩個語句都是使p指向aB)p=&a;是使p指向a,而*p=a是將a的值賦予*pC)兩個語句都是將a的值賦予*pD)p=&a是將a的值賦予*p,而*p=a是使p指向a2. 若定義 int b=8,*p=&b; 則下面均表示b的地址的一組選項為【 】。A)*p, *&b B)*p, &*b C)p, *&b, &*p D)&*p, p, &b3. 若定義 int a,b,*p

2、1=&a,*p2=&b; 使p1指向b的賦值語句是【 】。A)*p1=&b; B) p1=&p2; C)p1=*&p2; D) p1=*&b;4. 若定義 int a,b,*p; 下述程序段中正確的是【 】。A)p=&a; scanf("%d",&p; B) scanf("%d",&a; *p=a;C)p=&a; scanf("%d",&b;*p=b; D) p=&a; scanf("%d",*p;5. 若有定義int

3、a=7,b=9,*p1,*p2;下列賦值語句中,正確的是【 】。A)p2=&a;p1=&b;*&a=*p1; B) p1=&a;p2=*&p1;a=&*p2;C)p1=&b;p2=&p1;*p1=*p2; D) p2=*&a;p1=*&b;6. 執(zhí)行下面程序段后,c的值是【 】。int a,b,c,*p;a=2;b=10;p=&a;c=a+b+*p;A)12 B)14 C) 22 D) 247. 若定義 int i,*p; 使p指向i的賦值語句是【 】。A) p=&i; B) *p=&i;

4、C) *p=i; D) p=*&i;8. 若定義int i=100,*p=&i;設為i分配的內存地址為200201,則【 】。A)p為201 B) *p為100 C) *p為200 D) p為1009. 若有定義float a,b,*p;下述程序段中正確的是【 】。A) p=&b;scanf("%f",&a;*p=&a; B) a=10;*p=a;printf("%f",*p;C) scanf("%f",&b;*p=b; D) p=&a;*p=9;printf("%f&

5、quot;,*&a;10. 下面程序是實現(xiàn)兩個整數(shù)a和b交換的,請將程序填完整。# include main( int a,b;int *pa,*pb , p;pa=&a;pb=&b;scanf("%d%d",pa,pb;p=*pa;*pa=*pb;*pb=【 】;printf("a=%d,b=%dn",*pa,*pb;A) pa B) pb C) *pa D) p11. 若定義 int b7,*p=b; 則p+3表示【 】。A) 元素b3的值 B) 元素b4的地址C) 元素b4的值 D) 元素b3的地址12. 下列程序的輸出值為

6、【 】。# include main(int a= 1,3,5,7,9,d=1,*p=a;p+=3;d+=*p;printf("%dn", d;A) 10 B) 8 C) 6 D) 713. 下列操作中,正確的是 【 】。A) char s7; int *p=s=580; B) char s6; int *p,*p2=s;*p=*p2;C) int a7,*p; p=a; D) int a6,*p; p=&a;14. 若有定義int a=1,2,3,4, *p=a, i=2;,則*(p+i的值是【 】。A) 1 B) 2 C) 3 D) 415. 有下面的程序段,i

7、nt a=9,8,7,6,5,4,3,2,1,0,*p=a,i;其中i=3,則對a中元素引用錯誤的是【 】。A) a10 B) p9 C) *(&ai D) *(&pi16. 下面的程序運行后, 輸出結果是【 】。# include main(int a5= 1,2,3,4,5, *p=a;p+=3;*p=*p+3;printf("%dn",a3;A) 3 B) 7 C) 4 D) 617. 下面的程序運行后, 如果第一個printf語句輸出100, 則第二個printf語句輸出為【 】。# include main( long int a= 1,2,3,4

8、,5,6,7, *p;p=&a3;printf("%p",a;printf("%p",p;A) 106 B) 103 C) 112 D) 10C18. 下面的程序運行后, 輸出為【 】。# include main( long int a= 1,2,3,4,5,6,7, *p;p=&a2;printf("%d", *p;A) 2 B) 4 C) 3 D) 119. 運行下面程序段的輸出結果是【 】。# include main(int a10= 2,4,6,8,10;int y=0,x,*p;p=&a1;for

9、(x=0; x<3; x+y+=*(p+x;printf("%dn",y;A) 20 B) 24 C) 12 D) 1820 若定義 int a7,*p1=a,*p2=p1; 則對數(shù)組元素a3的正確引用是【 】。A) *(p2+3 B) *(p1+4 C) p1+3 D) *(&a0+421. 若定義 int b8,*p=b; 則對數(shù)組元素b4地址的非法引用為【 】。A) p+4 B) &b+4 C) &b0+4 D) b+422. 以下程序的輸出結果是【 】 。# include main(int a= 1,2,3,4,5,6,*p;p=a;

10、*(p+4+=2;printf("%d,%dn",*p,*(p+4;A) 1,6 B) 4,4 C) 4,5 D) 1,723. 下列程序運行輸出的值為【 】。# include main( int a= 1,3,5,7,9,b= 10,8,6,4,2,c,*p=a,*q=b;p+=2;q+=4;c=(*p+/(*q+4;printf("%dn", c;A) 6 B) 5 C) 7 D) 不確定值24. 若有說明 int i=2,j=3,a54=1,2,3,4,5,6,7,8,*p=a0;則對數(shù)組元素aij之地址的正確引用為【 】。A) *(p+i+j

11、B) *(*(a+i+j C) pi+j D) p+4*i+j25. 若有說明 int i=2,j=3,a34=1,2,3,4,5,6,7,8,9,*p=a0;則對數(shù)組元素aij之值的正確引用為【 】。A) *ai+j B) *(p+i+j C) (pi+j D) *(p+i*4+j26. 若有說明 int i=2,j=3,a54=1,2,3,4,5,6,7,8,9,*p=a0; 則pi*j的值為【 】 。A) 0 B) 6 C) 7 D) 527. 若有說明 int i=2,j=3,a54=1,2,3,4,5,6,7,8,(*p4=a; 則對數(shù)組元素aij之地址的錯誤引用為【 】。A) p+

12、4*i+j B) *(a+i+j C) pi+j D) *(p+i+j28. 若有說明 int a34=1,2,3,4,5,6,7,8,9,(*p4=a;則對數(shù)組元素a23之值的正確引用為【 】。A) *(p+2+3 B) *(p2+3 C) *(p+2*4+3 D) (a+2329. 下面程序的運行結果是【 】。# include main(int a34= 1,3,5,7,9,11,13,15,17,19,21,23,(*p4;p=a;printf("%d",*(*(p+2+3;A)9 B) 15 C) 21 D) 2330. 若有int a34,(*p4=a;則對數(shù)組

13、元素aij(其中0<=i<=2,0<=j<=3)之值的正確引用為【 】。A) *(p+ij B) *pij C)pij D) pi+j31. 設數(shù)組a的起始地址為100H,則printf語句輸出為【 】。# include main(int a54= 1,2,3,4,5,6,7,8,9,10,11,12,13,14,14,16,17,(*p4;p=a;printf("%pn",*(p+3+3;A) 130 B) 160 C) 11E D) 13C32. 下面程序的運行結果是【 】。# include main( int a34= 1,3,5,7,9,

14、11,13,15,17,19,21,23;int i,j,k=0;int (*p4=a;for(i=0; i<3; i+for(j=0; j<2; j+k+=*(*(p+i+j;printf("%dn",k;A) 99 B) 60 C) 108 D) 6833. 若有int i, j, a54, *p5;for(i=0;i<5;i+ pi=ai;i=j=3;則對數(shù)組元素aij之值的正確引用為【 】。A) (*(p+ij B)*(*(p+ij C)*(p+i+j D)*pij34. 若有int i, j, a54, *p5;for(i=0;i<5;i+

15、 pi=ai;i=4; j=2;則對數(shù)組元素aij之地址的正確引用為【 】。A) *(p+i+j B) *pi+j C) pij D) pi+j35. 以下選項中正確的是【 】。A) int a54, b45,*p; p=a; b=p;B) float a54, (*p5, (*q4; p=a; q=a;C) double a54,*p5; p0=a0;D) int a54,(*p4; p=a00;36. 設 char str45; 所定義的數(shù)組在內存中的起始地址為50(十進制, 則數(shù)組元素str33的地址為十進制的【 】。A)62 B)86 C)63 D)6837. 若有說明:char *p

16、1, *p2, *p3, *p4,ch; 則下列選項中錯誤的是【 】。A) getchar(*p3; B) ch=getchar(;C) p2=&ch; scanf("%c",p2; D) p4=&ch; *p4=getchar(;38. 下列選項中含有錯誤的是【 】。A) char str10; str="string"B) char str1="string",str2="1234" strcpy(str1,str2;C) char *str ; str="string"D)

17、 char str7='s','t','r','i','n','g'39. 以下選項錯誤的是【 】。A) char *s; s="ab" B) char s10="ab"C) char *s="ab" D) char s10; s="ab"40. 若有char *c="China","America","Russia","England",&

18、quot;France" 則語句printf("%p",c3;的輸出為【 】。A)字符串 England B)格式說明不正確C)字符串 England 的首地址 D)字母E41. 下面各程序段中不能正確實現(xiàn)兩個字符串交換的是【 】。A)char p9="12345678",q9="abcdef",*t; t=p;p=q;q=t;B)char *p="12345678",*q=" abcdef ",*t; t=p;p=q;q=t;C)char p9=" 12345678&quo

19、t;,q9=" abcdef ",t; int i;for (i=0;i<9;i+ t=pi;pi=qi;qi=t;D)char p9=" 12345678",q9=" abcdef ",t9;strcpy(t,p;strcpy(p,q;strcpy(q,t;42. 運行下面的程序段,輸出結果是【 】。char s120="abcd", s220="efg", s320="hi"strcat(strcpy(s2,s3,s1;puts(s2;A) hiabcd B) hi

20、gabcd C) abcdhi D) abcdhig43. 若有 char str7; 要將鍵盤輸入的字符串"a pear"存入str, 應使用【 】。A) gets(str; B) scanf("%s",str;C) str="a pear" D) getchar(str;44. 運行下面的程序片段,將輸出【 】(已知'A'的ASCII碼是十進制的65)。char str ="ABCD" , *p=str ;printf ( "%d n" , *(p+4 ;A)68 B)0 C

21、)字符D的地址 D)不確定值45. 下列程序的運行結果是【 】。# include main(char ch210= "1234","5678",*p2;int i,j,s=0;for(i=0; i<2; i+pi=chi;for(i=0; i<2; i+s=10*s+pii-'0'printf("%dn", s;A) 12 B) 56 C) 16 D) 5246. 若已定義char c,*p;,下述各程序段中能使變量c從鍵盤獲取一個字符的是【】A) *p=c;scanf("%c",p;

22、 B) p=&c;scanf("%c",*p;C) p=&c;scanf("%c",p; D) p=*&c;scanf("%c",p;47. 若在定義語句int a,*p=&a;之后,接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的是【】。A) scanf("%d",a; B) scanf("%d",*p;C) scanf("%d",p; D) scanf("%d",&p;48. 若有如下說明和語句,則【】是對數(shù)組元素的錯誤

23、引用int a=1,2,3,4,5,6,7,8,9,0,*p,i;p=a; i=6;A) *(a+i B) *(&ai C) ap-a D) p+i49. 若有說明int a =1,2,3,4,5,6,7,8,9,10,*p=a,i; 則數(shù)組元素地址的正確表示是【】。A) &(a+1 B) *a+ C) &p D) &pi50. 下列各程序段中,對指針變量定義和使用正確的是【】A) char s6,*p=s; char *p1=*p; printf("%c",*p1;B) int a6,*p; p=&a;C) char s7;char

24、 *p=s=260;scanf("%c",p+2;D) int a7,*p; p=a;51. 若已定義int b5=3,4,7,9,*p2=b,*p1=p2;,則對數(shù)組元素b2的正確引用是【】A) &b0+2 B) *(p1+1 C) *(p1+2 D) *p2+252. 設有定義int a10=1,2,3,4,5, b10,*p;則下列語句正確的是【】A) p=a; B) b=a; C) a+; D) a=p;53. 以下選項中正確的是【】A) int a54,b34,*p; p=*a; b32=*(p+3*4+2;B) float a54,(*p4,(*q5;

25、p=a; q=p;C) double a54,*p5; p0=*a; p1=*(a+1; p2=&a20; p3=a3; p4=*a+128;D) int a54,(*p4; int (*q4; p=a; q=p;54. 若有說明 int a54;,則指向數(shù)組a的指針數(shù)組的正確定義方式為【】A) int (*p4; B) int *p4; C) int *p5; D) int (*p5;55. 下面程序的運行結果是【】。#include main( char s180="ABCD", s280="EFGH"char *ps1=s1,*ps2=s2

26、;while(*ps1ps1+;while(*ps1+=*ps2+;printf("%s: %sn",s1,s2;A) ABCD: EFGH B) EFGH: ABCDC) ABCDEF: ABCD D) ABCDEFGH: EFGH56. 設有定義char s20="Beijing", *p=s; 以下語句中描述正確的是【】A) 可以用*p表示s0 B) 可以用(*p+2,表示s2C) 可以用p表示s0 D) s和p都是指針變量二、讀程序寫結果1. #include main(int a24 =1, 2, 3, 4, 5, 6, 7, 8;int (*

27、pa4=a;printf("%d, %d", *(*(pa+1+2, pa13;2.#include main( int a= 1,3,5,7,9, b= 2,4,6,3,7, c, d=1, *p=a, *q=b;p+=3;q+=2;c=*p+;d+=*q;printf("%d,%d,%d,%dn", *p, *q, c, d;3. 若輸入字符串Personal Computer,下列程序的運行結果是:#include main(char str80,*p,ch='o'int count=0;gets(str;for(p=str; *p

28、!='0' p+if(*p=ch count+;printf("There are %d 'o' in %s.",count,str;4.#include main(int a= 1,2,3,4,5,6,*p;p=a+1;*(p+3+=2;printf("%d,%dn",*p,*(p+3;5. #include main(char a10="123",*p="china"p=a;printf("%s,%c",p,*(p+2;6. #include main(int

29、 a= 2,4,6,8,10;int x,*p;p=&a1;for(x=0; x<=3; x+printf("%d ",*(p+x;7. # include main(int x=3, y=5;int *p, *q, *t;p=&x; q=&q;t=p;p=q;q=t;printf("%d, %dn", x, y;8. #include #define N 10main(int aN, *p;int i;p=a;for(i=0; i if(i%2=0*p=i/2;else*p=3*i+1;p+;for(p=a; p prin

30、tf("%d ",*p;9. #include #define N 10main(int aNN;int *pN;int i,j;for(i=0; i pi=ai;for(i=0; i pi0=pii=1;for(j=1; j pij=pi-1j+pi-1j-1;i=3;for(j=0; j<=i; j+printf("%4d", pij;printf("n"10. #include #define N 80main(char sN="foot and tooth"char *p;char c1='o

31、', c2='e'p=s;while(*pif(*p=c1*p=c2;p+;p=s;printf("%sn", p;三、程序填空題1. 利用指針計算一維數(shù)組中的最大值。#include #define N 10main(int aN = 66, 88, 94, 65, 98, 72, 76, 93, 79, 86, max;int *pa, *pmax;pa=a;pmax=【1】;*pmax=【2】;while(pa if(*pmax<*pa*pmax=【3】;pa+;printf("Max is %dn", max;2.

32、利用指針計算一維數(shù)組中的平均值。#include #define N 20main(int aN = 66,88,94,65,98,72,76,93,79,86,77,87,63,100,83,70,64,62,96,84, ;double average;int *pa, sum;/* 計算平均值 */pa=a;【1】;while(pa sum=【2】;pa+;average=【3】;printf("Average = %.2lfn", average;3. 利用指針將字符串逆序。#include #define N 80main(char sN="This i

33、s an example."char *p, *q, t;printf("nbefore inverse : %sn", s;q=s;while(*q q+;【1】;【2】=s;while(p t=*p;【3】;*q=t;【4】;q-;printf("nafter inverse : %sn", s;四、編程題1. 利用指針將字符串中的大寫字母轉換成相應的小寫字母,同時將小寫字母轉換成大寫字母,其余字符不變。例如"Abc*Def#"將被轉換成"aBC*dEF#"。2. 利用指針統(tǒng)計一維整型數(shù)組中偶數(shù)的個數(shù)。第5章一、選擇題1. B 2. D 3. C 4. C 5. A 6. B 7. A 8. B 9. D 10. D11. D 12. B 13. C 14. C15. A 16. B 17. D 18. C

溫馨提示

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

評論

0/150

提交評論