C语言程序设计 指针-答案 联系客服

发布时间 : 星期六 文章C语言程序设计 指针-答案更新完毕开始阅读647ce5b751e79b896802263d

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[]=\

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

2. #include

#include void fun(char *p,int n) { char *i,*j,t;

for (i=p,j=p+n-1; i

main()

{ char s[]=\ fun(s,strlen(s)); puts(s); }

3. #include \

main ( )

{ char *a[]={\ char **p ; int j ; p = a+3;

for (j=3; j>=0; j--) printf(\}