大一年級上冊C語言exam-未知年份-祖?zhèn)鰿語言試題-第11章指針習(xí)題_第1頁
大一年級上冊C語言exam-未知年份-祖?zhèn)鰿語言試題-第11章指針習(xí)題_第2頁
大一年級上冊C語言exam-未知年份-祖?zhèn)鰿語言試題-第11章指針習(xí)題_第3頁
大一年級上冊C語言exam-未知年份-祖?zhèn)鰿語言試題-第11章指針習(xí)題_第4頁
大一年級上冊C語言exam-未知年份-祖?zhèn)鰿語言試題-第11章指針習(xí)題_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

章節(jié)編號知識點(diǎn)重要性出題類型及數(shù)量

111指針基本概念、指針變重要選擇題(5道,必做);

量的定義與引用

112通過指管引用數(shù)組元重要選擇題(5道,必做);

素,重點(diǎn)指針的運(yùn)算

113通過指針引用多維數(shù)組了解選擇題(1道,必做);

114通過指針引用字符串重要選擇題(5道,必做)

115指針變量作為函數(shù)參數(shù)?般選擇題(2道,必做);

程序題(1道,必做)

116數(shù)組名作為函數(shù)參數(shù)重要選擇題(3道,必做)

程序題(3道,2道必做,1道選做)

117字符指針作為函數(shù)參數(shù)重要選擇題(3道,必做)

程序題(5道,3道必做,2道選做)

118指向函數(shù)的指針了解選擇題(1道,必做);

119返回指針值的函數(shù)了解選擇題(1道,必做);

1110指針數(shù)組一般選擇題(2道,必做);

程序題(1道,必做)

1111多重指針一般選擇題(2道,必做);

1112動態(tài)內(nèi)存分配,包括重要程序題(2道,1道必做,1道選做)

void指針類型

一、選擇題

指向變量的指針

L變量的指針,其含義是指該變量的.知識點(diǎn)8.1

a)值b)地址

c)名d)一個標(biāo)志

2.若有語句int"point,a=4;和point=&a;下面均代表地址的一組選項(xiàng)是_

知識點(diǎn)8.1

a)a,point,h)&*a,&a,*point

c)*&point,*point,&ad)&a,&*point,point

3.若有說明intm=5,n,*p;以下正確的程序段的是______?知識點(diǎn)8.1

a)p=&n;b)p=&n;

scanf("%d'\&p);scanf(”%d”,*p);

c)scanf(H%dH,&n);d)p=&n;

P=n;*p=m;

4.以下程序中調(diào)用scanf函數(shù)給變量a輸入數(shù)值的方法是錯誤的,其錯誤原因是

.知識點(diǎn)8.1

main()

(

int*p,*q,a,b;

p=&a;

printfflnputa:");

scanf("%d",*p);

a)*p表示的是指針變量p的地址

b)*p表示的是變量a的值,而不是變量a的地址

c)*p表示的是指針變量p的值

d)*p只能用來說明p是一個指針變量

5.己有變量定義和函數(shù)調(diào)用語句:inta=25;print_value(&a);下面函數(shù)的正確輸

出結(jié)果是_______.知識點(diǎn)8.1

voidprint_value(int*x)

{printf("%d\n”,++*x);}

a)23b)24c)25d)26

6.若有說明:long*p,a;則不能通過scanf語句正確給輸入項(xiàng)讀入數(shù)據(jù)的程序段是

知識點(diǎn)8.1

A)*p=&a;scanf(w%ld",p);

B)p=(long*)malloc(8);scanf("%ld",p);

C)scanf(M%ldn,p=&a);

D)scanf(',%ldH,&a);

7.有以下程序知識點(diǎn)8.1

#include<stdio.h>

main()

{intm=l,n=2,*p=&m,*q=&n,*r;

r=p;p=q;q=r;

printf(u%d,%d,%d,%d\n",m,n,*p,*q);

)

程序運(yùn)行后的輸出結(jié)果是

A)1,2,1,2B)1,2,2,1

C)2,1,2,1D)2,1,1,2

