C语言程序设计指针答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计上机指针

注:本次上机无需上交上机报告。

一、选择题

1. 变量的指针,其含义是指该变量的()。

A. 值

B. 地址

C. 名

D. 一个标志

2. 已有定义int k=2,*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。

A. k=*ptr1+*ptr2

B. ptr2=k

C. ptr1=ptr2

D. k=*ptr1*(*ptr2)

3. 若有说明:int *p,m=5,n; 以下程序段正确的是()。

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

B. p = &n ; scanf(“%d”,*p);

C. scanf(“%d”,&n); *p=n ;

D. 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, *&a

B. &*a,&a,*p

C. *&p,*p,&a

D. &a,&*p,p

6. 下面程序段中,for循环的执行次数是()。

A. 9

B. 7

C. 6

D. 5

char *s=”\ta\018bc” ;

for ( ; *s!=’\0’ ; s++) printf(“*”) ;

7. 下面不能正确进行字符串赋值操作的是()。

A. char s[5]={“ABCDE”};

B. char s[5]={‘A’,’B’,’C’,’D’,’E’};

C. char *s ; s=”ABCDE” ;

D. char *s; scanf(“%s”,s) ;s无初值。

8. 下面程序段的运行结果是()。

char *s=”abcde” ; s+=2 ; printf(“%s”,s);

A. cde

B. 字符’c’

C. 字符’c’的地址

D. 不确定

9. p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。

A. c=*p1+*p2

B. p2=c

C. p1=p2

D. c=*p1*(*p2)

10. 以下说明不正确的是()。

A. char a[10]=”china” ;

B. char a[10],*p=a; p=”china”;

C. char *a; a=”china” ;

D. char a[10],*p; p=a=”china”;

11. 若有定义:int a[5];则a数组中首元素的地址可以表示为()。

A. &a

B. a+1

C. a

D. &a[1]

12. 已有函数max(a,b),为了让函数指针变量p指向max,正确的方法是()。

A. p=max;

B. p=max(a,b);

C. *p=max;

D.

*p=max(a,b);

13. 对于类型相同的指针变量,不能进行哪种运算?

A. +

B. -

C. %

D. ==

14. 若有以下说明和语句,则p1-p2的值为多少?

int a[10], *p1, *p2; p1=a; p2=&a[5];

A. -5

B. 6

C. -10

D. 非法

15. main()函数可以带两个形参,一般分为argc和argv,其中argv可以定义为()。

A. int argv;

B. char * argv[];

C. char argv[];

D. char ** argv[];

16. 若有定义:int (*p)[4];则标识符p()。

A. 是一个指向整型变量的指针

B. 是一个指针数组名

C. 是一个指针,它指向一个含有四个整型元素的一维数组

D. 定义不合法

17. 以下与int *q[5];等价的定义语句是()。

A. int q[5]

B. int *q

C. int *(q[5])

D. int (*q)[5]

18. 已有定义int (*p)( );指针p可以()。

A. 代表函数的返回值

B. 指向函数的入口地址

C. 表示函数的类型

D. 表示函数返回值的类型

二. 填空题

1. 设int a[10]={1,2,3}; 则*(a+3)的值是_______0_________。

2. 设TC2.0中,int a[3][4] = {{2},{3}}; 若数组a的起始地址为2000,则a+1的地址值是_____2008________________。

3. 设int a[2][4],(*p)[4]=a; 用指针变量p表示数组元素a[1][2]为_____________。

4. 对于数据定义及说明:“ int *p, *q[10], (*r)(), *s(); ”,其中p,q,r,s的含义分别:

p指针变量,

q数组名,此数组中的所有元素都是指针变量,

r指向函数的指针,

s函数名,函数的返回值是指针。

5. 若有定义:int a[2][3]={2,4,6, 8,10,12};则*(&a[0][0]+2*2+1)的值是12 ,*(a[1]+2)的值是12 。

三. 程序分析题,写出以下程序的执行结果,先分析,再上机验证。

1. void del (char *s,char c )

{ int i,j;

for (i=j=0; s[i]!='\0'; i++)

if ( s[i] == c) s[j++]=s[i];

s[j]='\0';

}

main()

{ char s[]="the c language";

del(s,'g'); puts(s);

}

2. #include

#include

void fun(char *p,int n)

{ char *i,*j,t;

相关文档
最新文档