《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案 联系客服

发布时间 : 星期日 文章《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案更新完毕开始阅读058c1bdd2a160b4e767f5acfa1c7aa00b42a9d35

8.6 已知指针p的指向如图8.5所示,则表达式*++p的值是

A) 20 B) 30 C) 21 D) 31 答案: B

8.7 已知指针p的指向如图8.5所示,则表达式++*p的值是

A) 20 B) 30 C) 21 D) 31

答案: C 8.8 以下程序的输出结果是

A) 23 B) 24 C) 25 D) 26

void prtv(int *x)

{ printf(\ } main()

{ int a=25; prtv(&a); }

答案: D 8.9 以下程序的输出结果是

A) 运行出错 B) 100 C) a的地址 main()

{ int **k, *a b=100; a=&b; k=&a; printf(\ }

答案: B 8.10 以下程序的输出结果是

A) 4,3 B) 2,3 C) 3,4 D) 3,2

void fun(float *a,float *b) { float w; *a=*a+*a; w=*a; *a=*b; *b=w; } main()

{ float x=2.0,y=3.0; float *px=&x,*py=&y; fun(px,py);

printf(\ }

答案: C 8.11 以下程序的输出结果是

A) 9.000000 B) 1.500000 C) 8.000000 D) b的地址 D) 10.500000

void sub(float x,float *y,float *z) { *y=*y-1.0; *z=*z+x; } main()

{ float a=2.5,b=9.0,*pa,*pb; pa=&a,pb=&b; sub(b-a,pa,pa); printf(\ }

答案: C 8.12 以下四个程序中不能对两个整形值进行交换的是 A) main() { int a=10,b=20; swap(&a,&b);

printf(\}

swap(int *p, int *q) { int *t,a; t=&a;

*t=*p; *p=*q; *q=*t; }

B) main() { int a=10,b=20; swap(&a,&b);

printf(\}

swap(int *p, int *q) { int t;

t=*p; *p=*q; *q=t; } C) main() { int *a,*b; *a=10,*b=20; swap(a,b);

printf(\}

swap(int *p, int *q) { int t;

t=*p; *p=*q; *q=t; }

D) main() { int a=10,b=20; int *x=&a,*y=&b; swap(x,y);

printf(\}

swap(int *p, int *q) { int t;

t=*p; *p=*q; *q=st; }

答案:C 二、 填空题

8.13 以下程序段的输出结果是_____。 int *var,ab;

ab=100; var=&ab; ab=*var+10; printf(\ 答案:

100 8.14 以下程序的输出结果是_____。

int ast(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } main()

{ int a,b,c,d; a=4; b=3; ast(a,b,&c,&d);

printf(\ } 答案:7 1 8.15 若有定义:char ch;

(1) 使指针p可以指向变量ch的定义语句是_____。 答案:char *p=&ch;

(2) 使指针p可以指向变量ch的赋值语句是_____。 答案:p=&ch;

(3) 通过指针p给变量ch读入字符scanf函数调用语句是_____。 答案:scanf(\;

(4) 通过指针p给变量ch的赋字符的语句是_____。 答案:ch=*p;

5) 通过指针p输出ch中字符的语句是_____。 答案: printf(\;

8.16 若有如图8.5所示五个连续的int类型的存储单元并赋值如图,且p和s的基类型皆为int,p已指向存储单元a[1]。

(1) 通过指针p,给s赋值,使其指向最后一个存储单元a[4]的语句是____。 答案: s=p+3;

(2) 用以移动指针s,使之指向中间的存储单元a[2]的表达式是____。 答案: s=s-2;

(3) 已知k=2,指针s已指向存储单元a[2],表达式*(s+k)的值是____。 答案: 50

(4) 指针s已指向存储单元a[2],不移动指针s,通过s引用存储单元a[3]的表达式是____。 答案: *(a+1)

5) 指针s已指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是____。

答案: 2

6) 若p指向存储单元a[0],则以下语句的输出结果是____。 for(i=0; i<5;i++) printf(\ printf(\ 答案:10 20 30 40 50 第九章 数组

一、 选择题 9.1 若已定义:

int a[ ]={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)) 答案:D

9.2 以下程序段给数组所有元素输入数据,应在下划线处填入的是 A)a+(i++) B)&a(i+1) C)a+i D)&a[++i]

main() {

int a[10],i=0;

while(i<10)scanf(\ . . .

}

答案:D

9.3 以下程序的输出结果是

A)3 B)4 C)1 D)2

main() {

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf(\ }

答案:A

9.4、 以下程序的输出结果是

A)不确定的值 B)3 C)2 D)1

main() {

int n[2]={0},i,j,k=2; for(i=0;i

for(j=0;j

答案: A

9.5 以下程序的输出结果是

A)17 B)18 C)19 D)20

main() {

int a[ ]={2,4,6,8,10},y=1,x,*p; p=&a[1];

for(x=0;x<3;x++) y+=*(p+x); printf(\ }

答案: C

9.6 以下程序的输出结果是

A)6 B)8 C)4 D)2

main() {