8.有以下程序知識點(diǎn)8.1

main()

{inta=l,b=3,c=5;

int*pl=&a,*p2=&b,*p=&c;

*p=*pl*(*p2);

printf("%d\nn,c);

)

執(zhí)行后的輸出結(jié)果是

A)1B)2C)3D)4

9.有以下程序知識點(diǎn)8.1

inta,k=4,m=4,*pl=&k,*p2=&m;

a=pl==&m;

printf(M%d\n",a);

程序運(yùn)行后的輸出結(jié)果是()

A)4B)1C)0D)運(yùn)行時出錯,無定值

intk=4,m=4,*pl=&k,*p2=&m,*p=NULL;

p=pl!=p2;

指向數(shù)組的指針

10.在16位編譯系統(tǒng)上,若有定義inta[]={10,20,30),*p=&a;,當(dāng)執(zhí)行p++;后,

下列說法錯誤的是()知識點(diǎn)8.2

A)p向高地址移了一個字節(jié)B)p向高地址移了一個存儲單元

C)p向高地址移了兩個字節(jié)D)p與a+1等價

1L有以下程序段知識點(diǎn)8.2

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;

b=p[5];

b中的值是()

A)5B)6C)8D)9

12.若有以下定義,則對a數(shù)組元素的正確引用是_________.知識點(diǎn)8.2

inta[5],*p=a;

a)*&a[5]b)a+2c)*(p+5)d)*(a+2)

13.若有以下定義,則p+5表示.知識點(diǎn)8.2

inta[10],*p=a;

a)元素a[5]的地址b)元素a[5]的值

c)元素a[6]的地址d)元素a[6]的值

14.設(shè)已有定義:inta[10]={15,12,7,31,47,20,16,28,13,19},"p;下列語句中正確的

是()知識點(diǎn)8?2

A)for(p=a;a<(p+10);a++);

B)for(p=a;p<(a+10);p++);

C)for(p=a,a=a+10;p<a;p++);

D)for(p=a;a<p+10;++a);

15.有以下程序段知識點(diǎn)8.2

#include<stdio.h>

intmain()

{intx[]={10,20,30);

int*px=x;

printf(M%dJ,++*px);printf(n%dJ,*px);

px=x;

printf(M%d,M,(*px)++);printf(,,%d,H,*px);

px=x;

printf(M%dJ,*px++);printf(n%d,M,*px);

px=x;

printf(M%d,M,*++px);printf(n%d\nM,*px);

return0;

)

程序運(yùn)行后的輸出結(jié)果是()

A)11,11,11,12,12,20,20,20B)20,10,11,10,11,10,11,10

C)11,11,11,12,12,13,20,20D)20,10,11,20,11,12,20,20

16.設(shè)有如下定義:知識點(diǎn)8.2

intarr[]={6,7,8,9,10};

int*ptr;

ptr=arr;

*(ptr+2)+=2;

printf(M%d,%<i\n,,,*ptr,*(ptr+2));

則程序段的輸出結(jié)果為

A)8,10B)6,8C)7,9D)6,10

17.若有定義:inta[曰2,4,6,8,10,12}日=用則*玲+1)的值是.*(a+5)的值是

.知識點(diǎn)8.2

18.若有以下說明和語句,intc⑷⑸,(*p)[5];p=c;能正確引用c數(shù)組元素的是

.知識點(diǎn)8.3

A)p+1B)*(p+3)C)*(p+1)+3D)*(p[01+2))

19.若有定義:int分⑵[3],則對分?jǐn)?shù)組的i行j列元素地址的正確引用為.

知識點(diǎn)8.3

a)*(a[i]+j)b)(a+i)c)*(a+j)d)a[i]+je)*(a+i)+j

20.若有以下定義:inta⑵[3]={2,4,6,8,10,12};則的值是.*(*(a+l)+0)

的值是.知識點(diǎn)8.3

/〃〃〃/〃/〃/〃〃〃/〃//〃//〃/〃/〃〃/〃/〃〃〃/////〃/〃〃〃〃/〃〃//////,7/〃〃//〃〃〃//〃///〃〃/〃〃〃//〃//〃〃〃/〃

