全国计算机等级考试二级C语言指针测试题.docx
- 文档编号:23304092
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:16
- 大小:18.71KB
全国计算机等级考试二级C语言指针测试题.docx
《全国计算机等级考试二级C语言指针测试题.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言指针测试题.docx(16页珍藏版)》请在冰豆网上搜索。
全国计算机等级考试二级C语言指针测试题
全国计算机等级考试二级C语言指针测试题
一、选择题
(1)设有定义:
intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是
A)*p=*q;
B)p=q;
C)*p=&n1;
D)p=*q;
(2)若有定义:
intx=0,*p=&x;,则语句printf("%d\n",*p);的输出结果是
A)随机值
B)0
C)x的地址
D)p的地址
(3)以下定义语句中正确的是
A)chara='A'b='B';B)floata=b=10.0;
C)inta=10,*b=&a;D)float*a,b=&a;
(4)有以下程序
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);
}
程序运行后的输出结果是
A)8,7,8,7
B)7,8,7,8
C)8,7,7,8
D)7,8,8,7
(5)设有定义:
inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是
A)scanf(“%d”,pa);
B)scanf(“%d”,a);
C)scanf(“%d”,&pa);
D)scanf(“%d”,*pa);
(6)设有定义:
intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是
A)p=1;
B)*q=2;
C)q=p;
D)*p=5;
(7)有以下程序
以下是引用片段:
void fun(char *a, char *b)
{ a=b; (*a)++; }
main ()
{ char c1=’A’, c2=’a’, *p1, *p2;
p1=&c1; p2=&c2; fun(p1,p2);
printf(“%c%c\n”,c1,c2);
}
程序运行后的输出结果是
A)Ab
B)aa
C)Aa
D)Bb
(8)若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是
A)int *i=NULL; B)float *f=NULL;
scanf("&d",f); *f=10.5;
C)char t="m",*c=&t; D)long *L;
*c=&t; L=‘\0’;
(9)有以下程序
以下是引用片段:
#inc1ude
main()
{ printf("%d\n", NULL); }
程序运行后的输出结果是
A)0
B)1
C)-1
D)NULL没定义,出错
(10)已定义以下函数
intfun(int*p)
{return*p:
}
该函数的返回值是
A)不确定的值
B)形参p中存放的值
C)形参p所指存储单元中的值
D)形参p的地址值
(11)下列函数定义中,会出现编译错误的是
A)max(int x,int y,int *z) B)int max(int x,y)
{*z=x>y ?
x:
y; } int z;
z=x>y ?
x:
y;
return z;
}
C)max(int x,int y) D)int max(int x,int y)
{ int z; { return(x>y?
x:
y);}
z=x>y?
x:
y; return(z);
}
(12)有以下程序段
以下是引用片段:
main()
{ int a=5, *b, **c;
c=&b; b=&a;
……
}
程序在执行了c=&b:
b=&a;语句后,表达式:
**c的值是
A)变量a的地址
B)变量b中的值
C)变量a中的值
D)变量b的地址
(13)有以下程序
以下是引用片段:
main()
{ char a,b,c,*d;
a=’\’; b=‘\0xbc’;
c=‘\xab’; d="\0127";
printf("%c%c%c%c\n",a,b,c,*d);
}
编译时出现错误,以下叙述中正确的是
A)程序中只有a=’\’;语句不正确
B)b=‘\0xbc’;语句不正确
C)d="\0127";语句不正确
D)a=’\’;和c=‘\0xab’;语句都不正确
(14)若有以下定义和语句
以下是引用片段:
#include
int a=4,b=3,*p,*q,*w;
p=&a; q=&b; w=q; q=NULL;
则以下选项中错误的语句是
A)*q=0;
B)w=p;
C)*p=a;
D)*p=*w;
(15)有以下程序
以下是引用片段:
int *f(int *x,int *y)
{ if(*x<*y)
return x;
else
return y;
}
main()
{ int a=7,b=8,*p,*q,*r;
p=&a;
q=&b;
r=f(p,q);
printf(“%d,%d,%d”,*p,*q,*r);
}
执行后输出结果是
A)7,8,8
B)7,8,7
C)8,7,7
D)8,7,8
(16)若有说明:
intn=2,*p=&n,*q=p;,则以下非法的赋值语句是
A)p=q;
B)*p=*q;
C)n=*q;
D)p=n;
(17)有以下程序
以下是引用片段:
void fun(char *c,int d)
{ *c=*c+1;d=d+1;
printf(“%c,%c,”,*c,d);
}
main()
{ char a=’A’,b=’a’;
fun(&b,a); printf(“%c,%c\n”,a,b);
}
程序运行后的输出结果是
A)B,a,B,a
B)a,B,a,B
C)A,b,A,b
D)b,B,A,b
(18)若有说明语句:
inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是
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);
(19)若定义:
inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为
A)无确定值
B)a的地址
C)512
D)511
(20)若有说明:
inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是
A)i=*p;
B)p*=*&j;
C)i=&j;
D)i=**p;
(21)下列程序段的输出结果是
A)2143
B)1212
C)1234
D)2112
以下是引用片段:
void fun(int *x, int *y)
{ printf(“%d %d”, *x, *y); *x=3; *y=4;}
main()
{ int x=1,y=2;
fun(&y,&x);
printf(“%d %d”,x, y);
}
(22)下列程序的运行结果是
A)63
B)36
C)编译出错
D)00
以下是引用片段:
void fun(int *a, int *b)
{ int *k;
k=a; a=b; b=k;
}
main()
{ int a=3, b=6, *x=&a, *y=&b;
fun(x,y);
printf(“%d %d”, a, b);
}
(23)有如下程序段
int*p,a=10,b=1
p=&a;a=*p+b;
执行该程序段后,a的值为
A)12
B)11
C)10
D)编译出错
(24)有以下函数
charfun(char*p)
{returnp;}
该函数的返回值是
A)无确切的值
B)形参p中存放的地址值
B)一个临时存储单元的地址
D)形参p自身的地址值
(25)请选出正确的程序段
A)int *p; B)int *s,k;
scanf("%d",p); *s=100;
… …
C)int *s,k; D)int *s,k;
char*p,c; char*p,e;
s=&k; s=&k;
p=&c; p=&c;
*p='a'; s=p;
… *s=1;
…
(26)若有以下定义和语句:
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中
(27)以下程序运行后,a的值是
A)4B)1C)0D)运行时出错,a无定值
以下是引用片段:
main()
{ int a,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
printf("%d\n",a);
}
(28)有以下程序
以下是引用片段:
int fun(int x,int y,int *cp,int *dp)
{ *cp=x+y; *dp=x-y; }
main()
{ int a, b, c, d;
a=30; b=50;
fun(a,b,&c,&d);
printf("%d,%d\n", c, d);
}
输出结果是
A)50,30
B)30,J50
C)80,-20
D)80,20
(29)若有定义和语句:
int**pp,*p,a=10,b=20;
pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);
则输出结果是:
A)10,20
B)10,10
C)20,10
D)20,20
(30)以下程序的输出结果是
以下是引用片段:
#include
subl(char a,char b) {char c; c=a;a=b;b=c;}
sub2(char* a,char b) {char c; c=*a;*a=b;b=c;}
sub3(char* a,char*b) {char c; c=*a;*a=*b;*b=c;} { char a,b;
a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);
a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);
a='A';b='B';sub1(a,b);putchar(a);putchar(b);
}
A)BABBAB
B)ABBBBA
C)BABABA
D)BAABBA
(31)若有说明:
inti,j=7,*p=&i;,则与i=j;等价的语句是
A)I=*P;
B)*P=*&J;
C)i=&j;
D)i=**p;
(32)要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。
能正确招待此功能的函数是
A)funa(int*x,int*y) B)funb(intx,inty)
{int*p; {intt;
*p=*x;*x=*y;*y=*p;} t=x;x=y;y=t;}
C)func(int*x,int*y) D)fund(intx,inty)
{*x=*y;*y=*x;} {*x=*x+*y;*y=*x-*y;*x=*x-*y;}
二、填空题:
(1)有以下程序
以下是引用片段:
void f( int y,int *x)
{y=y+*x; *x=*x+y;}
main( )
{ int x=2,y=4;
f(y,&x);
printf(“%d %d\n”,x,y);
}
执行后输出的结果是【1】。
(2)下面程序的运行结果是:
[2]。
以下是引用片段:
void swap(int *a,int *b)
{ int *t;
t=a; a=b; b=t;
}
main()
{ int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf(“%d%d\n”,*p,*q);
}
(3)设有以下程序:
以下是引用片段:
main()
{ int a, b, k=4, m=6, *p1=&k, *p2=&m;
a=pl==&m;
b=(*p1)/(*p2)+7;
printf(“a=%d\n”,a);
printf(“b=%d\n”,b);
}
执行该程序后,a的值为【3】,b的值为【4】。
(4)下列程序的输出结果是【5】。
以下是引用片段:
void fun(int *n)
{ while( (*n)--);
printf(“%d”,++(*n));
}
main()
{ int a=100;
fun(&a);
}
(5)以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
以下是引用片段:
void func(int x,int y, [6] z)
{ *z=x+y; }
(6)函数voidfun(float*sn,intn)的功能是:
根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。
请填空。
以下是引用片段:
void fun( float *sn, int n)
{ float s=0.0, w, f=-1.0;
int i=0;
for(i=0; i<=n; i++)
{ f= [7] * f;
w=f/(2*i+1);
s+=w;
}
[8] =s;
}
(7)以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。
请填空。
以下是引用片段:
exchange(int *x, int *y)
{ int t;
t=*y; *y= 【9】 ; *x= 【10】 ;
}
(8)下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。
intadd(intx,inty,【11】z)
{【12】=x+y;}
答案:
一、选择题
01)A 02)B 03)C 04)C 05)A
06)D 07)A 08)D 09)A 10)C
11)B 12)C 13)D 14)A 15)B
16)D 17)D 18)A 19)D 20)B
21)A 22)B 23)B 24)B 25)C
26)D 27)C 28)C 29)D 30)A
31)B 32)D
二、填空题
(1)84
(2)35
(3)0
(4)7
(5)0
(6)int*
(7)–1
(8)*sn
(9)*x
(10)t
(11)int*
(12)*z
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试 二级 语言 指针 测试
![提示](https://static.bdocx.com/images/bang_tan.gif)