资源描述:
《指针与数组练习.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、指针练习题一、选择题 1.变量的指针,其含义是指该变量的__________ a)值 b)地址 c)名 d)一个标志 2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是__________a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&a,&*point ,point 3.若有说明;int *p,m=5,n;以下正确的程序段的是__________a)p=&n
2、; b)p=&n; scanf("%d",&p); scanf("%d",*p); c)scanf("%d",&n); d)p=&n; *p=n; *p=m; 4.下面程序段的运行结果是__________char *s="abcde"; s+=2;printf("%d",s); a)cde b)字符’c’ c)字符’c’的地址 d)无确定的输出结果 5.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确
3、 执行的赋值语句是__________a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2); 6.以下正确的程序段是__________ a)char str[20]; b)char *p=”ok”scanf("%s",&str); scanf("%s",p); c)char str[20]; d)char str[20],*p=str; scanf("%s",&str[2]
4、); scanf("%s",p[2]); 7.若有说明语句 char a[]="It is mine"; char *p="It is mine"; 则以下不正确的叙述是__________ a)a+1表示的是字符t的地址 b)p指向另外的字符串时,字符串的长度不受限制 c)p变量中存放的地址值可以改变 d)a中只能存放10个字符 8.下面程序的运行结果是__________ #include #include main() { char
5、*s1="AbDeG"; char *s2="AbdEg"; s1+=2;s2+=2; printf("%d",strcmp(s1,s2)); } a)正数 b)负数 c)零 d)不确定的值 9.下面程序的运行结果是__________#include #include fun(char *w,int n) {char t,*s1,*s2; s1=w;s2=w+n-1; while(s16、{char *p; p="1234567"; fun(p,strlen(p)); puts(p); } a)7654321 b)1714171 c)1711717 d)7177171 10.若有以下定义,则对a数组元素的正确引用是__________ int a[5],*p=a; a)*&a[5] b)a+2 c)*(p+5) d)*(a+2) 11.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为__________ a)*(a[i]+j) b)(a+i) c)*(a+j)
7、 d)a[i]+j 12.若有以下定义,则p+5表示__________int a[10],*p=a; a)元素a[5]的地址 b)元素a[5]的值 c)元素a[6]的地址 d)元素a[6]的值 二.填空题1.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。#include"stdlib.h"main(){int*a,*b,*c,num,x,y,z;a=&x;b=&y;c=&z;printf("输入3个整数:");scanf("%d%d%d",a,b,c);printf("%
8、d,%d,%d",*a,*b,*c);num=*a;if(*a>*b)______;if(num>*c)______;printf(