指向字符串的指針

21.有以下定義

chara[10],*b=a;

不能給數(shù)組a輸入字符串的語句是()知識點(diǎn)&4

A)gets(a)B)gets(a[0])C)gets(&a[0]);D)gets(b);

22,下面程序段的運(yùn)行結(jié)果是.知識點(diǎn)8.4

char*s="abcdeu;

s4-=2;printf(,'%d,',s);

a)cdeb)字符七,c)字符e的地址d)無確定的輸出結(jié)果

23.以下程序段中,不能正確賦字符串(編譯時系統(tǒng)會提示錯誤)的是()知識

點(diǎn)8.4

A)chars[l0]="abcdefg';B)chart[]="abcdefg",*s=t;

C)chars[10];s="abcdefg";D)chars[10];strcpy(s,"abcdefg");

24.設(shè)已有定義:char*skhowareyou";下列程序段中正確的是()知識點(diǎn)8.4

A)chara[1,*p;strcpy(p=a+1,&st[4]);

B)chara[l1];strcpy(++a,st);

C)chara[l1];strcpy(a,st);

D)chara[],*p;strcpy(p=^raf1],st+2);

25.有以下程序知識點(diǎn)8.4

main()

(

charaU="programming",bU="languagc";

char*pl,*p2;

inti;

pl=a;p2=b;

for(i=0;i<7;i++)

if(*(p1+i)==*(p2+i))

printf(,'%c",*(pl+i));

I

輸出結(jié)果是()

A)gmB)rgC)orD)ga

26.設(shè)pl和p2是指向同一個字符串的指針變量,c為字符變量,則以下不能正

確執(zhí)行的賦值語句是_______.知火點(diǎn)8.4

a)c=*pl+*p2;b)p2=cc)pl=p2d)c=*pl*(*p2);

27.以下正確的程序段是________.知識點(diǎn)8.4

a)charstr[20];b)char*p;

scanf("%s”,&sir);scanf(H%s",p);

c)charstr[2()];d)charstr[2O],*p=str;

scanf(u%s",&str[2]);scanf(M%sn,p[21);

28.若有說明語句知混點(diǎn)8.4

chara[]="Itismine";

char*p="Itismine";

則以下不正確的敘述是_______.

a)a+l表示的是字符t的地址

b)p指向另外的字符串時,字符串的長度不受限制

c)p變量中存放的地址值可以改變

d)a中只能存放1()個字符

29.下面程序的運(yùn)行結(jié)果是______.知識點(diǎn)8.4

#include<stdio.h>

#include<string.h>

main()

{char*sl="AbDeG";

char*s2="AbdEgo:

sl+=2;s2+=2;

printf(',%d\n,,,strcmp(sl,s2));

)

a)正數(shù)b)負(fù)數(shù)c)零d)不確定的值

iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiir.iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiu

函數(shù)與指針

30.有以下程序知識點(diǎn)8.5

#defineN8

voidf(int*x,int*y)

(

intt;

t=*x;*x=*y;*y=t;

)…

intmain()

(

inta[N]={lA3A5,6,7,8),l,*p,*q;

P=a;

q=&a[N-l];

while(*p!=*q)

(

f(p,q);

P++;q-;

}

for(i=0;i<N;i++)

printf(M%d,H,a[i]);

return0;

)

程序運(yùn)行后的輸出結(jié)果是O

A)82,3,4,5,6,7,1,B)5,6,7,8,1,2,3,4,

C)1,2,3,4,5,6,7,8,D)8,7,6,5,43,2,1,

31.已定義以下函數(shù)知識點(diǎn)8.5

fun(int*p)

{return*p;}

該函數(shù)的返回值是

A)不確定的值B)形參p中存放的值

C)形參p所指存儲單元中的值D)形參p的地址值

32.有以下程序知識點(diǎn)8.6

intf(intb[][4])

{inti,j,s=O;

for(j=0;j<4;j++)

1=j;

if(i>2)i=3-j;

s+=b[i][j];

)

