77范文网 - 专业文章范例文档资料分享平台

C语言程序设计 第九章 指针

来源:网络收集 时间:2019-01-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

一、 选择题

1、 指针是一种____

A、 标识符 B、 变量 C、 内存地址 D、 运算符 2、 显示指针变量P中的值,可以使用命令_____

A、 Printf(“%d”,p); B、 Printf(“%d”,*p); C、 Printf(“%d”,*p); D、 Printf(“%d”,p);

3、 为指针变量P输入整型变量i的地址,可以使用命令____ A、 Scanf(“%p”,&p); B、 *p=i; C、 P=&I;D、 *p=&I; 4、 若有定义void *p;int *q;float *r,下面操作不对的是____ A、 p=q; B、 q=r; C、 p=r; D、 r=p;

5、 若有说明#define m 20 int n=10;下面定义不正确的是______ A、 Float s[m]; B、 Float s[m*10]; C、 Float s[m+n];D、 Float s[m+10]; 6、 若有定义int a[]={1,2,0};请问a[a[a[0]]]=______ A、 0 B、1 C、2 D、3

7、 若有char s[10],*p=s;则下面表达式正确的是_____

A、 s=p+s; B、 p=s+10; C、 s[2]=p[4]; D、 p=s[0]; 8、 定义整型指针变量p和q,下面操作不正确的是_______

A、 Int *p,q=null; B、 Int *p,q=null,null; C、 Int *p,*q=null,null; D、 Int *p,*q=null;

9、 若有定义int a[]={1,2,3},b[3]={1,2,3};,请问a==b_______ A、 不能比较 B、 结果为真 C、 结果为假 D、 结果不确定

10、以下程序有错,错误的原因是( )。 main()

{int *p,i;char *q,ch;

p=&i; q=&ch; *p=40; *p=*q; .

.

.}

A)p和q的类型不一致,不能执行*p=*q;语句

B)*p中存放的是地址值,因此不能执行*p=40;语句

C)q没有指向具体的存储单元,所以*q没有实际意义 D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句 11、已有定义 int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。

A)k=*ptr1+*ptr2; B)ptr2=k; C)p1=*p2; D)*p1=p2; 12、变量的指针,其含义是指该变量的( )。

A)值 B)地址 C)名 D)一个标志

13、若已定义int a=5;下面对(1),(2)两个语句的正确解释是( )。 (1)int *p=&a; (2) *p=a;

A)语句(1)和(2)中的 *p含义相同,都表示给指针变量p赋值

B)(1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p

C)(1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋给指针变量p D)(1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋于*p 14、若有语句int *point,a=4;和point=&a; 下面均代表地址的一组选项是( )。

A)a,point,*&a B)&*a,&a,*point C)*&point,*point,&a D)&a,&*point,point 15、以下程序输出的结果是( )

void main() { int a=5,*p1,**p2; p1=&a,p2=&p1; (*p1)++;

printf(“%d\\n”,**p2);}

A) 5 B) 4 C) 6 D) 不确定 16、若有说明:int *p,m=5,n; 以下正确的程序段是( )。

A)p=&n; B)p=&n;

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

*p=n; *p=m

17、若有说明: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;*p2=*p1; 18、已有变量定义和函数调用语句:int a=25; print_value(&a);下面函数的正确输出结

果是( )。 void print_value(int *t)

{ print(“%d\\n”,++*x);}

A)23 B)24 C)25 D)26 19、下面判断正确的是( )。

A)char * a=”china”;等价于 char *a;*a=”china”;

B)char str[10]={“china”};等价于char str[10];str[]={“china”}; C)char *s=”china”; 等价于 char *s; s=”china”;

D)char c[4]=”abc”,d[4]=”abc”; 等价于 char c[4]=d[4]=”abc”; 20、设 char *s=”\\ta\\017bc”; 则指针变量s指向的字符串所占的字节数是( )。 A)9 B)5 C)6 D)7

21、下面程序段中,for循环的执行次数是( )。 char *s=”\\ta\\018bc”;

for ( ;*s! =’\\0’;s++) printf(“*”); A)9 B)5 C)6 D)7 22、下面能正确进行字符串赋值操作的是( )。 A) char s[5]={“ABCDE”}; B) char

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

C) char *s; s=”ABCDE”; D) char *s; scanf(“%s”,s); 23、下面程序段的运行结果是( )。 char *s=”abcde”;

s+=2; printf(“%d”,s);

A)cde B)字符’c’ C)字符’c’的地址 D)无确定的输出结果 24、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的

赋值语句是( )。 A)c=*p1+p2; B)p2=c C)p1=p2 D)c=*p1*(*p2); 25、有下面的程序段:

chat s[]=”china”; char *p; p=s; 则下列叙述正确的是( )。

A)s和p完全相同 B)数组s中的内容和指针变量p中的内容相等

