C习题指针部分
更新时间:2023-10-08 11:28:01 阅读量: 综合文库 文档下载
- c蛋白反应高是什么意思推荐度:
- 相关推荐
指针
一、选择题
1.变量的指针,其含义是指该变量的____________。 A.值 B.地址 C.名 D.一个标志
2.已知int *p,a;则语句“p=&a;”中的运算符“&”的含义是____________。 A. 逻辑与运算 B.位与运算C.取指针内容 D.取地址变量 3.对于类型相同的指针变量,不能进行 () 运算。 A.+ B.— C. = D.==
4.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是____________。 A.a,point,*&a B.&*a,&a,*point C.*&point,*point,&a D.&a,&*point ,point
5.设指针x指向的整型变量值为28,则printf(“%d\\n”,++*x);的输出是____________。 A.27 B.28 C. 29 D.30
6.若有说明:int *p,m=5,n; 以下正确的程序段是____________。 A.p=&n; scanf(“%d”,&p); B.p=&n; *p=m;
C.scanf(“%d”,&n); *p=n; D.p=&n; scan(“%d”,*p); 7.若有以下定义和语句:则下列说法正确的是____________。 double r==99,,*p=&r *p=r;
A.以上两处的*p含义相同,都说明给指针变量p赋值
B.在double r==99,*p=&r,把r的地址赋给了p所指的存储单元 C.语句“*p=r”,把变量r的值赋给指针变量p D.语句“*p=r”,取变量r的值放回r中
8.执行下面程序段后,变量a的值为____________。 int *p,a,b=1; p=&a;*p=l0;a=*p+b;
A.12 B.11 C.10 D.编译错误
9.若有说明:int i, j=7,*p=&i; 则i与j;等价的语句是____________。 A. i=*p ; B. *p=*&j ; C. i=&j ; D.i=**p;
10.设p1和p2均为指向同一个int 型一维数组元素的指针变量,k为int型变量,下列不正确的语句是____________。
A. k=*p1+*p2; B. k=*p1*(*p2); C. p2=k; D.p1=p2; 11.下面程序应能对两个整型变量的值进行交换。以下正确的说法是____________。 main()
{ int a=10,b=20;
printf(“(1)a=%d,b=%d\n”,a,b); swap(&a,&b); }
swap(int p,int q) { int t;
t=p;p=q;q=t;} A.该程序完全正确
B.该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可
C.该程序有错,只要将语句swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可 D.以上说法都不正确
12.若有以下定义,则表达式*p++的值是____________。 int a[5]={10,20,30,40,50},*p=&a[1]; A.20 B. 30 C.21 D. 31 13.下面程序的运行结果是____________。 main()
{int a[]={9,8,7,6,5,4,3,2,l,0),*p=a+5; printf(“%d”,*--p); }
A.5 B.a[4]的地址 C.3 D.4
14. 设有以下语句,则____________不是对a数组的正确引用,其中0<=i<10。 int a[10]={0,1,2,3,4,5,6,7,7,9},*p=a;
A.a[p-a] B. *(&a[i]) C. p[i] D.*(*(a+1)) 15.在二维数组a中,元素a[0][1]的地址可表示为____________。 A. *(*(a+0)+1) B. *(a+1) C. &a D.*a+1 16.执行以下程序段,m的值为____________。 int a[2][3]={{l,2,3},{4,5,6}}; int m,*p; p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4)); A.12 B.13 C.14 D.15
17.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为____________。 A.*(a[i]+j) B.(a+i) C.*(a+j) D.a[i]+j
18.若有定义:int a[2][3],则对a数组的第i行j列元素值的正确引用为____________。 A.*(*(a+i)+j) B.(a+i)[j] C.*(a+i+j) D.*(a+i)+j
19.若有定义 int a[4][6];则能正确表示a数组中任一元素a[i][j](i,j均在有效范围内)地址的表达式是____________。
A.&a[0][0]+6*i+j B. &a[0][0]+4*j+i C. &a[0][0]+4*i+j D. &a[0][0]+6*j+i 20.指针所指向的字符串的长度为____________。 char *s=”\\t\\’Name\\\\Address\\n” ;
A. 19 B.18 C.15 D.17 21.已知:char b[5],*p=b;则正确的赋值语句是____________。
A. b=”abcde” B. *b=”abcde” C. p=”abcde” D. *p=”abcde” 22.设有如下的程序段: char str[]=”hello”; char *ptr; ptr=str;
执行完上面的程序段后,*(ptr+5)的值为____________。
A. ‘0’ B.’\\0’ C. 不确定的值 D.’0’的地址 23.若有说明语句 char a[]=\char *p=\
则以下不正确的叙述是_____________。
A.a+1表示的是字符t的地址
B.p指向另外的字符串时,字符串的长度不受限制 C.p变量中存放的地址值可以改变 D.a中只能存放10个字符
24.下列说明不正确的是____________。
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”; 25.下面程序的运行结果是____________。 #include
{char *s1=\ char *s2=\ s1+=2;s2+=2;
printf(\}
A.正数 B.负数 C.零 D.不确定的值 26.若有以下定义:
char *cc[2]={“1234”,“5678”} 则正确的叙述是____________。
A.CC数组的两个元素中各自存放了字符串“1234”和“5678”的首地址 B.CC数组的两个元索分别存放的是含含4个字符的一维字符数组的首地址 C.CC是指针变量,它指向含有两个数组元素的字符型一维数组 D.CC数组元素的值分别是“1234”和“5678”
27.设有定义:int(*ptr) [M];其中的标示符ptr是____________。
A.M个指向整型变量的指针 B. 指向M个整型变量的函数指针
C. 一个指向具有M个整型元素的一维数组的指针 D. 具有M个指针元素的一维指针数组,每个元素都是一个指向整数变量的指针
28.下面程序的运行结果是____________。 main()
{int char[2][5]={“4934”,“8254”},*p[2]; int i,j,s=0: for(i=0;i<2;i++)
p[i]=ch[i]; for(i=0;i<2;i++)
for(j=0;p[i][j]>’\0’&&p[i][j]<=’9’;j==2) s=l 0*s+p[i][j]-‘0’; printf(“%d\n”,s); }
A. 4385 B. 43825 C. 49825 D. 493825
29.若有以下说明语句,请选出哪个是对C数组元素的正确引用____________。 int c[4][5],(*p)[5];p=c;
A. p+1 B. *(p+3) C. *(p+1)+3 D. *(*p+2) 30.若有以下定义和语句,则对a数组元素地址的正确引用是____________。
int a[2][3],(*p)[3]; p=a;
A. *(p+2) B. p[2] C. p[1]+1 (D) (p+1)+2
31.若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是( ) int t[3][3],*pt[3],k; for(k=0;k<3;k++) pt[k]=t[k];
A. t[2][0] B. t[2][2] C. t[1][2] D. t[2][1] . 若有以下定义,则对a数组的非法引用时____________。 int a[2][3],(*pa)[3];pa=a;
A. *(a[0]+2) B. *pa[2] C. pa[0][0] D. *(pa[1]+2) 32.若有以下定义:
int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[3]=x
则能正确表示数组元素x[1][2]的表达式是____________。 A. *((*p+1)[2]) B. (*p+1)+2 C. *(*(p+5)) D. *(*(p+1)十2)
33.设有以下的程序段,则对数组的错误引用是____________。 int a[12]={0},*p[3],**pp,i; for(i=0;i<3;i++) p[i]=&a[i*4]; pp=p;
A. pp[0][1] B. a[10] C. p[3][1] D. *(*(p+2)+2) 34.已有定义int(*p)();指针p可以____________。 A. 代表函数的返回值 B.指向函数的入口地址 C. 表示函数的类型 D. 表示函数返回值的类型 35.以下正确的叙述是____________。
A. C语言允许main函数带形参,且形参个数和形参名均可由用户指定 B. C语言允许main函数带形参,形参名只能是argc和argv C. 当main函数带形参时,传给形参的值只能从命令行中得到
D. 若有说明:main(int argc,char *argv),则形参argc的值必须大于l 36.main函数的正确说明形式是 。
A. main(int argc,char *argv) B.main(int abc,char **abv) 37.语句int(*ptr)();的含义是 。
A.ptr是指向函数的指针,该函数返回一个int型数据 B.ptr是指向int型数据的指针变量 C.ptr是指向一维数组的指针变量
D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
38.若有函数max(a,b),并且已使函数指针变量p指向函数max, 当调用该函数时,正确的调用方法是____________。
A. (*p)max(a,b); B. *pmax(a,b); C. (*p)(a,b); D. *p(a,b);
39.已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是____________。 A. p=max B. *p=max C. p=max(a,b) D. *p=max(a,b)
二、填空题
1.内存区的每一个字节有一个编号,这就是______________,一个变量的地址称为该变量的______________。、地址 指针
2.“*”称为( )运算符,“&”称为( )运算符。指向,取地址
3.执行语句printf(“%d”,NULL);后的输出结果是_______________。空或null或‘0’或0 4.在C语言中,数组名是一个不可改变的__________________。地址常量
5.设int a[10],*p=a;则对a[2]的正确引用是p[ __________ ]和*p( ________)。 2 +2
6.若有以下定义,则不移动指针p,且通过指针p引用值为97的数组元素的表达式是___________。 *(p+5) int w[10]={23,54,10,33,47,97,72,70,61,102},*p=w;
7.设有char *a=”ABCD”;则printf(“%s”,a);的输出时_____________;而printf(“%c”,*a);的输出是_________________。ABCD A
8.无返回值函数fun用来求出两整数x,y之和,并通过形参z将结果传回,假定x,y,z均是整型,则函数应定义为_____________________________________。void add(int x, int y , int * z)
9.函数调用时,若形参是一个指针变量,而对应的实参是一个数组名,则函数参数的传递方式是_____________传递。地址
10.如果要定义一个返回指针值的函数,其一般定义形式为_________。类型名 *函数名(参数表) 11.已知函数原型void fun(int *x,int *y);则指向fun的函数指针变量p的定义是___________________。void (*p)()或者 void (*p) (int *x,int *y)
12.若有以下说明和语句,表达式*(p+1)+2的含义是____________。 a[1][2]的地址 int a[3][4],(*p)[4];p=a; 13.设有以下语句: int s[2][3]={0},(*p)[3]; p=s;
则p+1表示数组____________。 s[1] 14.设有以下语句: int s[2][3]={0},(*p)[3]; p=s;
则p+1表示数组____________。 s[1]
15.若有定义int a=10,*p1=&a,**p=&p1;则表达式**p2的值是______________。10
16.设有一个名为“myfile.c”的C程序,其主函数是main(int argc,char *argv[])。如果在执行时,输入的命令为myfile aa bb cc↙,则形式参数argc的值是_______________。4
17.若有定义int *p;请写出利用malloc函数使p指向一个双精度型的动态存储单元的完整语句为______________。p=(int *)malloc(sizeof(double))
18.调用库函数malloc,使字符指针st指向具有9个字节的动态存储空间的语句是_______________。st=(char *)malloc(9)或者st=(char *)malloc(9*sizeof(char)) 19.指针p分配9个int型动态内存单元的语句为___________________。 p=(int *)malloc(sizeof(double)*9)
三、程序阅读
1. 分析下列程序,写出运行结果______________。0 #include “stdio.h” void fun( int *n) {while((*n)--);
正在阅读:
C习题指针部分10-08
河海大学2011年“通信与信息系统”“检测技术与自动化装置”专业07-10
长途汽车客运站设计论文_毕业论文05-14
令我难忘的事情作文600字06-27
桃江县职称论文发表网-变电站二次继电保护要点论文选题题目04-09
中国象棋特色方案03-23
大学英语六级单词复习资料0206-19
2015陕西省考申论考试作答要求的重要性05-05
安全生产规章制度和岗位操作规程的目录清单11-23
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 指针
- 习题
- 部分
- 2016山东省考真题和答案 - 图文
- γ辐照加工装置放射卫生防护管理规定
- 2017-2018沪教牛津版初中英语七年级下册全套单元测试题
- matlab实现三次贝塞尔曲线
- 分页系统课程设计计算说明书 doc
- OPC通讯协议简介
- 《铃兰花》教案高品质版
- 侵权责任法思考题集解析
- 淮阴工学院机电传动课程设计工作台往返循环电机拖动系统设计
- 用霍尔元件测量磁场
- 幕墙施工招标文件
- 深圳某酒店可行性研究报告
- 反假资格证书
- 立设的度制限时证举国我析试
- 国民经济和社会发展第十二个五年规划纲要 - 图文
- 金属的韧化方法及工艺
- 关于审美调查的报告
- CA6140车床拨叉毕业课程设计
- 2012年全国中考数学试题分类解析汇编轴对称和中心对称 - 图文
- 口笔译分类词汇大全