指针160.docx
- 文档编号:24117434
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:28
- 大小:24.61KB
指针160.docx
《指针160.docx》由会员分享,可在线阅读,更多相关《指针160.docx(28页珍藏版)》请在冰豆网上搜索。
指针160
题目部分,(卷面共有60题,180.0分,各大题标有题量和总分)
一、单项选择题(60小题,共180.0分)
(3分)[1]以下程序的输出结果是
#include
#include
voidfun(char*w,intm)
{chars,*p1,*p2;
p1=w;p2=w+m-1;
while(p1 {s=*p1++;*p1=*p2--;*p2=s;} } main() {chara[]="ABCDEFG"; fun(a,strlen(a)); puts(a); } A、GEFDCBA B、AGADAGA C、AGAAGAG D、GAGGAGA (3分)[2]下列语句执行后的结果是 y=5;p=&y;x=*p++; A、x=5,y=5 B、x=5,y=6 C、x=6,y=5 D、x=6,y=6 (3分)[3]以下程序的输出结果是 point(char*pt); main() {charb[4]={‘a’,‘c’,‘s’,‘f’},*pt=b; point(pt); printf(“%c\n”,*pt); } point(char*p) {p+=3; } A、a B、c C、s D、f (3分)[4]在下列叙述中,正确的一条是 A、以下程序运行结果为Computerandc: main() {charstr[4]; str=“Computerandc”; printf(“%s\n”,str); } B、下面两种表示方式等价 (1)intfun(intx,inty) (2)intfun(x,y) intx,y; C、若输入1、2,以下程序的运行结果为12 main() {int*p,i,a[2]; p=a; for(i=0;i<2;i++)scanf(“%d”,p++); for(i=0;i<2;i++,p++)printf(“%d”,*p); } D、以下程序的运行结果为3 main() {int*p,a[5]={1,3,4,5,6}; p=a; printf(“%d”,*p++); } (3分)[5]以下程序的输出结果为 move(intarray[6],intn,intm) {int*p,array_end; array_end=*(array+n-1); for(p=array+n-1;p>array;p--) *p=*(p-1); *array=array_end; m--; if(m>0)move(array,n,m); } main() {staticintnumber[6]={1,2,3,4,5,6}; intm=4,j; move(number,6,m); for(j=0;j<5;j++) printf(“%d,”,number[i]); printf(“%d”,number[5]); } A、1,2,3,4,5,6 B、6,5,4,3,2,1 C、3,4,5,6,1,2 D、6,1,2,3,4,5 (3分)[6]以下程序的输出结果为 f(char*s) {char*p=s; while(*p! =‘\0’)p++; return(p-s); } main() {printf(“%d\n”,f(“12345678”));} A、12345678 B、7 C、1 D、8 (3分)[7]以下程序的输出结果为 #idefineFORMAT“%u,%u” main() {inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; printf(“\n”); printf(FORMAT,**a,*a[0]); printf(FORMAT,*(a[0]+1),*&a[0][1]); printf(FORMAT,a[1][0],*(*(a+1)+0)); } A、3,35,59,9 B、1,13,39,9 C、1,13,35,5 D、5,57,79,9 (3分)[8]以下程序的输出结果是 sub(int*s,inty) {staticintt=3; y=s[t];t--; } main() {inta[]={1,2,3,4},n; intx=4; for(n=0;n<4;n++) {sub(a,x);printf(“%d”,x);} printf(“\n”); } A、1234 B、3333 C、4321 D、4444 (3分)[9]在下列程序中,输出结果与其它程序不同的是 A、main() {inta[10]; inti; for(i=0;i<10;i++)scanf(“%d”,&a[i]); printf(“\n”); for(i=0;i<10;i++)printf(“%d”,a[i]); } B、main() {inta[10]; inti; for(i=0;i<10;i++)scanf(“%d”,&a[i]); printf(“\n”); for(i=0;i<10;i++)printf(“%d”,*(a+i)); } C、main() {inta[10]; inti,*p; for(i=0;i<10;i++)scanf(“%d”,&a[i]); printf(“\n”); for(p=a;p<(a+10);p++)printf(“%d”,*p); } D、main() {inta[10]; inti,*p; for(i=0;i<10;i++)scanf(“%d”,&a[i]); printf(“\n”); for(i=0;i<10;i++)printf(“%d”,*(p+i)); } (3分)[10]以下程序的输出结果是 sub(intx,inty,int*z) {*z=y-x+2;} main() {inta,b,c; sub(16,7,&a);sub(9,a,&b);sub(a,b,&C、; printf(“%d,%d,%d\n”,a,b,C、; } A、–7,-14,-5 B、–7,-16,-9 C、–7,-12,-9 D、–9,-14,-5 (3分)[11]在下列语句中,其含义为“p为带回一个指针的函数,该指针指向整型数据”的定义语句是 A、int*p(); B、int**p; C、int(*p)(); D、int*p; (3分)[12]变量p为指针变量,若p=&a,下列说法不正确的是 A、&*p==&a B、*&a==a C、(*p)++==a++ D、*(p++)==a++ (3分)[13]在下列叙述中,正确的一条是 A、语句int*pt中的*pt是指针变量名 B、语句int*p=a;等价于int*p;p=&a[0]; C、运算符*和&都是取变量地址的运算符 D、已知指针变量p指向变量a,则&a和*p值相同,都是变量a的值 (3分)[14]以下程序段给数组所有的元素输入数据,则以下正确答案为 main() {inta[10],i=0; while(i<10)scanf(“%d”,__________); … } A、a+(i++) B、&a[i+1] C、a+i D、&a[++i] (3分)[15]下面函数的功能是 sss(char*s,char*t) {while((*s)&&(*t)&&(*t==*s))s++,t++; return(*s-*t); } A、求字符串的长度 B、比较两个字符串的大小 C、将字符串s复制到字符串t中 D、将字符串s连接到字符串t中 (3分)[16]以下程序的输出结果是 fun(int*s,intn1,intn2) {inti,j,t; i=n1;j=n2; while(i {t=*(s+i);*(s+i)=*(s+j);*(s+j)=t; i++;j--; } } main() {inta[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a; fun(p,0,3);fun(p,4,9);fun(p,0,9); for(i=0;i<10;i++)printf("%d",*(a+i)); printf(“\n”); } A、0987654321 B、4321098765 C、5678901234 D、0987651234 (3分)[17]下面各语句行中,能正确进行赋字符串操作的语句行是 A、charst[4][5]={“ABCDE”}; B、chars[5]={‘A’,‘B’,‘C’,‘D’,‘E’}; C、char*s;s=“ABCDE”; D、char*s;scanf(“%s”,s); (3分)[18]以下程序的输出结果是 #include main() {char*s1="AbCdEf",*s2="aB"; s1++;s2++; printf("%d\n",strcmp(s1,s2)); } A、正数 B、负数 C、零 D、不确定的值 (3分)[19]请读程序: #include charfun(char*C、 {if(*c<=‘Z’&&*c>=‘A’)*c-=‘A’-‘a’; return*c; } main() {chars[81],*p=s; gets(s); while(*p) {*p=fun(p);putchar(*p);p++;} putchar(‘\n’); } 若运行时从键盘上输入OPENTHEDOOR<回车>,则上面程序的输出结果为 A、oPENtHEdOOR B、openthedoor C、OPENTHEDOOR D、OpenTheDoor (3分)[20]在下面关于指针的说法中,错误的一条是 A、变量的指针就是变量的地址 B、可以将一个整型量或任何其他非地址类型的数据赋给一个指针变量 C、一个指针变量只能指向同一个类型的变量 D、指针变量中只能存放地址 (3分)[21]以下程序的输出结果为 voidmove(int*pointer) {inti,j,t; for(i=0;i<3;i++) for(j=i;j<3;j++) {t=*(pointer+3*i+j); *(pointer+3*i+j)=*(pointer+3*j+i); *(pointer+3*j+i)=t; } } main() {inta[3][3]={1,2,3,4,5,6,7,8,9},*p,i; p=&a[0][0]; move(p); for(i=0;i<3;i++) printf(“%d%d%d”,a[i][0],a[i][1],a[i][2]); } A、147258369 B、123456789 C、987654321 D、127485639 (3分)[22]以下程序的输出结果是 main() {char*alpha[5]={“a”,“bc”,“def”,“1”,“23”},**p; inti; p=alpha; for(i=0;i<3;i++,p++)printf(“%s”,*p); printf(“\t”); p=p-3; for(i=0;i<3;i++,p++)printf(“%c\t”,**p); } A、abcdefdef B、abcdefabd C、abcdef123 D、defabc123 (3分)[23]若输入10,以下程序的输出结果是 #defineMAX50 main() {inti,k,m,n,num[MAX],*p; scanf(“%d”,&n); p=num; for(i=0;i *(p+i)=i+1; i=0;k=0;m=0; while(m {if(*(p+i)! =0)k++; if(k==3) {*(p+i)=0;k=0;m++;} i++; if(i==n)i=0; } while(*p==0)p++; printf(“%d\n”,*p); } A、10 B、4 C、50 D、60 (3分)[24]阅读程序: main() {inta[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf("%x\n",p); printf("%x\n",p+9); } 该程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是 A、203 B、204 C、1a4 D、1a6 (3分)[25]以下程序的输出结果是 #include voidfun(int*s) {staticintj=0; do s[j]+=s[j+1]; while(++j<2); } main() {intk,a[10]={1,2,3,4,5}; for(k=1;k<3;k++)fun(a); for(k=0;k<5;k++)printf(“%d”,a[k]); } A、34756 B、23445 C、35745 D、12345 (3分)[26]若有说明: inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是 A、i=*p; B、*p=*&j; C、i=&j; D、i=**p; (3分)[27]若有以下说明和定义 fun(int*C、{…} main() {int(*a)()=fun,*b(),w[10],c; ┆ } 在必要的赋值之后,对fun函数的正确调用语句是 A、a=a(w); B、(*a)(&C、; C、b=*b(w); D、fun(b); (3分)[28]有以下函数: char*fun(char*p) {returnp;} 该函数的返回值是 A、无确切的值 B、形参p中存放的地址值 C、一个临时存储单元的地址 D、形参p自身的地址值 (3分)[29]对于基类型相同的两个指针变量之间,不能进行的运算是 A、< B、= C、+ D、- (3分)[30]假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入: PROGABCDEFGHIJKL<回车>,则输出结果为 main(intargc,char*argv[]) {while(--argc>0)printf("%s",argv[argc]); printf("\n"); } A、ABCDEFGH B、IJHL C、ABCDEFGHIJKL D、IJKLEFGHABCD (3分)[31]下面程序的输出结果是 main() {inta[]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf("%d\n",*p+9); } A、0 B、1 C、10 D、9 (3分)[32]下列程序的运行结果是 voidfun(int*a,int*b) {int*k; k=a;a=b;b=k; } main() {inta=3,b=6,*x=&a,*y=&b; fun(x,y); printf("%d%d",a,b); } A、63 B、36 C、编译出错 D、00 (3分)[33]下列程序的输出结果是 main() {chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf("%d",*--p); } A、非法 B、a[4]的地址 C、5 D、3 (3分)[34]以下定义语句中,错误的是 A、inta[]={1,2}; B、char*a[3]; C、chars[10]="test"; D、intn=5,a[n]; (3分)[35]若有以下定义和语句: char*s1=“12345”,*s2=“1234”; printf(“%d\n”,strlen(strcpy(s1,s2))); 则输出结果是 A、4 B、5 C、9 D、10 (3分)[36]以下程序的输出结果是 main() {inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1]; for(i=0;i<4;i+=2)printf("%d",p[i]); } A、52 B、51 C、53 D、97 (3分)[37]设已有定义: char*st="howareyou";下列程序段中正确的是 A、chara[11],*p;strcpy(p=a+1,&st[4]); B、chara[11];strcpy(++a,st); C、chara[11];strcpy(a,st); D、chara[],*p;strcpy(p=&a[1],st+2); (3分)[38]已知指针p的指向如下图所示,则执行语句*--p;后*p的值是 a[0]a[1]a[2]a[3]a[4] 10 20 30 40 50 A、30 B、20 C、19 D、29 (3分)[39]请选出正确的程序段 A、int*p; B、int*s,k; C、int*s,k; D、int*s,k; scanf("%d",p);*s=100;char*p,c;char*p,c; s=&k;s=&k; p=&c;p=&c; *p='a';s=p; *s=1; (3分)[40]下列程序执行后的输出结果是 main() {inta[3][3],*p,i; p=&a[0][0]; for(i=0;i<9;i++)p[i]=i+1; printf("%d\n",a[1][2]); } A、3 B、6 C、9 D、随机数 (3分)[41]下列程序执行后的输出结果是 voidfunc(int*a,intb[]) {b[0]=*a+6;} main() {inta,b[5]; a=0;b[0]=3; func(&a,b); printf("%d\n",b[0]); } A、6 B、3 C、8 D、9 (3分)[42]若已定义: inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是 A、a[p-a] B、*(&a[i]) C、p[i] D、*(*(a+i)) (3分)[43]若有以下定义和语句: doubler=99,*p=&r; *p=r; 则以下正确的叙述是 A、以上两处的*p含义相同,都说明给指针变量p赋值 B、在"doubler=99,*p=&r;"中,把r的地址赋给了p所指的存储单元 C、语句"*p=r;"把变量r的值赋给指针变量p D、语句"*p=r;"取变量r的值放回r中 (3分)[44]下列程序段的输出结果是 voidfun(int*x,int*y) {printf("%d%d",*x,*y);*x=3;*y=4;} main() {intx=1,y=2; fun(&y,&x); printf("%d%d",x,y); } A、2143 B、1212 C、1234 D、2112 (3分)[45]以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为 #include #include func(charstr[]) {intnum=0; while(*(str+num)! =’\0’)num++; return(num); } main() {charstr[10],*p=str; gets(p); printf(“%d\n”,func(p)); } A、8 B、7 C、6 D、5 (3分)[46]设有以下定义: inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*prt)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是 A、*((*prt+1)[2]) B、*(*(p+5)) C、(*prt+1)+2 D、*(*(a+1)+2) (3分)[47]下列程序的输出结果是 #include main() {char*p1,*p2,str[50]="xyz"; p1="abcd";p2="ABCD"; strcpy(str+2,strcat(p1+2,p2+1)); printf("%s",str); } A、xyabcAB B、abcABz C、ABabcz D、xycdBCD (3分)[48]下列程序的输出结果是 main() {inta[5]={2,4,6,8,10},*p,**k; p=a; k=&p; printf(“%d”,*(p++)); printf(“%d\n”,**k); } A、44 B、22 C、24 D、46 (3分)[49]执行以下程序后,y的值是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指针 160
![提示](https://static.bdocx.com/images/bang_tan.gif)