returns;

)

main()

{inta⑷⑷={{1,2,3,4},{0,245},{3,6,9,12},{321,0}};

printf("%d\n”,f(a));

)

執(zhí)行后的輸出結(jié)果是

A)12B)11C)18D)16

33.若有以下函數(shù)首部

intfun(doublex[10],int*n)

則下面針對此函數(shù)的函數(shù)聲明語句中正確的是知一只點(diǎn)8.6

A)intfun(doublex,int*n);B)intfun(double,int);

C)intfun(double*x,intn);D)intfun(double*,int[]);

34,有以下程序知識點(diǎn)8.6

voidsum(int*a)

{a[0]=a[l];}

main()

{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;

for(i=2;i>=0;i-)sum(&aa[i]);

printf("%d\nu,aa[0]);

)

執(zhí)行后的輸出結(jié)果是。

A)4B)3C)2D)1

35.下段代碼的運(yùn)行結(jié)具是:知識點(diǎn)8.7

intmain()

(

chara;

char*str=&a;

strcpy(str,"hello");

printf(str);

return0;

)

A)helloB)nullC)hD)發(fā)生異常

36.下段程序的運(yùn)行結(jié)縣是:知識點(diǎn)8.7

voidmain()

char*p,*q;

charstr[]="Hello,World\nu;

q=p=str;

P++;

print(q);

print(p);

)

voidprint(char*s)

(

printf(“%s”,s);

)

A)He

B)Hello,Worldello,World

QHcllo,WorldHello,World

D)ello,Worldell-World

37.有以下程序知識點(diǎn)8.7

voidfun(char*c,intd)

(

*C=*c+1;

d=d+l;

printf("%c,%c,",*c,d);

)

voidmain()

{

chara='A\b='a,;

fun(&b,a);

printf("%c,%c\n",a,b);

}

程序運(yùn)行后的輸出結(jié)果是______O

A)B,a,B,aB)a,B,a,BC)A,b,A,bD)b,B,A,b

llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllilllllllllllllllllllllllllllllllllllllllllllllll

38、下面選項(xiàng)屬于函數(shù)指針的是:知識點(diǎn)8.8

A^(int*)p(int,int)int*p(int,int)C、兩者都是D、兩者都不是

39、若有函數(shù)max(a,b),并且已使函數(shù)指針變量p指向函數(shù)max,當(dāng)調(diào)用該函數(shù)

時,正確的調(diào)用方法是.知識點(diǎn)8.8

A)(*p)max(a,b);B)*pmax(a,b);

C)(*p)(a,b);D)*p(a,b);

40、下面兒個選項(xiàng)中的代碼能通過編譯的是:知識點(diǎn)8.9

A)int*fun()

ints[3]={1,3,4};

returns;

)

intmain()

(

int*result;

result=fun();

for(inti=0;i<3;i++)

printf(H%d\nM,result[i]);

return0;

)

B)int&fun()

(

ints[3]={1,3,4);

returns;

)

intmain()

{

int*result;

result=fun();

for(inti=0;i<3;i++)

return0;

)

C)int*fun()

(

ints[3]={1,3,4);;

return&s;

)

intmain()

(

int*result;

result=fun();

for(inti=0;i<3;i++)

printf(H%d\nH,result[i]);

return0;

D)int&fun()

ints[3]={1,3,4);;

return&s;

)

intmain()

(

int*result;

result=fun();

for(inti=0;i<3;i++)

printf(n%d\n",result[i]);

return0;

}

41、下列選項(xiàng)中聲明了一個指針數(shù)組的是:知識點(diǎn)8.10

A)int*p[2];B)int(*p)[2];

C)typedcfint*intPtr;intPtrp[2];

D)A和B

E)A和C

F)B和C

42、下面代碼能通過編譯的是:知識點(diǎn)8.10

A)intmain()

(

inta[3]={1,2,3);

int*b[3]={&a[l],&a[2],&a[3]};

int**p=b;

return0;

)

B)intmain()