C)s数组长度和p所指向的字符串长度相等 D)*p与s[0]相等 26、下面程序的运行结果是( )。 #include #include

main()

{char *p1,*p2,str[50]=”abc”;

p1=”abc”; p2=”abc”;

strcpy(str+1,strcat(p1,p2)); printf(“%s\\n”,str);}

A) abcabcabc B)bcabcabc C) aabcabc D)cabcabc 27、下面程序的运行结果是( )。 #include main()

{char str[]=”cdalb”;

abc(str); puts(str);} abc(char *p)

{int i,j;

for(i=j=0;*(p+i)!=’\\0’;i++)

if(*(p+i)>=’d’) {*(p+j)=*(p+i); j++;} *(p+j)=’\\0’;}

A)dalb B)cd C)dl D)c 28、下面程序运行结果是( )。 #include fun(char*p)

{int i,j; char ts[81];

for(i=0,t=0;p[i]!=’\\0’;i+=2)

if(! isspace(*p+i)&&(*(p+i)!=’a’)) ts[t]=’\\0’; strcpy(p,ts);}

main()

{char str[81]={“a b c d ef g”};

fun(str); puts(str);}

A) abcdeg B)bcde C)ABCDE D)BCDE 29、若有以下定义,则对a数组元素的正确引用是( )。 int a[5],*p=a;

A) *&a[5] B) a+2 C) *(p+5) D)*(a+2) 30、若有以下定义,则对a数组元素地址的正确引用是( )。 int a[5],*p=a;

A) p=5 B)*a+1 C)&a+1 D)&a[0]

31、若有定义:int a[2][3];则对数组a的第i行第j列(假设i,j已正确说明并赋值)

元数值的正确引用为( )。

A)*(*(i+j)+j) B)(a+i)[j] C)*(a+i+j) D)*(a+i)+j

32、若有定义:int a[2][3];则对数组a的第i行第j列(假设i,j已正确说明并赋值)

元数地址的正确引用为( )。 A)*(a[i]+j) B)(a+i) C)*(a+j) D)a[i]+j

33、若有以下定义和语句,则对a数组元素地址的正确引用是( )。 int a[2][3],(*p)[3];

p=a;

A)*(p+2) B)p[2] C)p[1]+1 D)(p+1)+2 34、若有以下定义和语句,则对a数组元素地址的正确引用是( )。 int a[2][3],(*p)[3]; p=a;

A)(p+1)[0] B)*(*(p+2)+1) C)*(p[1]+1) D)p[1]+2 35、若有定义:int a[5];则a数组中首元素的地址可以表示为( )。

A)&a B)a+1 C)a D)&a[1] 36、 若有定义:int (*p)[4];则标识符p( )。

A)是一个指向整型变量的指针 B)是 一个指针数组名

C)是一个指针,它指向一个含有四个整型元素的一维数组 D)定义不合法 37、若有以下定义和赋值语句,则对s数组的第i行第j列(假设i,j已正确说明并赋

值)元素地址的合法引用为( )。

ints[2][3]={0},(*p)[3]; p=s;

A)*(*(p+i)+j) B)*(p[i]+j) C)(p+i)+j D)(*(p+i))[j]

38、若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正确说明并赋

值)元素地址的非法引用为( )。

int b[2][3]={0},(*p)[3]; p=b;

A)*(*(p+i)+j) B)*(p[i]+j)C)(p+i)+j D)(*(p+i))[j] 39、以下与int *q[5];等价的定义语句是( )。

A)int q[5] B)int*q C)int*(q[5]); D)int(*q)[5] 40、设有以下程序段:

char str[4][10]={“first”,“second”,“third”,“fourth”},*strp[4]; int n;

for(n=0;n〈4;n++) strp[n]=str[n];

若k为int型变量且0〈=k〈4,则对字符串的不正确引用是( )。 A)strp B)str[k] C)strp[k] D)*strp

二 、填空题

1、 二级指针是存放一级指针的__________ 2、 指针变量虽然都是存放指针,但____不同

3、 空指针名称是_______,表示没有指针的一种状态 4、 函数名和_______名可以作为指针常量 5、 不同类型的指针变量的赋值必须________

6、以下的运行结果是【 】。 #include main() {int I,k;

for(I=0;I<4;I++); {k=sub(&I);

printf(“=”,K); }

printf(“\\n”);} sub(int *s)

{static int t=0; t=*s+t;}

7、以下的运行结果是【 】。

#include”string.h” int *P;

main()

{int a=1,b=2,c=3; p=&b;

pp(a+c,&b);

printf(“(!) %d %d %d \\n”,a,b,*p);} pp(inta ,int *b)

{int c=4;

p=*b+c; a=*p-c;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言程序设计 第九章 指针在线全文阅读。

C语言程序设计 第九章 指针.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/449095.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: