指针练习题答案(1)
C语言练习题一及答案
![C语言练习题一及答案](https://img.taocdn.com/s3/m/0a18eec258f5f61fb73666f2.png)
C语言练习题一一、填空题。
(每空1分,共10分)1.语句while(e==0):中的条件e==0等价于_____________;答案:!e2 printf(“%4s”,“beijing”);输出为:_____________;答案:beijing3.C语言中的字符串以字符_____________;答案:答案:\04.C语言可以处理的文件类型是_____________和_____________;答案:文本文件和二进制文件5,int(*P)[5];说明p是:_____________;答案:指向一维整形数组的指针变量6.函数直接或间接地调用自己,被称为函数的_____________;答案:递归7.若有static int x[5],x[4]的地址表示是:___________ 。
答案:&x[4]或x+48.有程序段如下:int x=l:while (x<=lO){x+=3;printf(“%d\n”,x);}则:函数printf()执行次数是____4_____ ,循环结束后X的值是___________ 。
答案:139.若有以下定义和语句,则sizeof(a)的值是_____,答案:12,而sizeof(b)的值是__。
答案:4 struct{int day;char month;int year;}a,*b;10.若有static char c[10] = “China”;执行该语句后c[1]= ___________ 。
答案:h c[5]= ___________ 。
答案:\0c[6]= ___________ 。
答案:\0 strlen(c)= ___________ 。
答案:511.若有Static char c[s]={’a’,’b’,’\0’(零),‘c’,‘d’};printf(“%s\n”,c):则输出内容为:___________ 。
答案:ab12.下面程序把从终端读人的10个整数以二进制方式写到一个名为bi.dat的新文件中。
人教版三年级数学下册第一单元《位置与方向》知识点练习题(附答案)提前预习
![人教版三年级数学下册第一单元《位置与方向》知识点练习题(附答案)提前预习](https://img.taocdn.com/s3/m/b8b6731eaef8941ea66e0592.png)
人教版三年级数学下册第一单元《位置与方向》知识点+练习题(附答案),提前预习!第一单元位置与方向1、①(东与西)相对,(南与北)相对,(东南—西北)相对,(西南—东北)相对。
②清楚以谁为标准来判断位置。
③理解位置是相对的,不是绝对的。
2、地图通常是按(上北、下南、左西、右东)来绘制的。
(做题时先标出北南西东。
)3、会看简单的路线图,会描述行走路线。
一定写清楚从哪儿向哪个方向走,走了多少米,到哪儿再向哪个方向走。
同一个地点可以有不同的描述位置的方式。
(例如:学校在剧场的西面,在图书馆的东面,在书店的南面,在邮局的北面。
)同一个地点有不同的行走路线。
一般找比较近的路线走。
4、指南针是用来指示方向的,它的一个指针永远指向(南方),另一端永远指向(北方)。
5、生活中的方位知识:①北斗星永远在北方。
②影子与太阳的方向相对。
③早上太阳在东方,中午在南方,傍晚在西方。
④风向与物体倾斜的方向相反。
(刮风时的树朝风向相对的方向弯,烟朝风向相对的方向飘…… )知识要点1. 记忆方向的儿歌:早上起来,面对太阳;前面是东,后面是西;左面是北,右面是南;东西南北,认清方向。
2.根据一个方向确定其它七个方向:(1)南与北相对,西与东相对;西北与东南相对,东北与西南相对。
(2)东、南、西、北按顺时针方向排列。
3. 地图通常是按“上北下南左西右东”绘制的。
(书:练习一第3、4题;)4.了解绘制简单示意图的方法:先确定好观察点,把选好的观察点画在平面图的中心位置,再确定好各物体相对于观察点的方向。
在纸上按“上北下南、左西右东”绘制,用箭头“↑”标出北方。
(书:习二第2题。
)5、看简单的路线图描述行走路线。
(1)看简单路线图的方法:先要确定好自己所处的位置,以自己所处的位置为中心,再根据上北下南,左西右东的规律来确定目的地和周围事物所处的方向,最后根据目的地的方向和路程确定所要行走的路线。
(2)描述行走路线的方法:以出发点为基准,再看哪一条路通向目的地,最后把行走路线描述出来(先向哪走,再向哪走)。
C语言程序设计练习题(含程序及参考答案)1
![C语言程序设计练习题(含程序及参考答案)1](https://img.taocdn.com/s3/m/165c58ccfe4733687e21aac2.png)
C语言练习题(所提供的源程序均采用自定义函数方式解决,如不采用函数方式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能一一验证,仅供参考使用)1、定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。
#include <stdio.h>int fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写一个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运行后 a 中的值为8,b中的值为3。
#include <stdio.h>void fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中。
C语言练习题(带详解答案)
![C语言练习题(带详解答案)](https://img.taocdn.com/s3/m/0fa3a8797ed5360cba1aa8114431b90d6c85895b.png)
C语言练习题(带详解答案)一单项选择题1.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。
A)程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数D)包含文件中的第一个函数3、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)A)C程序的工作过程是编辑、编译、连接、运行B)C语言不区分大小写。
C)C程序的三种基本结构是顺序、选择、循环D)C程序从main函数开始执行5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.intt5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的-,选项B中[与]不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。
A)3a某B)某C)caeD)-e2E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的-不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A)%某B)a+bC)a123D)123选项A中的%,选项B中+不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print_3ddb8aBcB、I\\amone_halftart$it3paiC、tr_1CpppowwhileD、P某qMy->bookline#Hi.age选项B中的\\,$,选项D中>,#,.,-不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。
微型计算机原理与接口技术-1_真题(含答案与解析)-交互
![微型计算机原理与接口技术-1_真题(含答案与解析)-交互](https://img.taocdn.com/s3/m/0d00473789eb172dec63b71e.png)
微型计算机原理与接口技术-1(总分100, 做题时间90分钟)一、单项选择题在每小题列出的四个备选项中只有一个选项是符合题目要求的。
1.变量的指针是( )SSS_SINGLE_SELA 变量的首地址B 变量的值C 变量的名D 变量的一个标志分值: 1答案:A[解析] 指针的概念。
2.以下集成块型号中,不属于MCS-51系列单片机型号的是( )SSS_SINGLE_SELA 8094BHB 83C452C 80C32D 8051AH分值: 1答案:A[解析] 要熟记单片机型号。
3.已知char ch='B';则以下表达式的值是( ) ch=(ch>='A'&&ch <='Z')?(ch+32):ch;SSS_SINGLE_SELA AB aC bD Z分值: 1答案:C[解析] 条件表达式。
4.下列选项中,合法的C语言关键字是( )SSS_SINGLE_SELA defaultC integerD VAR分值: 1答案:A[解析] C语言关键字。
5.控制串行口工作方式的寄存器是( )SSS_SINGLE_SELA TCONB PCONC SCOND TMOD分值: 1答案:C[解析] 注意不同接口的工作方式寄存器。
6.若设串行控制寄存器SCON=40H,则串行口的工作方式是( ) SSS_SINGLE_SELA 方式0B 方式1C 方式2D 方式3分值: 1答案:B[解析] 串行口的工作方式。
7.地址指针DPTR是( )SSS_SINGLE_SELA 4位的专用寄存器B 8位的专用寄存器C 16位的专用寄存器D 32位的专用寄存器分值: 1答案:C[解析] 注意专用寄存器的位数。
8.在扩展系统中,能够提供地址信号的高8位的端口是( )SSS_SINGLE_SELB P1口C P2口D P3口分值: 1答案:C[解析] P2口是系统扩展口。
9.MCS-51外部中断1固定对应的中断入口地址为( )SSS_SINGLE_SELA 0003HB 000BHC 0013HD 001BH分值: 1答案:C[解析] MCS-51外部中断1入口地址固定。
c语言文件练习题含答案_(1)
![c语言文件练习题含答案_(1)](https://img.taocdn.com/s3/m/f9fec3992dc58bd63186bceb19e8b8f67c1cefa5.png)
第十二章文件基础训练一、填空题1、文件是指___________________________________________________________。
2、根据数据的组织形式,C中将文件分为______ASCII码文件________和___二进制文件___________两种类型。
3、现要求以读写方式,打开一个文本文件 stu1 ,写出语句:__FILE *fp fp=fopen(“stu.txt”,”r+”);_______________。
__________________________________。
4、现要求将上题中打开的文件关闭掉,写出语句:___fclose(fp);__________________。
5、若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则打开文件方式字符串应该是___fopen(“a.txt”,”wb+”);__________。
二、选择题1、若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是( ) 。
A) fopen("A:\user\abc.txt","r") B) fopen("A:\\user\\abc.txt","r+")C) fopen("A:\user\abc.txt","rb") C) fopen("A:\\user\\abc.txt","w")2、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为( )。
A) 0 B) 1 C) -1 D) 一个非0值3、当已经存在一个file1.txt文件,执行函数fopen(“file1.txt”,”r+”)的功能是()。
A)打开file1.txt文件,清除原有的内容;B)打开file1.txt文件,只能写入新的内容;C)打开file1.txt文件,只能读取原有内容;D)打开file1.txt文件,可以读取和写入新的内容;4、 fread(buf , 64,2,fp)的功能是:( )A)从fp所指向的文件中,读出整数64,并存放在buf中;B)从fp所指向的文件中,读出整数64和2,并存放在buf中;C)从fp所指向的文件中,读出64个字节的字符,读两次,并存放在buf地址中;D)从fp所指向的文件中,读出64个字节的字符,并存放在buf中;5、以下程序的功能是( ) 。
人教版九年级物理单元练习题第十六章电压 电阻(含答案) (1)
![人教版九年级物理单元练习题第十六章电压 电阻(含答案) (1)](https://img.taocdn.com/s3/m/3df252faf605cc1755270722192e453610665b79.png)
九年级物理单元练习题第十六章电压电阻一、选择题。
1.一节5号新干电池的电压约为()A.380V B.220V C.36V D.1.5V2.如图所示的电路中,a、b、c三处表示电流表或电压表。
闭合开关后,两盏白炽灯都正常发光。
下列说法正确的是()A.电压表可以放在任何一处B.电流表可以放在任何一处C.若灯L1比L2亮,则a表的示数比b表示数大D.若灯L1比L2亮,则灯L1的电阻小3.如图甲所示,闭合开关后两只电压表V1和V2的指针偏转角度相同,位置如图乙所示,则电源和灯L2两端电压分别是()A.8.5V 1.7V B.8.5V 6.8V C.6.8V 1.7V D.1.7V 6.8V4.如图所示的电路中,闭合开关,电压表V1的示数是6V,电压表V2的示数为8V,若电源电压为12V,则灯L2两端的电压为()A.2V B.4V C.6V D.8V5.有甲、乙两根镍铬合金丝,甲和乙等长,乙粗些,把它们并联在同一电路中,它们两端的电压分别为U甲和U乙,下列判断中正确的是()A.U甲=U乙B.U甲<U乙C.U甲>U乙D.无法判断6.LED灯是一种高效的节能光源,其核心元件是发光二极管,发光二极管的主要材料是()A.超导体B.导体C.半导体D.纳米材料7.如图所示的钨丝是将一个白炽灯去除玻璃罩制成的。
闭合开关S,小灯泡L发光,钨不发光;向钨丝吹冷气时,小灯泡L变亮;用酒精灯给钨丝加热,小灯泡L逐渐变暗直至熄灭。
由实验可知()A.钨丝的电阻随温度升高而减小B.向钨丝吹冷气时,钨丝电阻变小C.给钨丝加热时,电路中的电流变大D.小灯泡L发光而钨丝不发光是因为通过钨丝的电流小于小灯泡L的电流8.下列各物理量中,会影响导体电阻大小的是()A.电压B.电流C.长度D.电荷量9.“乐思”小组在学习使用滑动变阻器的实验中,连接了如图所示的电路。
下列分析正确的是()A.若M 接C 点,N 接D 点,滑动变阻器与灯泡并联B.连接电路时,若M 接C 点,N 接B 点,闭合开关前,滑片P 应移动到最左端C.若M 接C 点,N 接B 点,闭合开关,滑片P 向右移,电灯变暗D.若M 接C 点,N 接D 点,闭合开关,滑片P 向右移,电灯变暗10.电阻箱是一种箱式电阻器。
人教版小学二年级数学图形的运动一练习题(含答案)1
![人教版小学二年级数学图形的运动一练习题(含答案)1](https://img.taocdn.com/s3/m/c9b2b5ab3169a4517623a36b.png)
21.旋转 平移 22.④ ①② 23.旋转;平移
答案第 1页,总 3页
本卷由系统自动生成,请仔细校对后使用,答案仅供参考。
24.旋转 平移
25.平移 旋转 平移 旋转 26.B A 27.衣服 品 土 蚂蚁 28.旋转 平移 29.上 5 下 6 左 5 右 6 30.旋转 平移 31.B——③ D——① A——② C——④ 32.4 33.直线 完全重合 轴对称 这个图形的对称轴 34.形状 大小 35.相等 36.√ √ ○ ○ 37.√ 38.√ 39.× 40.× 41.× 42.× 43.错误 44.✕ 45.×
(
)
(
)
(
)
(
)
19.数字和汉字是我们生活中离不开的“朋友”,仔细观察,可以发现一些有对称特征的数
字和汉字,请按要求写一写。
(1)写出三个具有对称特征的数字:(_____)
试卷第 2页,总 6页
(2)写出三个具有对称特征的汉字:(_____) 20.下面哪些是旋转现象?哪些是平移现象?填在对应的括号里。
35.在轴对称图形中,对称轴两侧相对应的点到对称轴的距离(____)。
36.下面物体的运动是平移的画“√”是旋转的画“○”。
试卷第 4页,总 6页
(______) (_______) (______) (______)
三、判断题 37.小朋友们玩跷跷板是平移现象。 (_____)
38.平行四边形不是轴对称图形. (______)
7.图形
平移后得到的图形是( )。
A.
B.
C.
D.
8.喝矿泉水时用手拧瓶盖,瓶盖的运动属于(
A.旋转
B.平移
9.属于平移的是( )。
数据结构模拟练习题1 参考答案
![数据结构模拟练习题1 参考答案](https://img.taocdn.com/s3/m/3578438d02d276a200292e52.png)
数据结构模拟练习题1 参考答案一、单项选择题(每小题2分,共30分)1、算法的计算量的大小称为计算的( B )。
A.效率 B. 复杂性 C. 现实性 D. 难度2、静态链表中指针表示的是(B)A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址3、对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为(C)A.O(n) O(n) B. O(n) O(1) C. O(1) O(n) D. O(1) O(1)4、在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:(D )。
A.p->next=s;s->next=p->next; B.p->next=s->next;p->next=s;C.p->next=s;p->next=s->next; D. s->next=p->next;p->next=s;5、设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出栈的顺序是s2,s3,s4, s6 , s5,s1,则栈的容量至少应该是( B )A.2B. 3C. 5D.66、串是一种特殊的线性表,其特殊性体现在(B)。
A.可以顺序存储 B.数据元素是一个字符C.可以链接存储 D.数据元素可以是多个字符7、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是( D )。
A.9 B.11 C.15 D.不确定8、列说法中正确的是( A )。
A.任何一棵二叉树中至少有一个结点的度为2B.任何一棵二叉树中每个结点的度都为2C.任何一棵二叉树中的度肯定等于2D.任何一棵二叉树中的度可以小于29、已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为( B )。
A.CBEFDA B. FEDCBA C. CBEDFA D.不定10、下列哪一种图的邻接矩阵是对称矩阵( B )。
实验8-1 指针基本概念
![实验8-1 指针基本概念](https://img.taocdn.com/s3/m/9ad0001afc4ffe473368abc4.png)
实验8-1 指针基本概念【知识点回顾】1.指针和指针变量1)内存地址:内存存储单元的编号,从0开始,以字节为单位2)指针:一个内存地址有且仅有一个内存存储单元对应,即一个地址“指向”一个单元,故将地址称为指针3)指针变量:C语言中允许将地址作为数据值,用一个变量来存放。
存放指针的变量称为指针变量。
2.指针变量使用三步骤1)声明:一般形式如:类型说明符*指针变量名;2)初始化:一般形式如:指针变量=&变量;3)访问数据:一般形式如:*指针变量3.指针运算符1)间接访问运算符“*”2)取地址运算符“&”4.printf和scanf是否使用指针对比:假定有int x,y;int *px=&x,*py=&y;1)不使用指针的输入输出语句:scanf(“%d %d”,&x,&y);printf(“%d %d”,x,y);2)使用指针的输入输出语句:scanf(“%d %d”,px,py);printf(“%d %d”,*px,*py);5.打印地址信息:1)使用%p占位符2)使用%x占位符【典型例题】1.例题1,指针的基本使用方法#include <stdio.h>int main(){int data=100;//第一种指针变量定义方式:声明与初始化分两步完成int * pd; //声明指针变量pd=&data; //初始化指针变量,注意细节,data变量必须之前声明过//下面是第二种指针变量定义方式:声明与初始化一步完成//int * pd = &data; //声明指针变量,同时初始化指针变量printf("Direct access: data = %d\n", data); //变量的直接访问printf("Indirect access: data = %d\n",*pd); //变量的间接访问printf("The address of data is %p\n", &data);//变量的地址输出printf("The address of data is %p\n",pd); //指针变量的输出return 0;}程序运行效果如下:2.例题2,两数求和。
c语言第9章_指针及其应用(1)课后复习重点[1]教程
![c语言第9章_指针及其应用(1)课后复习重点[1]教程](https://img.taocdn.com/s3/m/9867c49ef121dd36a32d8261.png)
指针变量在使用前
必须赋值!
swap(pointer_1,pointer_2);
printf("a=%d,b=%d\n", *pointer_1,*pointer_2); return 0; } 2018/11/2
运行结果:
a:10 *pa:10
...
printf("&pa:%x(hex)\n",&pa);
return 0; }
&a:f86(hex)
pa:f86(hex) &pa:f8a(hex)
16
2018/11/2
例:输入两个数,并使其从大到小输出
int main()
{
int *p1,*p2,*p,a,b; scanf("%d,%d",&a,&b);
24
例:交换两个数—形参和实参都为指针变量
void swap(int *p1, int *p2) { int *p; int x,*p=&x; *p=*p1; *p1=*p2; *p2=*p; } int main() { int a=7,b=11; int *pointer_1=&a,*pointer_2=&b;
2018/11/2
9
例: void main( ) { int i=10; 危险! int *p; *p=i; printf("%d",*p); } 例: void main( ) { int i=10,k; int *p; p=&k; *p=i; printf("%d",*p); } 2018/11/2
C++试题附答案(1)
![C++试题附答案(1)](https://img.taocdn.com/s3/m/9e322070af1ffc4ffe47ac20.png)
C++ 试题一、选择题:1. 关于类和对象不正确的说法是( C )A) 类是一种类型,它封装了数据和操作B) 对象是类的实例C) 一个类的对象只有一个D) 一个对象必属于某个类2. 在类定义的外部,可以被访问的成员有( C )A) 所有类成员 B) private或protected的类成员C) public的类成员 D) public或private的类成员3. 关于this指针的说法错误的是( A )A) this指针必须显示说明 B) 当创建一个对象后,this指针就指向该对象C) 成员函数拥有this指针 D) 静态成员函数不拥有this指针4. 声明一个类的对象时,系统自动调用( B )函数,撤消对象时,系统自动调用( C )函数A) 成员函数 B) 构造函数 C) 析构函数 D) 普通函数5. 下面对构造函数的不正确描述是( B )A) 系统可以提供默认的构造函数 B) 构造函数可以有参数,所以可以有返回值C) 构造函数可以重载 D) 构造函数可以设置默认参数6. 下面对析构函数的正确描述是( C )A) 系统不能提供默认的析构函数 B) 析构函数必须由用户定义C) 析构函数没有参数 D) 析构函数可以设置默认参数7. 对静态成员的不正确描述是( C )A) 静态成员不属于对象,是类的共享成员 B) 静态数据成员要在类外定义和初始化C) 调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针D) 非静态成员函数也可以操作静态数据成员8. 下面选项中,不是类的成员函数为( C )A) 构造函数B) 析构函数 C)友元函数 D) 缺省参数的构造函数方言9. 下面对友元的错误描述是( D )A) 关键字friend用于声明友元B) 一个类的成员函数可以是另一个类的友元C) 友元函数访问对象的成员不受访问特性影响D) 友元函数通过this指针访问对象成员10. 在C++中,类与类之间的继承关系具有( C )A) 自反性 B) 对称性 C) 传递性 D) 反对称性11. 下列关于类的继承描述中,( A )是错误的A) 派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数B) 派生类也是基类,但基类不一定具有派生类的全部属性和方法C) 继承描述类的层次关系,派生类可以具有与基类相同的属性和方法D) 一个基类可以有多个派生类,一个派生类可以有多个基类12. 当一个派生类仅有继承一个基类时,基类中的所有公有成员成为派生类的( A )A) public成员 B) private成员 C) protected成员D) 友元13. 当一个派生类私有继承一个基类时,基类中的所有仅有成员和保护成员成为派生类的( B )A) public成员 B) private成员 C) protected成员D) 友元14. 不论派生类以何种方法继承基类,都不能使用基类的( B )A) public成员 B) private成员 C) protected成员D) public成员和protected成员15. 下面描述中,错误的是(BC )(两个答案)A) 在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问B) 在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问C) 在基类定义的public和protected成员在保护继承的派生类中不可见D) 在派生类中不可见的成员要变成可访问的,需要进行访问声明16. 在C++中,不能被派生类继承的函数是(BC )(两个答案)A) 成员函数 B) 构造函数C) 析构函数 D) 静态成员函数17. 在创建派生类对象时,构造函数的执行顺序是( D )A) 对象成员构造函数、基类构造函数、派生类本身的构造函数B) 派生类本身的构造函数、基类构造函数、对象成员构造函数C) 基类构造函数、派生类本身的构造函数、对象成员构造函数D) 基类构造函数、对象成员构造函数、派生类本身的构造函数18. 当不同的类具有相同的间接基类时,有特点( AD )(两个答案)A) 各派生类对象将按继承路线产生自己的基类版本B) 派生类对象无法产生自己的基类版本C) 为了建立惟一的间接基类版本,在基类定义前加virtual即可D) 为了建立惟一的间接基类版本,应该声明虚继承19. 在C++中,要实现动态联编,必须使用( D )调用虚函数A) 类名 B) 派生类指针 C) 对象名 D) 基类指针20. 下列函数中,可以作为虚函数的是(CD )(两个答案)A) 普通函数 B) 构造函数 C)成员函数 D) 析构函数21. 在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( B )A) 不同 B) 相同 C) 相容 D) 部分相同22. 下面函数原型声明中,( B )声明了fun为虚函数A) void fun()=0; B) virtual void fun()=0;C) virtual void fun(); D) virtual void fun(){};23. 若一个类中含有纯虚函数,则该类称为( D )A) 基类 B) 纯基类 C) 派生类 D) 抽象类24. 假设A为抽象类,下列声明( B )是正确的A) A fun(int); B) A *p; C) intfun(A); D) A Obj;25. 下面描述中,正确的是(BD )(两个答案)A) 虚函数是没有实现的函数 B) 纯虚函数的实现在派生类中C) 抽象类是没有纯虚函数的类 D) 抽象类指针可以指向不同的派生类26. 关于函数模板,描述错误的是( A )A) 函数模板必须由程序员实例化为可执行的函数模板B) 函数模板的实例化由编译器实现C) 一个类定义中,只要有一个函数模板,则这个类是类模板D) 类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化27. 下列的模板说明中,正确提(AD )(两个答案)A) template <typename T1, typename T2>B) template <class T1, T2>C) template <class T1, class T2>D) template <typename T1; typename T2>28. 假设有函数模板定义如下:Template <typename T>Max(T a, T b, T &c){ c=a+b; }下列选项正确的是(AD )(两个答案)A) float x,y; float z; Max(x,y,z);B) int x,y,z; Max(x,y,z);C) int x,y; float z; Max(x,y,z);D) float x; int y, z; Max(x,y,z);29. 关于类模板,描述错误的是( D )A) 一个普通基类不能派生类模板B) 类模板从普通类派生,也可以从类模板派生C) 根据建立对象时的实际数据类型,编译器把类模板实例化为模板类D) 函数的类模板参数须通过构造函数实例化30. 建立类模板对象的实例化过程为( C )A) 基类à派生类 B) 构造函数à对象C) 模板类à对象 D) 模板类à模板函数31. 在C++中,容器是一种( D )A) 标准类 B) 标准对象 C) 标准函数 D) 标准类模板32. 下列类中(BD )(两个答案)不是输入/输出流类iostream的派生类A) fstream B) ofstream C)strstream D)ostrstream33. 在下列选项中(BCD )(三个答案)是ostream类的对象A) cin B) cerr C)clog D) cout34. read函数的功能是从输入流中读取( D )A) 一个字符 B) 当前字符C) 一行字符 D) 指定若干个字符35. 下列选项中,用于清除基数格式位置以十六制输出的语句是( B )A) cout<<setf(ios::dec, ios::basefield);B) cout<<setf(ios::hex, ios::basefield);C) cout<<setf(ios::oct, ios::basefield);D) cin>>setf(ios::hex, ios::basefield);36. 下列格式控制符,在iostream.h中定义的是(AD )(两个答案),在iomanip.h中定义的是(BC )(两个答案)A) endl B) setfill C)setw D) oct37. 下列串流类,在strstream.h中定义的是(BD )(两个答案),在sstream.h 中定义的是(AC )A) istringstream B) istrstream C) ostringstream D) ostrstream38. 包含类fstream定义的头文件是( A )A) fstream.h B) ofstream.h C)ifstream.h D) iostream.h39. 要求打开文件 d:\file.dat,可写入数据,正确的语句是( D )A) ifstream infile(“d:\file.dat”, ios::in);B) ifstream infile(“d:\\file.dat”, ios::in);C) ofstream infile(“d:\file.dat”, ios::out);D) fstream infile(“d:\\file.dat”, ios::in| ios::out);40. 假定已定义浮点型变量data,以二进制方式把data的值写入输出文件流对象outfile中去,正确的语句是( C )A) outfile.write((float *) &data, sizeof(float));B) outfile.write((float *) &data, data);C) outfile.write((char *) &data, sizeof(float));D) outfile.write((char *) &data, data);二、简答题:1. 什么是预编译,何时需要预编译:回答:总是使用不经常改动的大型代码体。
【三套试卷】小学五年级数学下册第五单元练习试题附答案(1)
![【三套试卷】小学五年级数学下册第五单元练习试题附答案(1)](https://img.taocdn.com/s3/m/9e66e5b369eae009591bec5a.png)
第五单元检测卷(附答案)卷面(3分)。
我能做到书写端正,卷面整洁。
知识技能(78分)一、我会判:下面物体的运动,是旋转现象的在下面的括号里打“√”。
(4分)二、我会涂:下面漂亮的图案分别是由哪个图形旋转而成的?用彩笔涂一涂。
(12分)三、我会填。
(12分)1.(1)指针从“3”绕O点()时针方向旋转()°到“6”。
(2)指针从“3”绕O点()时针方向旋转30°到()。
(3)指针从“3”绕O点()时针方向旋转60°到“1”。
(4)指针从“3”绕O点逆时针旋转()°到“12”。
(5)指针从“3”绕O点顺时针旋转180°到()。
2.(1)在台秤上放()kg的物品,指针顺时针旋转了90°。
(2)在台秤上放2 kg的物品,指针()时针旋转了()°。
(3)在台秤上放5 kg的物品,指针()时针旋转了()°。
四、我会选。
(6分)1.下面的剪纸作品中,是利用旋转知识剪成的是()2.把一个图形绕某点顺时针旋转90°后,得到的图形与原来的图形相比较()A.形状变了B.位置变了C.大小变了3.下面不是顺时针旋转了90°的是()4.“”顺时针旋转90°得到的图形是( )A. B. C.5.下图中以点A为中心旋转得到的图形是()6.如图,第4格内的图形应是()A. B. C.五、我会做:看图解决问题。
(28分)1.(13分)(1)图形A先绕点()顺时针旋转90°,再向()平移()格,得到图形B。
(2)图形B先绕点()顺时针方向旋转()°,再向()平移()格,得到图形C。
(3)图形()先绕点()()时针方向旋转()°,再向()平移()格,得到图形D。
2.怎样通过平移或旋转后得到小船?(15分)(1)请在小船中画出相应的每块砖的轮廓线,照样子标出序号。
(2)说说是怎样平移或旋转的?①板1绕点O()时针旋转()°,再向()平移()格。
(完整版)C++试题(一)附答案
![(完整版)C++试题(一)附答案](https://img.taocdn.com/s3/m/0f65400417fc700abb68a98271fe910ef12dae37.png)
一、单项选择题(共20 题,每题 1 分,共20 分)1、以下关于C++表记符的命名不合法的是A. PadB. name_1C. A#bcD. _a122、如有以下种类表记符定义:()int x=2;char w='a';;;则表达式w*x+y-z的结果种类是A. floatB. charC. intD. double3、如有 int x=10,y=20,z=30;则履行下边语句后,x 的值是if(x>y)z=x;x=y;y=z;4、循环语句whlie(int i=0 )i--;的循环次数是A.0B.1C.5D.无穷5、一个函数无返回值时,应选择的说明符是A. staticB. externC. voidD.无说明符6、对重载函数形参的描述中,错误的选项是A.参数的个数可能不一样B.参数的种类可能不一样C.参数的序次可能不一样D.参数的个数、种类、序次都同样,不过函数的返回值种类不一样7、以下能正确立义数组并正确赋初值的语句是A. int N=5,b[N][N];B. int a[2]={{1},{3},{4},{5}};C. int c[2][]={{1,2},{3,4}};D. int d[3][2]={{1,2},{3,4}};8、以下给字符数组进行的初始化中, 不正确的选项是A. char s1[]="abcd";B. char s2[3]={'x','y','\0'};C. char s3[]={'a','x','y','\0'};D. char s4[6]={"xyz","mnp"};9、平时的拷贝构造函数的参数是A.某个对象名 B .某个对象成员名C.某个对象的引用 D .某个对象的指针名10、关于构造函数特色的描述中,错误的选项是A.定义构造函数一定指出种类B.构造函数的名字与该类的类名同样C.一个类中可定义 0 至多个构造函数D.构造函数是一种成员函数11、下边程序的运转结果为#include <iostream.h>int add(int a,int b);void main(){extern int x,y;cout<<add(x,y)<<endl;}int x=20,y=5;int add(int a,int b){int s=a+b;return s;}A. 20 B . 5 C . 25 D .编译会提示犯错信息12、关于常成员的描述中,错误的选项是A.常成员包含常数据成员和常成员函数两种B.常数据成员一定是公有的C.常数据成员要使用构造函数成员初始化列表进行初始化D.常对象只好调用它的常成员函数,不可以调用其他的成员函数13、关于友元函数的描述中,错误的选项是A.友元函数不是成员函数B.友元函数只好接见类中私有成员C.友元函数破坏隐蔽性,尽量少用D.友元函数说明在类体内,使用要点字friend14、假如有int x,*p; float y,*q;则下边操作正确的选项是A. p=x B . p=qC. p=&x D . p=&y15、如有函数说明void fA(int m, int n);和指针变量的定义void (*p)(int,int);而且有p= fA 则以下操作不正确的选项是A.(*p ) (3,4); B. p(3,4);C. fA(3,4); D. *p++;16、若数组名作实参而指针变量作形参,函数调用时实参传给形参的是A.数组的长度B.数组第一个元素的值C.数组全部元素的值D.数组第一个元素的地址17、关于动向分配内存空间描述正确的选项是A.使用 new 运算符分配的内存空间的长度必要是常量B. delete运算符可以开释动向的储存空间和静态的储存空间C.由 new 分配的内存空间是不连续的D. delete运算符只好开释由new分配的动向储存空间18、可以开释对象所占资源的是()A.析构函数 B .数据成员C.构造函数 D .静态成员函数19、虚函数的定义是在基类中进行的,定义时需要冠以要点字A. static B . frendC. virtual D. public20、在 C++中串流类是在头文件中定义的,以下不属于串流类的是)A. strstream B. ostrstreamC. ofstream D. istrstream二、填空题(共 9 题 16 空,每空 1 分,共16 分)1、函数重载时,编译系统会依据____ 或 ____来划分。
C语言指针习题__附答案[1]
![C语言指针习题__附答案[1]](https://img.taocdn.com/s3/m/344613ced05abe23482fb4daa58da0116c171f8c.png)
一、选择题1.变量的指针,其含义是指该变量的_________.a)值b)地址c)名d)一个标志2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_____. a)a,point,*&a b)&*a,&a,*pointc)*&point,*point,&a d)&a,&*point ,point3.若有说明;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;4. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________.main(){int *p,*q,a,b;p=&a;printf(“input a:”);scanf(“%d”,*p);……}a)*p表示的是指针变量p的地址b)*p表示的是变量a的值,而不是变量a的地址c)*p表示的是指针变量p的值d)*p只能用来说明p是一个指针变量5. 已有变量定义和函数调用语句:int a=25; print_value(&a); 下面函数的正确输出结果是________.void print_value(int *x){ printf(“%d\n”,++*x);}a)23 b)24 c)25 d)266.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是A) *p=&a;scanf("%ld",p);B) p=(long *)malloc(8);scanf("%ld",p);C) scanf("%ld",p=&a);D) scanf("%ld",&a);7.有以下程序#include<stdio.h>main(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2 B)1,2,2,1C)2,1,2,1 D)2,1,1,28.有以下程序main(){ int a=1, b=3, c=5;int *p1=&a, *p2=&b, *p=&c;*p =*p1*(*p2);printf("%d\n",c);}执行后的输出结果是A)1 B)2 C)3 D)49. 有以下程序main(){ int a,k=4,m=4,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}程序运行后的输出结果是()A)4 B)1 C)0 D)运行时出错,无定值10. 在16位编译系统上,若有定义int a[]={10,20,30}, *p=&a;,当执行p++;后,下列说法错误的是()A)p向高地址移了一个字节B)p向高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价11.有以下程序段int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是()A)5 B)6 C)8 D)912.若有以下定义,则对a数组元素的正确引用是_________.int a[5],*p=a;a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)13.若有以下定义,则p+5表示_______.int a[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值14.设已有定义: int a[10]={15,12,7,31,47,20,16,28,13,19},*p; 下列语句中正确的是()A) for(p=a;a<(p+10);a++);B) for(p=a;p<(a+10);p++);C) for(p=a,a=a+10;p<a;p++);D) for(p=a;a<p+10; ++a);15.有以下程序段#include <stdio.h>int main(){ int x[] = {10, 20, 30};int *px = x;printf("%d,", ++*px); printf("%d,", *px);px = x;printf("%d,", (*px)++); printf("%d,", *px);px = x;printf("%d,", *px++); printf("%d,", *px);px = x;printf("%d,", *++px); printf("%d\n", *px);return 0;}程序运行后的输出结果是( )A)11,11,11,12,12,20,20,20 B)20,10,11,10,11,10,11,10C)11,11,11,12,12,13,20,20 D)20,10,11,20,11,12,20,2016.设有如下定义:int arr[]={6,7,8,9,10};int *ptr;ptr=arr;*(ptr+2)+=2;printf ("%d,%d\n",*ptr,*(ptr+2));则程序段的输出结果为A)8,10 B)6,8 C)7,9 D)6,1017.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是______. *(a+5)的值是_________.18.若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是______.A) p+1 B) *(p+3) C) *(p+1)+3 D) *(p[0]+2))19.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为______.a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j20.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____. *(*(a+1)+0)的值是________.21.有以下定义char a[10],*b=a;不能给数组a输入字符串的语句是()A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);22.下面程序段的运行结果是_________.char *s="abcde";s+=2;printf("%d",s);a)cde b)字符'c' c)字符'c'的地址d)无确定的输出结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()A) char s[10]="abcdefg"; B) char t[]="abcdefg",*s=t;C) char s[10];s="abcdefg"; D) char s[10];strcpy(s,"abcdefg");24.设已有定义: char *st="how are you"; 下列程序段中正确的是()A) char a[11], *p; strcpy(p=a+1,&st[4]);B) char a[11]; strcpy(++a, st);C) char a[11]; strcpy(a, st);D) char a[], *p; strcpy(p=&a[1],st+2);25.有以下程序main(){char a[]="programming",b[]="language";char *p1,*p2;int i;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}输出结果是()A)gm B)rg C)or D)ga26.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是________.a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);27.以下正确的程序段是_________.a)char str[20]; b)char *p;scanf("%s",&str); scanf("%s",p);c)char str[20]; d)char str[20],*p=str;scanf("%s",&str[2]); scanf("%s",p[2]);28.若有说明语句char a[]="It is mine";char *p="It is mine";则以下不正确的叙述是________.a)a+1表示的是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符29.下面程序的运行结果是_______.#include <stdio.h>#include <string.h>main(){ char *s1="AbDeG";char *s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}a)正数b)负数c)零d)不确定的值30.有以下程序void f(int *x,int *y){int t;t=*x;*x=*y;*y=t;}main(){int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(*p!=*q){f(p,q);p++;q--;}for(i=0;i<8;i++) printf("%d,",a[i]);}程序运行后的输出结果是______。
数据结构C语言版章节练习题(1-6章)
![数据结构C语言版章节练习题(1-6章)](https://img.taocdn.com/s3/m/c2d2bbacd1f34693daef3e47.png)
数据结构章节练习题第一章绪论一、单选题1.一个数组元素a[i]与________的表示等价。
A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2.下面程序段的时间复杂度为____________。
for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)3.执行下面程序段时,执行S语句的次数为____________。
for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/24.下面算法的时间复杂度为____________。
int f( unsigned int n ){ if ( n==0 || n==1 ) return 1; else return n*f(n-1); }A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1.数据的逻辑结构被分为__________、_________、__________和__________四种。
2.数据的存储结构被分为__________、和__________两种。
3.在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。
4.一种抽象数据类型包括__________和__________两个部分。
5.当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。
6.当需要用一个形参访问对应的实参时,则该形参应说明为__________。
7.在函数中对引用形参的修改就是对相应__________的修改,对__________形参的修改只局限在该函数的内部,不会反映到对应的实参上。
八年级上册物理第一章知识点加例题加练习题(含答案)
![八年级上册物理第一章知识点加例题加练习题(含答案)](https://img.taocdn.com/s3/m/7d6fb1f176a20029bc642d14.png)
力1、力是物体对物体的作用,只有一个物体不能产生力。
2、相互作用力:一个物体对另一个物体施力时,另一个物体也同时对他施加了力的作用,也就是说力的作用是相互的。
这两个力称为一对相互作用力。
这两个力的大小相同,方向相反。
例1:关于力,下列说法正确的是( )A .有的物体自己就有力,如爆炸的手榴弹,所以这个力可以没有施力物体B .力不能离开物体而存在C .两个物体相互接触一定会产生力D .不接触的物体之间一定没有力的作用例2:踢足球时,脚对足球施加力的作用,同时脚也感到痛。
这一现象说明物体之间力的作用是 的,使脚感到痛的力的施力物体是 。
例3:一个穿着旱冰鞋的同学站在墙边用力推墙的时候,他自己会向后滑动。
在这期间,这位同学对墙用的力的施力物体是 ,受力物体是 。
但同学向后滑动,由于运动状态的改变,说明该同学也受到了墙给他的力,这个力的施力物体是 ,受力物体是 。
3、力的作用效果⎩⎨⎧改变物体的形状改变物体的运动状态例4:如图中的甲、乙表示了力的作用效果,其中图甲表示力能使物体的____________发生改变;图乙表示力能使物体的_________发生改变.例5:在跳板跳水运动中,运动员对跳板施力的同时,也受到跳板对他的作用力,但这两个力的作用效果却不同,前者主要是改变了跳板的______________,后者主要是改变了运动员的____________________。
例6: 下列现象中,不属于力产生的效果的是( )A. 用力拉弹簧,弹簧变长了B. 足球在草地上越滚越慢C. 锯条被压弯了D. 小车在光滑水平面上匀速滑行4、力的三要素:力的大小、方向、作用点。
例7:(1)用较大的力和较小的力拉同一根橡皮筋,发现橡皮筋发生形变的程度不同。
说明:力的作用效与 有关(2)分别按顺时针方向和逆时针方向拧螺母,发现顺时针将螺母拧紧,逆时针将螺母拧松。
说明:力的作用效果与 有关;(3)如下图,分别从A 、B 两处推门,会发现A 处更容易把门推开。
指针经典练习题(含答案版)一
![指针经典练习题(含答案版)一](https://img.taocdn.com/s3/m/cd5cfe315727a5e9856a611a.png)
指针一.填空题(20分)1. 指针变量是把内存中另一个数据的地址作为其值的变量。
2. 能够直接赋值给指针变量的整数是 0。
3. 如果程序中已有定义:int k;1)定义一个指向变量k的指针变量p的语句是 int* p = &k; 。
2)通过指针变量,将数值6赋值给k的语句是 *p = 6; 。
3)定义一个可以指向指针变量p的变量pp的语句是 int ** pp; 。
4)通过赋值语句将pp指向指针变量p的语句是 pp = &p; 。
5)通过指向指针的变量pp,将k的值增加一倍的语句是 *(*pp)*= 2; 。
4. 当定义某函数时,有一个形参被说明成int *类型,那么可以与之结合的实参类型可以是int型指针、 int型数组等。
4. 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。
例如,输入的字符串为:556,则输出十进制整数366。
请填空。
45*8#include <stdio.h>main( ){ char *p,s[6]; int n; p=s; gets(p); n=*p-'0';while( *++p != '\0') //先++ ,后*n=n*8+*p-'0';printf("%d \n",n);}二.选择题(22分)1. 以下count函数的功能是统计substr在母串str中出现的次数。
int count(char *str,char *substr){ int i,j,k,num=0;for(i=0; ①B ;i++){for( ②B ,k=0;substr[k]==str[j];k++,j++)if(substr[ ③C ]==’\0’){num++;break;}}return num;}①A) str[i]==substr[i] B) str[i]!=‘\0’C) str[i]==‘\0’ D) str[i]>substr[i]②A) j=i+1 B) j=i C) j=i+10 D) j=1③A) k B) k++ C) k+1 D) ++k2. 以下Delblank函数的功能是删除字符串s中的所有空格(包括Tab、回车符和换行符)。
c语言指针判断题
![c语言指针判断题](https://img.taocdn.com/s3/m/3c7bbd9e6e1aff00bed5b9f3f90f76c661374cff.png)
c语言指针判断题
以下是一些关于C语言指针的判断题,让我们一起来看看:
1.指针变量只能存储整数值。
答案:错误。
指针变量可以存储指针地址,而不是整数值。
指针地址是内存地址,可以指向任何类型的变量。
2.指针变量的值可以改变,但是指针所指向的变量的值不能
改变。
答案:错误。
实际上,指针变量的值可以改变,指针所指向的变量的值也可以改变。
通过指针来修改变量的值是非常常见的操作。
3.指针变量可以被赋值为NULL,表示该指针不指向任何变
量。
答案:正确。
在C语言中,NULL是一个特殊的常量,表示空指针。
将指针变量赋值为NULL是一种常见的做法,用于初始化或表示指针不指向任何变量。
4.指针变量可以指向不同类型的变量。
答案:正确。
在C语言中,一个指针变量可以指向任何
类型的数据,只要该类型的大小能够存储在内存中。
不同类型的变量占用的内存大小不同,因此指针的大小也不同,但是不同类型的指针可以指向同一个地址。
5.指针变量的解引用操作可以直接访问其所指向的变量。
答案:正确。
在C语言中,通过解引用操作可以访问指针所指向的变量的值。
例如,如果p是一个指向整数的指针,那么*p就是该整数的值。
c语言 第9章_指针及其应用(1)课后复习重点[1]
![c语言 第9章_指针及其应用(1)课后复习重点[1]](https://img.taocdn.com/s3/m/e6c033220b4c2e3f572763f6.png)
指针变量必须先赋值,再使用
...
2000
10
整型变量i
2004
2008
变量k
10
指针变量p 随机 2004
2012
...
10
int i; float *p; p=&i;
一个指针变量不能指向 与其类型不同的变量!
应在类型相同的指 针变量之间赋值 int *p; float *q; p=q;
int *p; p=100;
23
例:交换两个数—形参和实参都为指针变量
void swap(int *p1, int *p2) { int *p; p=p1; p1=p2; p2=p; } int main() { int a=7,b=11; int *pointer_1=&a,*pointer_2=&b;
printf("a=%d,b=%d\n",a,b); printf("swapped:\n"); 调用结束 调用前 调用中
用于存放某个内存单元地址的变量。
(指向某内存单元的指针)
例如: char c = 'K'; char *p ;
p = &c;
p(4000) 2000 c(2000)
*p
75
2015/12/30
6
指针变量的声明
指针变量的声明格式: 数据类型 *变量名; – "*": 声明一个指针类型的变量; – "数据类型":指针变量所指向的变量的数据类型。
2015/12/30
9
例: void main( ) { int i=10; 危险! int *p; *p=i; printf("%d",*p); } 例: void main( ) { int i=10,k; int *p; p=&k; *p=i; printf("%d",*p); } 2015/12/30
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
while(*(str+num)!=‘\0’) num++;
return(num);}
A.7B.6C.5D.10
19.下面程序的运行结果是()
# include <stdio.h>
main( )
{static char a[ ]=“Language”,b[ ]=“programe”;
2.执行以下程序后,a的值为(),b的值为()
main(0
{int a,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1= =&m;
b=(- *p1)/(*p2)+7;
printf(“a=%d\n”,a);
printf(“b=%d\n”,b);}
[1]A.-1B.1C.0D.4
[2]A.5 B.6C.7D.10
D.*p只能用来说明p是一个指针变量
4.以下程序有错,错误原因是()
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没有实际意义
指针单元练习题
一、选择题:
1.以下程序的运行结果是()
sub(int x,int y,int *z)
{*z=y-x;}
main()
{int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf(“%4d,%4d,%4d\n”,a,b,c);}
A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7
8.若有说明: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;
9.设char *s=“\ta\017bc”;则指针变量s指向的字符串所占的字节数是()
22.下面程序的运行结果是()
#include<stdio.h>
#include<string.h>
main( )
{char *p1,*p2,str[50]=”abc”;
p1=”abc”;p2=”abc”;
strcpy(str+1,strcat(p1,p2));
printf(“%s\n”,str);}
int a[2][3], (*p)[3];
p=a;
A.*(p+2)B.p[2]C.p[1]+1D.(p+1)+2
27.若有以下定义和语句,则对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.
A.9B.5C.6D.7
10.下面程序段中,for循环的执行次数是()
char *s=“\ta\018bc”;
for( ;*s!=‘\0’;s++) printf(“*”);
A.9B.5C.6D.7
11.下面能正确进行字符串赋值的操作是()
A.char s[5]={“ABCDE”};B.char s[5]={‘A’,‘B’,‘C’,‘D’,‘E’};
若第一个printf输出的是ffca,则第二个printf语句的输出是()
A.ffddB.ffdcC.ffdeD.ffcd
35.设有以下定义:
char *cc[2]={“1234”,“5678”};则正确的叙述是()
数组的两个元素中各自存放了字符串“1234”和“5678”的首地址
数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
sp=strcpy(s,sp);
s[0]=‘h’;
puts(sp);
3.下面程序段的运行结果是___bcd ABCD________
chars[20]=“abcd”;
char *sp=s;
sp++;
puts(strcat(sp,“ABCD”));
4.下面程序段的运行结果是____*2*4*6*8*________
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j
25.若有以下定义,int a[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为()
A.*(a[i]+j)B.(a+i)C.*(a+j)D.a[i]+j
26.若有以下定义和语句,则对a数组元素地址的正确引用为()
A.4 4B.24C.2 2D.4 6
二、填空题:
1.下列程序的运行结果是__________*ptr1=7,*ptr2=5
swap(int *p1,int *p2)a=7,b=5
{int p;
p=*p1;*p1=*p2; *p2=p;}
main( )
{int a=5,b=7,*ptr1,*ptr2;
A.abcabcabcB.bcabcabcC.aabcabcD.
23.若有以下定义,则对a数组元素地址的正确引用是()
int a[5],*p=a;
A.*&a[5]B.a+2C.*(p+5)D.*(a+2)
24.若有以下定义,int a[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为()
15.下列程序段的运行结果是()
char *format=”%s,a=%d,b=%d\n”;
int a=1,b=10;
a+=b;
printf(format ,“a+=b”,a,b);
A.for,”a+=b”,abB.format ,”a+=b”C.a+=b,a=11,b=10D.以上结果都不对
16.下面程序段的运行结果是()
28.若有定义:int (*p)[4];则标识符p( )
A.是一个指向整型变量的指针
B.是一个指针数组名
C.是一个指针,它指向一个含有四个整型元素的一位数组
D.定义不合法
29.若有定义:int *p[4];则标识符p( )
A.是一个指向整型变量的指针
B.是一个指针数组名
C.是一个指针,它指向一个含有四个整型元素的一位数组
char *p1,*p2;
int k;
p1=a; p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)= =*(p2+k))printf(“%c”,*(p1+k));
}
ngugeD.有语法错
20.下面程序的运行结果是()
#include<stdio.h>
#include<string.h>
D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句
5.已有定义:int k=2; int *ptr1,*ptr2;且ptr1和ptr2均指向变量k,下面不能正确执行的赋值语句是()
A.k=*ptr1+*ptr2;B.ptr2=k;C.ptr1=ptr2;D.k=*ptr1*(*ptr2);
Dint b[10];
int *a=b+1;
32.若有以下定义和语句,则能正确表示a数组元素地址的表达式是()
double a[5],*p1;
p1=a;
A.aB.p1+5C.*p1D.&a[5]
33.若有以下定义,则数值不为3的表达式是()
int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;
fun(char *s)
{char a[7];
s=a;
strcpy(a,”look”);}
main()
{char *p;
fun(p);
puts(p);}
A.lookB.lookC.lookD.不确定的值
21.下面程序的运行结果是()
#include<stdio.h>
#include<string.h>
ptr1=&a; ptr2=&b;
swap(ptr1,ptr2);
printf(“*ptr1=%d,*ptr2=%d\n”,*ptr1,*ptr2);
printf(“a=%d,b=%d\n”,a,b);}
2.下面程序段的运行结果是__hELLO!________
char s[80],*sp=”HELLO!”;
C.char *s;s=“ABCDE”;D.char *s; scanf(“%s”,s);
12.下面程序段的运行结果是()。
char *s=”abcde”;
s+=2;printf(“%d”,s);
A.cdeB.字符’c’C.字符’c’的地址D.无确定的输出结果
13.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()
6.变量的指针,其含义是指该变量的()
A.值B.地址C.名D.一个标志