(

inta[3]={1,2,3);

int*b[3]={a[l],a[2],a[3]};

int**p=b;

return0;

)

C)intmain()

(

inta[3]={1,2,3);

int*b[3]={&a[l],&a[2],&a[3]};

int*p=b;

return0;

D)intmain。

(

inta[3]={1,2,3);

int*b[3]={&a[l],&a[2],&a[3]);

int*p=&b;

return0;

43,對于語句int*pa⑸;下列描述中正確的是______.知識點(diǎn)8.10

A)pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素

B)pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量

C)pa⑸表示某個元素的第5個元素的值

D)pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針

44、若有以下定義,且0/iV4,則不正確的賦值語句是______?知識點(diǎn)8.10

intb[4][6],*p,*q[4];

A)q[i]=b[i];B)p=b;

C)p=b[i]D)q[i]=&b[0][0];

45、若要對a進(jìn)行++運(yùn)算,則a應(yīng)具有下面說明.知識點(diǎn)8.10

A)inta[3][2J;B)char*a[]={“12",“ab"};

C)floata[3];D)intb[10],*a=b;

46、若有以下說明語句:知識點(diǎn)8.11

char*language[]={“FORTRAN”JBASICVPASCAL”JJAVA"JC"};

char**q;

q=language+2;

則語句printf("%o\n”,*q)輸出的是______.

A)language⑵元素的地址;

B)字符備PASCAL

C)language⑵元素的值,它是字符串PASCAL的首地址

D)格式說明不正確,無法得到確定的輸出

47、若有以下程序:知識點(diǎn)8.11

voidmain()

(

char*a[3]={T',"love”,“China”};

char**ptr=a;

printf("%c%s",*(*(a+1)+1),*(ptr+1));

I

這段程序的輸出是()

A)I1

B)oo

C)olove

D)Ilove

參考答案

l.B2.D3.D4.B5.D6.A7.B8.C9.C10.A

II.DI2.D13.AI4.BI5.AI6.D17.(4,I2)18.D19.D20.(8,8)

21.B22.C23.C24.A/C?25D26.B27.C28.D29.B30.D

31.C32.D33.D34.A35.D36.B37.D38.D39.C40.A

41.E42.A43.D44.B45.C/D46.C47.C

二、程序題

題目要求:設(shè)計(jì)函數(shù)實(shí)現(xiàn)功能,利用指針傳遞參數(shù),主函數(shù)測試子函數(shù)功能。

1、用指針方法實(shí)現(xiàn)數(shù)組的轉(zhuǎn)置,完成如下函數(shù)的設(shè)計(jì)

voidinvertl(int*a,intlen);〃一維數(shù)組的翻轉(zhuǎn)

voidinvert!(int(*a)[N]);〃將N*N的矩陣以對角線為軸翻轉(zhuǎn)

2、尋找n個元素的整型數(shù)組中最大元素的位置

int*max(int*a,intn);〃返回最大元素的地址

3、用指針方法查找數(shù)組中是否存在值為key的元素,并刪除數(shù)組中的指定元素,

設(shè)計(jì)如下函數(shù)實(shí)現(xiàn)其功能:

/*函數(shù)功能:查找數(shù)組a中是否存在值為key的元素

參數(shù)說明:數(shù)組首地址a,數(shù)組長度n,待查找元素key

返回值:若查找成功則返回值為第一個key值元素下標(biāo),否則返回一1

*/

intfind(int*a,intn,intkey);

/*函數(shù)功能:刪除數(shù)組a中下標(biāo)為k的元素

參數(shù)說明:數(shù)組首地址a,數(shù)組長度n,待刪除元素下標(biāo)k

返回值:若成功刪除a[k]則返回1,若k>=n不能刪除則返回0

*/

intdclctc(int*a,intn,intk);//長度為n

思考:若數(shù)組中存在重復(fù)的元素,即要查找的key值有多個,如何設(shè)計(jì)函數(shù)?

4、n個學(xué)生參加期末考試,

溫馨提示

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

最新文檔

評論

0/150

提交評論