1.若有说明:inti,j=7,*p=&i;,则与i=j;等价的语句是(B)。(A)i=*p;(B)*p=*&j;(C)i=&j;(D)i=**p;2.若有以下说明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是(C)。(A)*p+6(B)*(p+6)(C)*p+=5(D)p+53.若有以下定义和语句:char*s1=12345,*s2=1234;printf(%d\n,strlen(strcpy(s1,s2)));则输出结果是(A)。(A)4(B)5(C)9(D)104.以下不能正确进行字符串赋初值的语句是(A)。(A)charstr[5]=good!;(B)charstr[]=good!;(C)char*str=good!;(D)charstr[5]={‘g',‘o',‘o',‘d'};5.若定义:inta=511,*b=&a;,则printf(%d\n,*b);的输出结果为(D)。(A)无确定值(B)a的地址(C)512(D)5116.下面程序的输出是(A)。(A)3(B)4(C)1(D)2main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf(%d\n,*(p+2));}7.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是(D)。(A)p=q;(B)*p=*q;(C)n=*q;(D)p=n;8.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是(B)。(A)*p+9(B)*(p+8)(C)*p+=9(D)p+89.若有以下定义:chars[20]=programming,*ps=s;则不能代表字符o的表达式是(A)。(A)ps+2(B)s[2](C)ps[2](D)*(ps+2)10.若有以下定义和语句:char*s1=12345,*s2=1234;printf(%d\n,strlen(strcpy(s1,s2)));则输出结果是(A)。(A)4(B)5(C)9(D)1011.若有以下定义和语句:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是(B)。(A)*p(B)a[10](C)*a(D)a[p-a]12.下面程序的输出是(C)。main(){char*s=121;intk=0,a=0,b=0;do{k++;if(k%2==0){a=a+s[k]-'0';continue;}b=b+s[k]-'0';a=a+s[k]-'0';}while(s[k+1]);printf(k=%da=%db=%d\n,k,a,b);(A)k=3a=2b=3(B)k=3a=3b=2(C)k=2a=3b=2(D)k=2a=2b=313.若有以下的定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为3的表达式是(A)。(A)p+=2,*(p++)(B)p+=2,*++p(C)p+=3,*p++(D)p+=2,++*p14.设有如下定义:intarr[]={6,7,8,9,10};int*ptr;则下列程序段的输出结果为(D)。ptr=arr;*(ptr+2)+=2;printf(%d,%d\n,*ptr,*(ptr+2));(A)8,10(B)6,8(C)7,9(D)6,1015.执行以下程序段后,m的值为(A)。inta[2][3]={{1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));(A)15(B)14(C)13(D)1216.有以下程序段chararr[]=ABCDE;char*ptr;for(ptr=arr;ptrarr+5;ptr++)printf(%s\n,ptr);输出结果是(D)。(A)ABCD(B)A(C)E(D)ABCDEBDBCDECCCDEDBDEEAE17.有以下程序main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;*q=*(p+5);printf(%d%d\n,*p,*q);}程序运行后的输出结果是(D)。(A)运行后报错(B)66C)611(D)51018.以下程序运行后,输出结果是(C)。main(){char*s=abcde;s+=2;printf(%ld\n,s);}(A)cde(B)字符c的ASCII码值(C)字符c的地址(D)出错19.以下程序运行后,输出结果是(D)。#includestdio.hss(char*s){char*p=s;while(*p)p++;return(p-s);}main(){char*a=abded;inti;i=ss(a);printf(%d\n,i);}(A)8(B)7(C)6(D)520.有以下程序main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf(%d,%d,%d,%d\n,*p,*q,a,b);}程序运行后的输出结果是(C)。(A)8,7,8,7(B)7,8,7,8(C)8,7,7,8(D)7,8,8,721.以下程序运行后,如果从键盘上输入:book回车book空格回车则输出的结果是(B)。#includestdio.hmain(){chara1[80],a2[80],*s1=a1,*s2=a2;gets(s1);gets(s2);if(!strcmp(s1,s2))printf(*);elseprintf(#);printf(%d/n,strlen(strcat(s1,s2)));}(A)*8(B)#9(C)#6(D)*922.以下程序的运行结果是(无)。(A)运行后报错(B)66(C)612(D)55#includestdio.hmain(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12};int*p=a+5,*q=NULL;*q=*(p+5);printf(%d%d\n,*p,*q);}23.若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是(C)。(A)p+1(B)a+1(C)a++(D)++p24.下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是(D)。(A)pa(B)*pa[0](C)*p*a[0](D)*p[0]*a[0]main(){inta[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;for(i=0;i10;i++,p++)if(________)*a=*p;printf(%d,*a);}25.以下程序的输出结果是(C)。(A)123456780(B)123456780(C)12345678(D)147main(){charch[3][4]={123,456,78},*p[3];inti;for(i=0;i3;i++)p[i]=ch[i];for(i=0;i3;i++)printf(%s,p[i]);}26.以下程序的输出结果是(D)。(A)AfghdEFG(B)Abfhd(C)Afghd(D)Afgd#includestring.hmain(){char*p1,*p2,str[50]=ABCDEFG;p1=abcd;p2=efgh;strcpy(str+1,p2+1);strcpy(str+3,p1+3);printf(%s,str);}27.若有以下定义和语句:doubler=99,*p=&r;*p=r;则以下正确的叙述是(D)。(A)以下两处的*p含义相同,都说明给指针变量p赋值(B)在doubler=99,*p=&r;中,把r的地址赋值给了p所指的存储单元(C)语句*p=r;把变量r的值赋给指针变量p(D)语句*p=r;取变量r的值放回p中28.下列程序执行后的输出结果是(小数点后只写一位)(A)。(A)666.06.0(B)666.76.7(C)666.06.7(D)666.76.0main(){doubled;floatf;longl;inti;i=f=l=d=20/3;printf(%d%ld%f%f\n,i,l,f,d);}29.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是(D)。(A)a[p-a](B)*(&a[i])(C)p[i](D)a[10]30.下列程序执行后的输出结果是(B)。(A)3(B)6(C)9(D)随机数main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i9;i++)p[i]=i+1;printf(%d\n,a[1][2]);}31.下列程序的输出结果是(B)。(A)4(B)6(C)8(D)10intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&a);printf(%d\n,res);}32.有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为(B)。(A)12(B)11(C)10(D)编译出错33.对于基类型相同的两个指针变量之间,不能进行的运算是(C)。(A)(B)=(C)+(D)-34.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是(B)。(A)*p+9(B)*(p+8)(C)*p+=9(D)p+835.有如下程序main(){intn[5]={0,0,0},i,k=2;for(i=0;i;printf(“%d\n”,n[k]);)该程序的输出结果是(D)。(A)不确定的值(B)2(C)1(D)036.有以下程序point(char*p){p+=3;}main(){charb[4]={'a','b','c','d'},*p=b;point(p);printf(%c\n,*p);}程序运行后的输出结果是(A)。(A)a(B)b(C)c(D)d37.若有说明:inti,j=2,*p=&i;,则能完成i=j;赋值功能的语句是(B)。(A)i=*p;(B)p*=*&j;(C)i=&j;(D)i=**p;38.以下定义语句中,错误的是(D)。(A)inta[]={1,2};(B)char*a[3];(C)chars[10]=test;(D)intn=5,a[n];39.以下选项中,不能正确赋值的是(A)。(A)chars1[10];s1=Ctest;(B)chars2[]={'C','t','e','s','t'};(C)chars3[20]=Ctest;(D)char*s4=Ctest\n;40.以下程序调用findmax函数返回数组中的最大值findmax(int*a,intn){int*p,*s;for(p=a,s=a;p-an;p++)if()s=p;return(*s);}main(){intx[5]={12,21,13,6,18};printf(%d\n,findmax(x,5));}在下划线处应填入的是(B)。(A)ps(B)*p*s(C)a[p]a[s](D)p-ap-s41.若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是(A)。(A)scanf(%d%d%d,&a,&b,d);(B)scanf(%d%d%d,&a,&b,&d);(C)scanf(%d%d%d,a,b,d);(D)scanf(%d%d%d,a,b,*d);42.有以下程序main(){chars[]=159,*p;p=s;printf(%c,*p++);printf(%c,*p++);}程序运行后的输出结果是(A)。(A)15(B)16(C)1