C语言第十章指针部分复习题.docx
- 文档编号:12226909
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:11
- 大小:19.02KB
C语言第十章指针部分复习题.docx
《C语言第十章指针部分复习题.docx》由会员分享,可在线阅读,更多相关《C语言第十章指针部分复习题.docx(11页珍藏版)》请在冰豆网上搜索。
C语言第十章指针部分复习题
指针复习题
一.选择题
1.变量的指针,其含义是指该变量的()。
A)值B)地址C)名D)一个标志
2.已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。
A)k=*ptr1+*ptr2B)ptr2=k
C)ptr1=ptr2D)k=*ptr1*(*ptr2)
3.若有说明:
int*p,m=5,n;以下程序段正确的()。
A)p=&n;B)p=&n;
scanf(“%d”,&p);scanf(“%d”,*p);
C)scanf(“%d”,&n);D)p=&n;
*p=n;*p=m;
4.若有说明:
int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是()。
A)p1=&m;p2=&p1;B)p1=&m;p2=&n;*p1=*p2;
C)p1=&m;p2=p1;D)p1=&m;*p1=*p2;
5.若有语句:
int*p,a=4;和p=&a;下面均代表地址的一组选项是()。
A)a,p,*&aB)&*a,&a,*p
C)*&p,*p,&aD)&a,&*p,p
6.下面判断正确的是()。
A)char*a=”china”;等价于char*a;*a=”china”;
B)charstr[10]={“china”};
等价于charstr[10];str[]={“china”;}
C)char*s=”china”;等价于char*s;s=”china”;
D)charc[4]=”abc”,d[4]=”abc”;
等价于charc[4]=d[4]=”abc”;
7.下面程序段中,for循环的执行次数是()。
char*s=”\ta\018bc”;
for(;*s!
=’\0’;s++)printf(“*”);
A)9B)7C)6D)5
8.下面能正确进行字符串赋值操作的是()。
A)chars[5]={“ABCDE”};
B)chars[5]={‘A’,’B’,’C’,’D’,’E’};
C)char*s;s=”ABCDE”;
D)char*s;scanf(“%s”,s);
9.下面程序段的运行结果是()。
char*s=”abcde”;
s+=2;printf(“%d”,s);
A)cdeB)字符’c’
C)字符’c’的地址D)不确定
10.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。
A)c=*p1+*p2B)p2=c
C)p1=p2D)c=*p1*(*p2)
11.设有程序段:
chars[]=”china”;char*p;p=s;则下面叙述正确的是()。
A)s和p完全相同
B)数组s中的内容和指针变量p中的内容相等
C)s数组长度和p所指向的字符串长度相等
D)*p与s[0]相等
12.以下与库函数strcpy(char*p1,char*p2)功能不相等的程序段是()。
A)strcpy1(char*p1,char*p2)
{while((*p1++=*p2++)!
=’\0’);}
B)strcpy2(char*p1,char*p2)
{while((*p1=*p2)!
=’\0’){p1++;p2++;}}
C)strcpy3(char*p1,char*p2)
{while(*p1++=*p2++);}
D)strcpy4(char*p1,char*p2)
{while(*p2)*p1++=*p2++;}
13.下面程序段的运行结果是()。
chara[]=”language”,*p;
p=a;
while(*p!
=’u’){printf(“%c”,*p-32);p++;}
A)LANGUAGEB)language
C)LANGD)langUAGE
14.若有语句:
chars1[]=”string”,s2[8],*s3,*s4=”string2”;则库函数strcpy的错误调用是()。
A)strcpy(s1,”string2”);B)strcpy(s4,”string1”);
C)strcpy(s3,”string1”);D)strcpy(s1,s2);
15.以下与库函数strcmp(char*s,char*t)功能相等的程序段是()。
A)strcmp1(char*s,char*t)
{for(;*s++=*t++;)
if(*s==’\0’)return0;
return(*s-*t);}
B)strcmp2(char*s,char*t)
{for(;*s++=*t++;)
if(!
*s)return0;
return(*s-*t);}
C)strcmp3(char*s,char*t)
{for(;*t==*s;)
{if(!
*t)return0;t++;s++;}
return(*s-*t);}
D)strcmp4(char*s,char*t)
{for(;*s==*t;s++,t++)
if(!
*s)return0;
return(*t-*s);}
16.以下说明不正确的是()。
A)chara[10]=”china”;B)chara[10],*p=a;p=”china”;
C)char*a;a=”china”;D)chara[10],*p;p=a=”china”;
17.设有说明语句:
chara[]=”Itismine”;char*p=”Itismine”;则以下不正确的叙述是()。
A)a+1表示的是字符t的地址
B)p指向另外的字符串时,字符串的长度不受限制
C)p变量中存放的地址值可以改变
D)a中只能存放10个字符
18.若已定义chars[10];则在下面表达式中不表示s[1]的地址是()。
A)s+1B)s++C)&s[0]+1D)&s[1]
19.若有定义:
inta[5],*p=a;则对a数组元素的正确引用是()。
A)*&a[5]B)a+2C)*(p+5)D)*(a+2)
20.若有以下定义语句:
doublea[5],*p=a;inti=0;对a数组元素错误的引用是:
()
a) a[i]b)a[5]c)p[4]d) p[i]
21.若有以下定义语句:
doublea[5],*p=a;则不能正确表示a数组元素地址的表达式是:
()
a) ++pb)&p[4]c)++ad) a
22.若有以下定义语句:
doublea[5],*p=a;inti=2;则不能正确表示a数组元素地址的表达式是:
()
a) *pb)&a[5]c)a+3d) p+i
23.若有定义:
inta[5],*p=a;则对a数组元素地址的正确引用是()。
A)p+5B)*a+1C)&a+1D)&a[0]
24.若有定义:
inta[2][3];则对a数组的第i行第j列元素值的正确引用是()。
A)*(*(a+i)+j)B)(a+i)[j]
C)*(a+i+j)D)*(a+i)+j
25.若有定义:
inta[2][3];则对a数组的第i行第j列元素地址的正确引用是()。
A)*(a[i]+j)B)(a+i)
C)*(a+j)D)a[i]+j
26.若有程序段:
inta[2][3],(*p)[3];p=a;则对a数组元素地址的正确引用是()。
A)*(p+2)B)p[2]
C)p[1]+1D)(p+1)+2
27.若有程序段:
inta[2][3],(*p)[3];p=a;则对a数组元素的正确引用是()。
A)(p+1)[0]B)*(*(p+2)+1)
C)*(p[1]+1)D)p[1]+2
28.若有定义:
inta[5];则a数组中首元素的地址可以表示为()。
A)&aB)a+1C)aD)&a[1]
29.若有定义:
int(*p)[4];则标识符p()。
A)是一个指向整型变量的指针
B)是一个指针数组名
C)是一个指针,它指向一个含有四个整型元素的一维数组
D)定义不合法
30.以下与int*q[5];等价的定义语句是()。
A)intq[5]B)int*q
C)int*(q[5])D)int(*q)[5]
31.以下正确的说明语句是()。
A)int*b[]={1,3,5,7,9};
B)inta[5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};
C)inta[]={1,3,5,7,9};int*num[5]={a[0],a[1],a[2],a[3],a[4]};
D)inta[3][4],(*num)[4];num[1]=&a[1][3];
32.若有定义:
intb[4][6],*p,*q[4];且0≤i<4,则不正确的赋值语句是()。
A)q[i]=b[i];B)p=b;C)p=b[i];D)q[i]=&b[0][0]
33.以下正确的定义语句和赋值语句是()。
A)intb[3][5],(*p)[3],(*q)[5];p=b;q=b;
B)floatb[3][5],(*p)[3];p[0]=b[0];p[2]=*b+4;
C)doubleb[3][5],s[5][3],*q;q=b;s=q;
D)intb[10],*q;char*s;q=b;s=b;
34.若要对a进行自减运算,则a应有下面说明()。
A)intp[3];B)intk;
int*a=p;int*a=&k;
C)char*a[3]D)intb[10];
int*a=b+1;
35.以下选项中,对指针变量p的不正确操作是()。
A)inta[3],*p;B)inta[5],*p;
p=&a[0];p=a;
C)inta[5];D)inta[5]
int*p=a=100;int*p1,*p2=a;
*p1=*p2;
36.若有定义:
intx[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是()。
A)x[3]B)p1=x+3,*p1++
C)p1=x+2,*(p1++)D)p1=x+2,*++p1
37.下面程序段的输出是()。
inta[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k;
for(k=0;k<4;k++)q[k]=&a[k*3];
printf(“%d\n”,q[3][0]);
A)8B)16C)20D)输出不合法
38.若要对a进行自增运算,则a应具有下面说明()。
A)inta[3][2];B)char*a[]={“12”,”ab”};
C)char(*a)[3]D)intb[10],*a=b;
39.若有定义inta[4][6];则能正确表示a数组中任一元素a[i][j](i,j均在有效范围内)地址的表达式()。
A)&a[0][0]+6*i+jB)&a[0][0]+4*j+i
C)&a[0][0]+4*i+jD)&a[0][0]+6*j+I
40.下面程序的运行结果是()。
main()
{intx[5]={2,4,6,8,10},*p,**pp;
p=x,pp=&p;
printf(“%d”,*(p++));
printf(“%3d”,**pp);}
A)44B)24
C)22D)46
41.若有定义intx[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*p)[3]=x;则能够正确表示数组元素x[1][2]的表达式是()。
A)*((*p+1)[2])B)(*p+1)+2
C)*(*(p+5))D)*(*(p+1)+2)
42.若有说明:
char*language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则language[2]的值是()。
A)一个字符B)一个地址
C)一个字符串D)一个不定值
43.设有定义:
char*cc[2]={“1234”,”5678”};则正确的叙述是()。
A)cc数组的两个元素中各自存放了字符串”1234”和”5678”的首地址
B)cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
C)cc是指针变量,它指向含有两个数组元素的字符型一维数组
D)cc数组元素的值分别维”1234”和”5678”
44.若有以下程序:
#defineN10
voidfun(int*t,intn,intm)
{inti,j,a ;
i=n ;j=m ;
while(i>j){a=t[i] ;t[i]=t[j] ;t[j]=a ;}
}
main()
{inti,a[N]={1,2,3,4,5,6,7,8,9,1};
fun(a,3,6);
for(i=0;i } 程序执行后的输出结果是: () a)1236547891b)1265437891 c)1237654891d)1234567891 45.若有以下程序: #defineN10 voidfun(int*t,intn,intm) {inti,j,a ; i=n ;j=m ; while(i } main() {inti,a[N]={1,2,3,4,5,6,7,8,9,1}; fun(a,3,6); for(i=0;i } 程序执行后的输出结果是: () a)1236547891b)1265437891 c)1237654891d)1234876591 二.填空题 1.写出下面程序的运行结果________________。 intfunc(char*s,chara,intn) {intj;*s=a;j=n; while(*s returnj;} voidmain() {charc[6];inti; for(i=1;i<=5;i++)*(c+1)=’A’+i+1; printf(“%d\n”,fun(c,’E’,5));} 2.写出下面程序的运行结果_______________。 intfun(char*s) {char*p=s; while(*p)p++; return(p-s);} voidmain() {char*a=”abcdef”; printf(“%d\n”,fun(a));} 3.写出下面程序的运行结果_________________。 voidsub(char*a,intt1,intt2) {charch; while(t1 {ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch; t1++;t2--;} } voidmain() {chars[12];inti; for(i=0;i<12;i++)s[i]=’A’+i+32; sub(s,7,11); for(i=0;i<12;i++)printf(“%c”,s[i]); printf(“\n”);} 4.当运行以下程序时,写出输入6↙的程序运行结果_____。 voidsub(char*a,charb) {while(*(a++)! =’\0’); while(*(a-1) *(a--)=b;} voidmain() {chars[]=”97531”,c; c=getchar(); fun(s,c);puts(s);} 5.写出下面程序的运行结果______________。 voidmain() {char*a[]={“Pascal”,”CLanguage”,”dBase”,”Java”}; char(**p)[];intj; p=a+3; for(j=3;k>=0;j--) printf(“%s\n”,*(p--));}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第十 指针 部分 复习题
![提示](https://static.bdocx.com/images/bang_tan.gif)