1、a)23b)24 c)25d)266.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是A) *p=&a;%ld,p);B) p=(long *)malloc(8);C) scanf(,p=&a);D) scanf(,&7.有以下程序#includeint m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(%d,%d,%d,%dn,m,n,*p,*q);程序运行后的输出结果是A)1,2,1,2 B)1,2,2,1C)2,1,2,1 D)2,1,1,28.有以下程序 int a=1, b=3, c=5;int *p1=&a, *
2、p2=&b, *p=&c;*p =*p1*(*p2);%dn,c);执行后的输出结果是A)1 B)2 C)3 D)49.int a,k=4,m=4,*p1=&k,*p2=&m;a=p1=&,a);程序运行后的输出结果是()A)4 B)1 C)0 D)运行时出错,无定值10.在16位编译系统上,若有定义int a=10,20,30, *p=&,当执行p+;后,下列说法错误的是()A)p向高地址移了一个字节 B)p向高地址移了一个存储单元C)p向高地址移了两个字节 D)p与a+1等价11.有以下程序段int a10=1,2,3,4,5,6,7,8,9,10,*p=&a3,b;b=p5;b中的值是(
3、)A)5 B)6 C)8 D)912.若有以下定义,则对a数组元素的正确引用是_.int a5,*p=a;a)*&a5 b)a+2 c)*(p+5) d)*(a+2)13.若有以下定义,则p+5表示_.a10,*p=a;a)元素a5的地址b)元素a5的值c)元素a6的地址d)元素a6的值14.设已有定义: int a10=15,12,7,31,47,20,16,28,13,19,*p; 下列语句中正确的是()A) for(p=a;a(p+10);a+);B) for(p=a;p(a+10);p+);C) for(p=a,a=a+10;D) for(p=a;p+10; +a);15.有以下程序段
4、#include int main()int x = 10, 20, 30;int *px = x;%d, +*px);, *px);px = x;, (*px)+);, *px+);, *+px);return 0;程序运行后的输出结果是( )A)11,11,11,12,12,20,20,20 B)20,10,11,10,11,10,11,10C)11,11,11,12,12,13,20,20 D)20,10,11,20,11,12,20,2016.设有如下定义:int arr=6,7,8,9,10;int *ptr;ptr=arr;*(ptr+2)+=2;printf (%d,%dn,*p
5、tr,*(ptr+2);则程序段的输出结果为A)8,10 B)6,8 C)7,9 D)6,1017.若有定义:int a=2,4,6,8,10,12,*p=a;则*(p+1)的值是_. *(a+5)的值是_.18.若有以下说明和语句,intc45,(*p)5;p=c;能正确引用c数组元素的是_.A)p+1B)*(p+3)C)*(p+1)+3D)*(p0+2) 19若有定义:int a23,则对a数组的第i行j列元素地址的正确引用为_.a)*(ai+j) b)(a+i) c)*(a+j) d)ai+j20若有以下定义:int a23=2,4,6,8,10,12;则a10的值是_. *(*(a+1
6、)+0)的值是_.21.有以下定义char a10,*b=a;不能给数组a输入字符串的语句是()A)gets(a) B)gets(a0) C)gets(&a0);D)gets(b);22.下面程序段的运行结果是_.char *s=abcde;s+=2;,s);a)cde b)字符cc)字符的地址d)无确定的输出结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()A) char s10=abcdefg B) char t=,*s=t;C) char s10;s= D) char s10;strcpy(s,);24.设已有定义: char *st=how are you 下列程
7、序段中正确的是()A) char a11, *p;strcpy(p=a+1,&st4);B) char a11;strcpy(+a, st);C) char strcpy(a, st);D) char a, *p;strcpy(p=&a1,st+2);25.有以下程序char a=programming,b=languagechar *p1,*p2;int i;p1=a;p2=b;for(i=0;i7;i+)if(*(p1+i)=*(p2+i)%c,*(p1+i);输出结果是()A)gm B)rg C)or D)ga26设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行
8、的赋值语句是_.a)c=*p1+*p2;b)p2=c c)p1=p2 d)c=*p1*(*p2);27以下正确的程序段是_.a)char str20;b)char *p;%sstr);,p);c)char str20;d)char str20,*p=str;str2);,p2);28若有说明语句It is minechar *p=则以下不正确的叙述是_.a)a+1表示的是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符29下面程序的运行结果是_.#include char *s1=AbDeGchar *s2=AbdEgs1+=
9、2;s2+=2;,strcmp(s1,s2);a)正数b)负数c)零d)不确定的值30.有以下程序void f(int *x,int *y) int t; t=*x;*x=*y;*y=t; main() int a8=1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=&a7;while(*p!=*q)f(p,q);p+;q-;8;i+) printf(,ai);程序运行后的输出结果是_。A)8,2,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,4,3,2,1,31. 已定义以下函数fun (int*p)ret
10、urn*p;该函数的返回值是不确定的值形参p中存放的值C)形参p所指存储单元中的值形参p的地址值32.有以下程序int f(int b4) int i,j,s=0;for(j=0;j2) i=3-j;s+=bij;return s;main( ) int a44=1,2,3,4,0,2,4,5,3,6,9,12,3,2,1,0;,f(a) );12B)1118D)1633.若有以下函数首部fun(double x10, int *n)则下面针对此函数的函数声明语句中正确的是A)int fun(double x, int *n); B)int , int );C)int fun(double *
11、x, int n); D)int fun(double *, int *);34.有以下程序void sum(int *a) a0=a1;main( ) int aa10=1,2,3,4,5,6,7,8,9,10,i;for(i=2;i=0;i-) sum(&aai);,aa0);执行后的输出结果是()A)4 B)3 C)2 D)135.下段代码的运行结果是:char a;char *str=&strcpy(str,helloprintf(str);A)hello B)null C)h D)发生异常36.下段程序的运行结果是:void main()char *p,*q;char str=Hel
12、lo,Worldnq = p = str;print(q);print(p);void print(char *s)printf(“%s”,s);A)H e B)Hello,World ello,WorldC)Hello,World Hello,World D)ello,World ell,World37.有以下程序void fun(char *c,int d)*c=*c+1;d=d+1;%c,%c,*c,d);void char a=A,b=afun(&b,a);%c,%cn,a,b);A) B,a,B,a B) a,B,a,B C) A,b,A,b D) b,B,A,b38、下面选项属于函
13、数指针的是:A、(int*)p(int, int) B、int *p(int, int) C、两者都是D、两者都不是39、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是_.A)(*p)max(a,b);B)*pmax(a,b);C) (*p)(a,b);D) *p(a,b);40、下面几个选项中的代码能通过编译的是A)int* fun()int s3=1,3,4;int * result;result = fun();for(int i =0;3;,resulti);return 0;B)int& fun()C)int* fun()return
14、 &s;D)int&41、下列选项中声明了一个指针数组的是:A)int *p2;B)int (*p)2;C)typedef int* intPtr; intPtr p2;D)A和BE)A和CF)B和C42、下面代码能通过编译的是:A)int main()int a3=1,2,3;int *b3=&a1,&a2,&a3;int *p = b;B)int main()int *b3=a1,a2,a3;C)int main()int *p = b;D)int main()int *p = &b;43、对于语句int *pa5;下列描述中正确的是_.A) pa是一个指向数组的指针,所指向的数组是5个i
15、nt型元素B) pa是一个指向某数组中第5个元素的指针,该元素是int型变量C) pa 5表示某个元素的第5个元素的值D) pa是一个具有5个元素的指针数组,每个元素是一个int型指针44、若有以下定义,且0i4,则不正确的赋值语句是_.int b46, *p, *q4;A) qi = bi;B) p = b;C) p = bi D) qi = &b00;45、若要对a进行+运算,则a应具有下面说明_.A) int a32;B) char *a = “12”,”ab”;C) char (*a)3;D) int b10, *a = b;46、若有以下说明语句:char *language = “
16、FORTRAN”,”BASIC”,PASCAL”,JAVA”,”C”;char *q;q = language + 2;则语句printf(“%on”, *q) 输出的是_.A) language2元素的地址;B)字符串PASCALC) language2元素的值,它是字符串PASCAL的首地址D)格式说明不正确,无法得到确定的输出47、若有以下程序:char *a3 = I,loveChina;char *ptr = a;%c , *(*(a+1)+1), *(ptr+1) );这段程序的输出是()IlooC)oloveI love 题号答案1. B2. D3. 4. 5. 6. A7. 8. C9. 10. 11. 12. 13. 14. 15. 16. 17. 4,1218. 19. D20. 8,821. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. E42. 43. 44. B 45. 46. 47.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1