第8章指针1练习答案

更新时间:2024-04-12 12:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

指针1

选择题

1. 如下程序段:

int *p ,a=10 ,b=1 ;

p=&a ; a=*p+b ;

执行该程序段后,a 的值为 。

A. 12 B. 11 C. 10 D. 编译出错 2. 若有以下定义和语句:

double r=99 , *p=&r ; *p=r ;

则以下正确的叙述是 。

A. 以下两处的*p 含义相同,都说明给指针变量p 赋值

B. 在\;\中,把r 的地址赋值给了p 所指的存储单元 C. 语句\;\把变量r 的值赋给指针变量p D. 语句\;\取变量r 的值放回r 中

3. 若有说明int *p,a;则能通过scanf语句正确给a存入数据的程序段是( )。

A.p=&a; scanf(“%d”,p); B.scanf(“%d”,a);

C.p=&a; scanf(“%d”,*p); D.*p=&a; scanf(“%d”,p); 4. 若int x ,*pb; ,则正确的赋值表达式是 。

A. pb=&x B. pb=x; C. *pb=&x; D. *pb=*x

5. 若有说明:int i, j=2,*p=&i;,则能完成i=j 赋值功能的语句是 。

A. i=*p; B. *p=*&j; C. i=&j; D. *p=i;

6. 若已定义:int a[9] ,*p=a;并在以后的语句中未改变p 的值,不能表示a[1]地

址的表达式是( )。

A. p+1 B. a+1 C. a++ D. ++p

7. 若有以下说明:int a[10]={1,2,3,4,5,6,7,8,9,10} ,*p=a ; 则数值为6 的表达式是( )。

A. *p+6 B. *(p+6) C. *p+=5 D. p+5 8. 以下程序段的运行结果是()。

int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=&a[3],*q; q=p+2;

printf(“%d”,*p+*q);

A.16 B.10 C.8 D.6

9. 若有以下的定义:

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

则值为3 的表达式是 。

A. p+=2 , *(p++) B. p+=2 ,*++p C. p+=3 , *p++ D. p+=2 ,++*p

10. 若有以下定义和语句,且0≤i<10则对数组元素的错误引用是 。 int a[10]={1,2,3,4,5,6,7,8,9,10},*p,i; p=a;

A. *(a+i) B. a[p-a] 读程序写结果题

1. #include

void main() { int *p1,*p2,*p;

int a=5,b=8; p1=&a; p2=&b;

if(a

2. #include

void main() { int *p1,*p2,*p;

int a=5,b=8,c; p1=&a; p2=&b;p=&c;

if(a

3. #include

void main()

{ int a=3,b=4,*p=&a,*q=&b; *p=*q; printf(“%d,%d,%d,%d\\n”,a,b,*p,*q); (*q)++; p=q;

C. p+i D. *(&a[i])

}

printf(“%d,%d,%d,%d\\n”,a,b,*p,*q);

4. #include

void main()

{ int a[10]={1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,0} ,*s=a; int i , j , t ; i=1; j=8; while(i

for(i=0 ; i<10 ; i++) printf(\ printf(\}

5. #include

sub(int x ,int y ,int *z) { *z=y-x ; } main()

{ int a , b , c ; sub(10 ,5 ,&a) ; sub(7 ,a ,&b) ; sub(a ,b ,&c) ;

printf(\}

程序填空题

1. 以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大

值,输出到屏幕上,请填空。 #include”stdio.h” void main() {

int x,y,z,max,*px,*py,*pz,*pmax; scanf(\px=&x; py=&y; pz=&z;

pmax=&max;

_______

if(*pmax<*py)*pmax=*py; if(*pmax<*pz)*pmax=*pz; printf(\}

*pmax=*px; 或*pmax=x; 2. 下面程序输出数组中的最大值,由s指针指向该元素。

void main()

{ int a[10]={6,7,2,9,1,10,5,8,4,3},*p,*s; for(p=a,s=a; ; p++) if( )s=p;

printf(\:%d\,*s): }

编程题

1. 在一个一维数组中查找是否存在某个数值(在主函数内初始化数组,由键盘输入要查找的值,用指针来做查找过程)

2. 编写一个函数int fun(int a[],int n,float *p),功能是求出一个整形数组的最大值和平均值,

最大值通过返回值返回,平均分存放到p指向的变量。并写出main函数进行函数调用。

本文来源:https://www.bwwdw.com/article/zizp.html

Top