指针测试题

合集下载

c++考试

c++考试

华清远见C++测试题一:选择题(每题2分,其29题)1.关于类和对象不正确的是( )A:类是一种类型,它封装了数据和操作B:对象是类的实例C:一个类的对象只有一个D:一个对象必属于某个类2.在类定义的外部去访问类中的成员,类中的成员可以被访问的有( )A:所有类成员B:private或protected成员C:public成员D:public或private成员3.关于this指针的说法错误的是()A:this必须显示说明B:当创建一个对象后,this指针就指向该对象C:成员函数拥有this指针D:静态成员函数不拥有this指针4.声明一个类的对象时,系统自动调用()函数A:成员函数B:构造函数C析构函数D普通函数5.下面对构造函数的不正确描述是()A:系统可以提供默认的构造函数B构造函数可以有参数,所以可以有返回值C:构造函数可以重载D构造函数可以设置默认参数6.下面对析构函数的正确描述是()A:系统不能提供析构函数B析构函数必须由用户定义C析构函数没有参数D析构函数可以设置默认参数7.对静态成员<static修饰的成员>的不正确描述是()A:静态成员不属于对象,是类的其享成员B:静态数据成员要在类外声明和初始化C:调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针D:非静态成员函数也可以访问静态数据成员8.下面选项中,不是类的函数为()A:构造函数B:析构函数C友元函数D缺省参数的构造函数9.下面对友元的错误描述是()A)关键字friend用于声明友元B)一个类的成员函数可以是另一个类的友元C)友元函数访问对象的成员不受访问权限修饰符影响D)友元函数通过this指针访问对象成员10.在c++中,类与类之间的继承关系具有()A自反性B)对称性C传递性D)反对称性11.下列关于类的继承描述中,( )是错误的A)派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数B基类全部属性和方法与派生类不一定相同C)继承描述类的层次关系,派生类可以具有与基类相同的属性和方法D)一个基类可以有多个派生类,一个派生类可以有多个基类12.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的()A)public成员B)private成员C)protected成员D)友元13当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成成员成为派生类的()A)public成员B)private成员C)protected成员D)友元14.不论派生类以何种方法继承基类,都不能继承基类的()A)public成员B)private成员C)protected成员D)public成员和protected成员15.下面描述中,错误的是( )A)在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问B) 在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问C)在基类定义的public和protected成员在保护继承的派生类中可见D)在派生类中不可见的成员要变成可访问的,需要进行友元访问声明16.在C++中,不能被派生类继承的成员是()(两个答案)A)成员函数B)构造函数与析构函数C)成员变量D)静态成员函数17.在创建派生类对象时,构造函数的执行顺序是( )A)对象成员构造函数、基类构造函数、派生类本身的构造函数B)派生类本身的构造函数、基类构造函数、对象成员构造函数C)基类构造函数、派生类本身的构造函数、对象成员构造函数D)基类构造函数、对象成员构造函数、派生类本身的构造函数18。

应用测试题与答案

应用测试题与答案

.1 单选题1.以下四项操作中有一个不是鼠标的基本操作方式,它是___C___。

A)单击B)拖放C)连续交替按下左右键D)双击2.当鼠标指针移到一个窗口的边缘时会变为一个_____D___,表明可改窗口的大小形状。

A)指向左上方的箭头B)伸出手指的手C)竖直的短线D)双向的箭头3.在Windows2000中,打开一个菜单后,其中某菜单项会出现与之对应的级联菜单的标识是__B______。

A)菜单项右侧有一组英文提示B)菜单项右侧有一个黑色三角C)菜单项左侧有一个黑色圆点D)菜单项左侧有一个“√”号4.在某窗口中打开“文件”下拉菜单,在其中的“打开”命令项的右面括弧中有一个带下划线的字母O,此时要想执行“打开”操作,可以在键盘上按__A______。

A)O键B)Ctrl+O键C)Alt+O键D)Shift+O键5.在下拉菜单里的各个操作命令项中,有一类命令项的右面标有省略号(…),这类命令项的执行特点是__C______。

A)被选中执行时会要求用户加以确认B)被选中执行时会弹子菜单C)被选中执行时会弹出对话框D)当前情况下不能执行6.在Windows2000某些窗口中,在隐藏工具栏的状态下,若要完成剪切/复制/粘贴功能,可以__C______。

A)通过“查看”菜单中的剪切/复制/粘贴命令B)通过“文件”菜单中的剪切/复制/粘贴命令C)通过“编辑”菜单中的剪切/复制/粘贴命令D)通过“帮助”菜单中的剪切/复制/粘贴命令7.对话框允许用户__C______。

A)最大化B)最小化C)移动其位置D)改变其大小8.在Windows的各种窗口中,有一种形式叫“对话框(会话窗口)”。

在这种窗口里,有些项目在文字说明的左边标有一个小圆形框,当该框里有“·”符号时表明_D_______。

A)这是一个多选(复选)按钮,而且未被选中B)这是一个多选(复选)按钮,而且已被选中C)这是一个单选按钮,而且未被选中D)这是一个单选按钮,而且已被选中9.为了执行一个应用程序,可以在“资源管理器”窗口内,用鼠标__B______。

测试题目

测试题目

测试题目试卷一(一)选择题(2分×25=50分)1.下列XHTML中的语法正确地是()A.<p>text line 1B.<BODY> <P>这是一个文字段落</P></ BODY >C.<IMG SRC=”image.gif”WIDTH=”200”HEIGHT=”100”> D.<br/>2.下列那种引入css的方式是错误的?()A.<link href=”mystyle.css”rel=”stylesheet”type=”text/css”>B.<style type=”text/css”> import “mystyle.css”; </style>C.<h1 style=”color:white”>这是一行字</h1>D.<style type=”text/css”> h1{color:white}</style>3.分析如下代码,“文本”的颜色应该是:()<style type="text/css">p{color:blue;}p.special{color:red;}.special{color:green;}</style>……<p class="special">文本</p>……A.blue B.green C.red D.不确定4.分析如下代码,下列分析正确的是:()<style type="text/css">p span{color:red;}span{color:blue;}</style>……<p> 我爱<span>中国</span>!</p>我爱<span>生活</span>!A.“中国”的颜色是red,“生活”的颜色是blueB.“中国”的颜色是red,“生活”的颜色是redC.“中国”的颜色是blue,“生活”的颜色是blueD.“中国”的颜色是blue,“生活”的颜色是red5.分析下列代码,正确地说法是:()<style type="text/css">p{color:green;}.red{color:red;}.purple{color:purple;}#line{color:blue;}</style></head><body><p>第一行文本</p><p class="red">第二行文本</p><p id="line">第三行文本</p><p style="color:orange;" id="line">第四行文本</p><p class="purple red">第五行文本</p></body>A.第一行文本显示颜色:网页默认颜色;第二行文本显示颜色:redB.第二行文本显示颜色:red;第三行文本显示颜色:blueC.第三行文本显示颜色:blue;第四行文本显示颜色:blueD.第四行文本显示颜色:orange;第五行文本显示颜色:red6.下列描述正确错误地是:()A.所有页面中地元素都看成一个盒子,占据一定地页面空间。

自测题_8(面向对象一)(答案)

自测题_8(面向对象一)(答案)

C/C++测试题面向对象选择题:C++概述1、以下C++新增的关键字为。

A breakB continueC stuctD inline//答案:D2、面向对象程序设计将数据与______放在一起,作为相互依存、不可分割的整体来处理。

A对数据的操作B信息C数据隐藏D数据抽象//答案:A3、面向对象程序设计优于传统的结构化程序设计,其优越性主要表现在,它有希望解决软件工程的两个主要问题:软件复杂性和______。

A 软件生产率的提高B 精化已有的代码C 共享代码D 编写可重用代码//答案:A4、面向对象系统的______是一种信息隐藏技术,目的在与将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需用设计者提供的协议命令对象去做即可。

A多态性B封装性C继承性D复用性//答案:B5、______不是面向对象系统所包含的要素A重载B对象C类D继承//答案:A6、关于C++与C语言的关系的描述中,______是错误的。

A C语言是C++的一个子集B C++与C语言是兼容的C C++对C语言进行了一些改进D C++与C语言都是面向对象的//答案:D7、下面关于对象概念的表述中,______是错误的。

A 对象就是C语言中的结构变量B 对象代表着正在创建的系统中的一个实体C 对象是一个状态和操作(或方法)的封装体D 对象之间的信息传递是通过信息进行的//答案:A8、下面关于类概念的表述中,______是错误的。

A 类是抽象数据类型的实现B 类是具有共同行为的若干对象的统一描述体C 类是创建对象的样板D 类就是C语言中的结构类型9、下列关于C++类的描述中错误的是______。

A 类与类之间可以通过一些手段进行通信和联络B 类用于描述事物的属性和对事物的操作C 类与类之间必须是平等关系,而不能组成层次关系D 类与类之间可以通过封装而具有明确的独立性//答案:C10、下列关键字中,_______既在C语言中使用,又在C++语言中使用A inlineB breakC privateD public//答案:B11、C++对C语言做了很多改进。

Excel的基本知识测试题

Excel的基本知识测试题

1、在Excel中,当鼠标指针依到自动填充柄上时,指针的形状为请输入答案A. 双箭头B. 白十字C. 黑十字D. 黑矩形2、关于Excel单元格中的公式的说法,不正确的是请输入答案A. 只能显示公式的值,不能显示公式B. 能自动计算公式的值C. 公式值随所引用的单元格的值的变化而变化D. 公式中可以引用其它各种簿中的单元格3、在Excel中,如果我们只需要数据列表中记录的一部分时,可以使用Excel提供的( )功能。

请输入答案A. 排序B. 自动筛选C. 分类汇总D. 以上全部4、在Excel中,对选定的单元格执行“清除数据”,则可以清除()请输入答案A. 单元格格式B. 单元格的内容C. 单元格的批注D. 以上都可以5、在Excel的公式运算中,如果要引用第6行的绝对地址,地D列的相对地址,则地址表示为()请输入答案A. D$6B. D6C. $D$6D. $D6答案:1、c2、a3、b4、b5、a一、填空:1、在excel2000中,用户选定所需的单元格或单元格区域后,在当前单元格或选定区域的右下角出现一个黑色方块,这个黑色方块叫______ 。

2、Excel 2000中,公式“=100+2>200”的计算结果为_____。

3、在Excel2000中,若单元格B2=10,B3=20,B4=30,则函数SUM(B2,B4)的值为_____。

AVERAGE (11,12,16)的值是______4、MAX(16,12,56)的值是______;MIN(16,12,56)的值是______。

5、excel2000中,在没有进行设置的前提下,向单元格输入数字,其会自动______ 对齐。

6、当Excel工作表中的数据区域中的数据发生变化时,相应的图表会______.7、“图表向导”一般提供_____个步骤的提示功能。

8、使用_____下拉菜单中的_____命令可实现全屏幕显示。

9、Excel 2000的基本文档称为_______,Excel 工作簿文件的扩展名默认为______。

电气仪表测试题及答案

电气仪表测试题及答案

电气仪表测试题及答案一、选择题(每题2分,共20分)1. 电流表的内阻应该:A. 很大B. 很小C. 适中D. 无影响答案:B2. 电压表的内阻应该:A. 很大B. 很小C. 适中D. 无影响答案:A3. 以下哪个不是电气仪表的常见故障?A. 指针卡阻B. 读数不准确C. 电源线断路D. 电压表读数过高答案:D4. 电气仪表的校准周期通常为:A. 1年B. 2年C. 3年D. 不需要校准答案:B5. 测量电阻时,应使用:A. 电流表B. 电压表C. 电阻表D. 功率表答案:C6. 测量电流时,电流表应该:A. 串联在电路中B. 并联在电路中C. 与被测设备并联D. 与被测设备串联答案:A7. 测量电压时,电压表应该:A. 串联在电路中B. 并联在电路中C. 与被测设备并联D. 与被测设备串联答案:B8. 测量功率时,需要同时测量:A. 电压和电流B. 电压和电阻C. 电流和电阻D. 电压、电流和电阻答案:A9. 测量电能时,使用的仪表是:A. 电能表B. 电流表C. 电压表D. 功率表答案:A10. 电气仪表的精度等级通常用:A. 百分比B. 绝对值C. 相对值D. 以上都不是答案:A二、填空题(每空2分,共20分)1. 电流表的工作原理基于________原理。

答案:电磁感应2. 电压表的工作原理基于________原理。

答案:静电感应3. 电阻表通常使用________测量电阻。

答案:欧姆表4. 电气仪表的校准是为了确保测量结果的________。

答案:准确性5. 测量电流时,电流表应________在电路中。

答案:串联6. 测量电压时,电压表应________在电路中。

答案:并联7. 功率的计算公式是________。

答案:P=U*I8. 电能表用于测量电路中的________。

答案:电能消耗9. 电气仪表的精度等级通常用百分比表示,例如0.5%表示测量值与真实值之间的误差不超过________。

数据结构测验

数据结构测验

测试题一、单选题1.在一个长度为n的顺序存储线性表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要从后向前依次后移( b )个元素。

A、n-iB、n-i+1C、n-i-1D、i2.在一个长度为n的顺序存储线性表中,删除第i个元素(1≤i≤n+1)时,需要从前向后依次前移( a )个元素。

A、n-iB、n-i+1C、n-i-1D、i3.在一个单链表HL中,若要在指针q所指的结点的后面插入一个由指针p所指的结点,则执行( d )。

A、q->next = p->next ; p->next = q;B、p->next = q->next; q = p;C、q->next = p; p->next = q;D、p->next = q->next ; q->next = p;4.在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行( c )。

A、p = q->next ; p->next = q->next;B、p = q->next ; q->next = p;C、p = q->next ; q->next = p->next;D、q->next = q;5.栈的插入与删除操作在(a )进行。

A、栈顶B、栈底C、任意位置D、指定位置6.若让元素1,2,3依次入队,则出队次序是( b )。

A、3,2,1B、1,2,3C、3,1,2D、1,3,27.假定一个循环顺序队列的队首和队尾指针分别为f和r,则判断队空的条件是( d )。

A、f+1==rB、r+1==fC、f==0D、f==r8、队列操作的原则是( a )。

A 先进先出B 后进先出C 只能进行插入D 只能进行删除9、栈和队列的共同特点是( a )。

A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点10、判断一个顺序非循环队列cq(最多元素为QueueSize)为满队列的条件是( b)。

万用表的使用习题解答

万用表的使用习题解答

1.1万用表的使用习题一、测试(一)判断题1.机械万用表又称指针式万用表,能测量电流、电压、电阻等电参数,有的还可以测量三极管的放大倍数,频率、电容值、逻辑电位、分贝值等。

答案:T解题:机械万用表又称指针式万用表,能测量电流、电压、电阻等电参数,有的还可以测量三极管的放大倍数,频率、电容值、逻辑电位、分贝值等。

2. 表头的灵敏度是指指针达到满刻度时,流过表头的直流电流的大小,简称为满度电流。

满度电流越小,灵敏度就越高,一般情况下,万用表只有几微安到几百微安满偏电流值。

答案:T解题:表头的灵敏度是指指针达到满刻度时,流过表头的直流电流的大小,简称为满度电流。

满度电流越小,灵敏度就越高,一般情况下,万用表只有几微安到几百微安满偏电流值。

3.表头的内阻是指磁电系测量机构中线圈的直流电阻,这个值越大,内阻越高,万用表性能越差。

答案:F解题:表头的内阻是指磁电系测量机构中线圈的直流电阻,这个值越大,内阻越高,万用表性能越好。

4.万用表量程旋转开关选择应遵循先选档位后选量程,量程从小到大选用的原则。

答案:F解题:万用表量程旋转开关选择应遵循先选档位后选量程,量程从大到小选用的原则。

5.机械万用表的表头为磁电式直流电流表,所以通过万用表的红、黑表笔串联到测量线路中就可以实现线路电流的测量。

为了实现多量程电流的测量,在表头上串联一个适当的电阻(叫分流电阻)进行分流,就可以扩展电流量程。

改变分流电阻的阻值,就能改变电流测量范围。

答案:F解题:机械万用表的表头为磁电式直流电流表,所以通过万用表的红、黑表笔串联到测量线路中就可以实现线路电流的测量。

为了实现多量程电流的测量,在表头上串联一个适当的电阻(叫分流电阻)进行分流,就可以扩展电流量程。

改变分流电阻的阻值,就能改变电流测量范围。

6. 机械万用表测电阻原理是在表头上并联和串联适当的电阻,同时串接一节电池,使电流通过被测电阻,根据电流的大小,就可测量出电阻值。

改变分流电阻的阻值,就能改变电阻的量程。

c语言面试题目100及最佳答案

c语言面试题目100及最佳答案

c语言面试题目100及最佳答案作为IT行业人士需要掌握的最基本的计算机语言—c语言,如今的地位只高不低,c语言掌握程度的高低往往在面试的时候可以完全表现出来,而有些问题是大家平时似乎是知道的,但却不能完整准确地回答上来的,今天大家带来精心整理的C语言经典面试题,希望对大家有所帮助。

1、请填写bool , float, 指针变量与“零值”比较的if语句。

提示:这里“零值”可以是0, 0.0 , FALSE 或者“空指针”。

例如int 变量n 与“零值”比较的if 语句为:if ( n == 0 )if ( n != 0 )以此类推。

(1)请写出bool flag 与“零值”比较的if 语句:【标准答案】if ( flag ) if ( !flag )100 条经典 C语言笔试题目(2)请写出float x 与“零值”比较的if 语句:【标准答案】 const float EPSINON = 0.00001;if ((x >= - EPSINON) && (x <= EPSINON)不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。

100 条经典 C语言笔试题目(3)请写出char *p 与“零值”比较的if 语句【标准答案】 if (p == NULL) if (p != NULL)2、以下为Linux下的32 位C 程序,请计算sizeof 的值。

char str[] = “Hello” ;char *p = str ;i nt n = 10;请计算(1)sizeof (str ) = (2)s i zeof ( p ) =(3)sizeof ( n ) =【标准答案】(1)6、(2)4 、(3 )4(4)void Func ( char str[100]){…… ;}请计算sizeof( str ) =(5)void * p = mall oc( 100 );请计算sizeof ( p ) =【标准答案】(4)4、(5)44、用变量a 给出下面的定义e) 一个有10个指针的数组,该指针是指向一个整型数的;f) 一个指向有10个整型数数组的指针;g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;【标准答案】e)int * a[10]; f)int (*a)[10]g)int (*a)(int); h) int (*a[10])(int)5、设有以下说明和定义:typedef u nion {long i; int k[5]; char c;} DATE; struct data { int cat; DATE cow; double dog;} too; DATE max;则语句printf("%d",sizeof(struct date)+sizeof(max)); 的执行结果是:_____【标准答案】DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20data 是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是20 + 32 = 52.当然…在某些16位编辑器下, int 可能是2字节,那么结果是int2 + DATE10 + double8 = 206、请问以下代码有什么问题:int main(){char a;char *str=&a;strcpy(str,“hello”);printf(str);return 0;}【标准答案】没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。

C、C++程序设计:指针和数组单元测试与答案

C、C++程序设计:指针和数组单元测试与答案

一、单选题1、若已定义: int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i; 假设0≤i≤9,则对a数组元素不正确的引用是()A.a[p-a]B.a[10]C. p[i]D.*(&a[i])正确答案:B2、假设有定义 int a=3,b=5,*pa=&a,*pb=&b;则执行如下语句后,a,b的值分别为()*pa=a+b;*pb=a+b;A.出错B.a=8,b=13C.a=13,b=13D.a=8,b=8正确答案:B3、有说明 int a[10]=[1,2,3,4,5,6,7,8,9,10},*p=a;,则数值为9的表达式是()。

A.*p+=9B.*(p+8)C. *p+=9D.*(p+9)正确答案:B4、执行char a[10]={"abcd"},*p=a;后,*(p+4)的值是()A.不能确定B."abcd"C.'\0'D.'d'正确答案:C5、若有char *a="ABCD";,则执行cout<<a的结果是()A.AB.ABC.ABCD.ABCD正确答案:D二、判断题1、假设有定义char s[100],*p=s; ,则可以用delete p;来释放p占用的内存空间。

正确答案:×2、假设有定义int a[]={10,20,30,40,50,60,70,80,90,100},*p=a;,则表达式*p+9的值为100。

正确答案:×3、假设有定义 char s1[20]="1234567" ,s2[20]={"ABCD"};,则执行strcpy(s1,s2)后,s1的内容为“ABCD”正确答案:√三、填空题1、假设有定义float d[10]={1.5, 2.0,2.5,3.0},*p=d;则表达式*++p的值为()正确答案:2.02、假设有定义 char s[]="ABCD",*p=s;则执行cout<<p+2的结果为()正确答案:CD。

钳工测试题(附参考答案)

钳工测试题(附参考答案)

钳工测试题(附参考答案)一、单选题(共60题,每题1分,共60分)1、具有高度责任心应做到()。

(0.5分)A、光明磊落,表里如一B、工作精益求精,尽职尽责C、方便群众,注重形象D、不徇私情,不谋私利正确答案:B2、违反爱护工、卡、刀、量具的做法是()。

(0.5分)A、正确使用工、卡、刀、量具B、工、卡、刀、量具要放在规定地点C、按规定维护工、卡、刀、量具D、随时拆装工、卡、刀、量具正确答案:D3、齿轮传动机构装配时,对于转速高的大齿轮,装配在轴上后,应作()以避免过大振动。

(0.5分)A、粗糙度检查B、尺寸检查C、装配精度检查D、平衡检查正确答案:D4、在大多数场合下圆柱销和销孔的配合具有少量(),以保证连接或定位的紧固性和准确性。

(0.5分)A、过渡B、过盈C、间隙D、轴向移动量正确答案:B5、销连接损坏或磨损时,一般是采用()的方法。

(0.5分)A、修整销孔B、更换销孔C、更换销D、修整销正确答案:C6、用涂色法对蜗轮的轴向位置和接触斑点进行检验,接触斑点在()为正确接触。

(0.5分)A、蜗轮周边稍偏于蜗杆旋入方向B、蜗轮中部稍偏于蜗杆旋入方向C、蜗轮周边稍偏于蜗杆旋出方向D、蜗轮中部稍偏于蜗杆旋出方向正确答案:D7、通用分度头按照分度方法和功能分类不包括()。

(0.5分)A、等分分度头B、万能分度头C、光学分度头D、半万能分度头正确答案:C8、不能提高工艺系统抗振性的措施是()。

(0.5分)A、沿全长多夹几点B、提高轴类工件顶尖孔的质量C、尽可能在远离加工处夹紧工件D、加工细长轴时采用中心架或跟刀架正确答案:C9、对于车削工件外径Da≤800mm的车床,若检验其主轴锥孔轴线的径向圆跳动时,测量长度应()。

(0.5分)A、等于Da/2或不超过300mmB、等于Da/2或不超过200mmC、等于800mmD、大于800mm正确答案:A10、球墨铸铁的热处理方法,不包括()。

(0.5分)A、正火B、调质C、退火D、自然时效正确答案:D11、降低机械噪声的常用方法不包括()。

【C语言指针模拟测试题_答案】

【C语言指针模拟测试题_答案】

C语言指针部分模拟测试题一、选择题1.语句int a=10,*point=&a; D 其值不为地址。

A. pointB. &aC. &pointD. *point2.若p为指针变量,y为变量,则y = *p++;的含义是 A A.y=*p;p++ B.y=(*p)++ C.y=p;p++ D.p++;y=*p 3.语句char str[]=”visual C++”;char *p=str;则p的值为 BA. ”visual C++”B.str的首地址C. \nD.”v”4.设有说明语句char *s[]={“student”,”Teacher”,”Father”,”Month”}, *ps=s[2];执行语句:printf(“%c,%s,%c”,*s[1],ps,*ps);则输出为AA.T,Father,FB.Teaher,F,FatherC. Teacher,Father,FatherD.语法错,无输出5.下列说明或赋值语句,不正确的是 CA. char *p;p=”Visual C++”;B. char p1[12]={‘v’,’i’,’s’,’u’};C. char p2[12];p2=”Visual C++”D. char p3[]=”Visual”;6.现有int b[3][4],*p;p=(int *)b;若要指针p指向b[2][3],以下正确的是 BA.p+=3*4+3B.p+=2*4+3C. p+=(3*4+3)*sizeof(int)D.p+=(2*4+3)*sizeof(int)7.语句int i,*p1,**p2;以下语句语法不正确的是 BA.p1=&i;B. p2=&i;C.p2=&p1;D.i=’\0x23’;8.如下图结构体说明和变量的定义,p指向a,q指向变量b.下面不能..把结点b连接到结点a之后的语句是 BC. p->next=&b;D.(*p).next=q;9.下面正确的语句是 AA. int a[3][4],(*p)[4]; p=a;B. int a[3][4],*p[4]; p=a;C. int a[3][4],*p; p=a;D. int a[3][4],**p;*p=a;10.以“追加”方式打开文本文件a:\aa.dat,下列语句中哪一个是正确的是 BA.fp=fopen("a:\\aa.dat","ab");B. fp=fopen("a:\\aa.dat","a");C. fp=fopen("a:\\aa.dat","r+");D. fp=fopen("a:\\aa.dat","w");11.设有函数定义:int f1(void){return 100,150;}调用函数f1()时, BA.函数返回值100B. 函数返回值150C. 函数返回二个值100和150D. 语句return 100,150;语法错.12.数组作为函数的形参时,把数组名作为实参,传递给函数的是 AA.该数组的首地址B. 该数组的元素个数C. 该数组中的各元素值D. 该数组的大小13.执行以下语句序列:则 Aenum {Sun,Mon,Tue,Wed,Thu,Fri,Sat}c1,c2; //Ac1=Mon; //Bprintf(“%d”,c1);A.输出1B.输出2C.输出0D. B行语法错14.执行以下语句序列:则 Cchar *p1=”Speaking”; //Achar *p2=”English”; //Bchar *p3=”a piece of cake”; //Cchar *str[]={p1,p2,p3}; //Dprintf(“%c”,*(str[0]+1));A.输出EnglishB.输出SpeakingC.输出pD. D行语法错二、填空题1.(2*2分=4分)下面程序的运行结果为16 、 2void main( ){static int a[3][2]={{12},{14,16},{1,2}};int *p=a[1];printf(“%d\n”,*(p+1));printf(“%d\n”,*(p+3));}2.(2*2分=4分)若有以下程序段,则*(*(b+2)+1)的值为11 ,*(*(p+1)+1)的值为7static int b[3][2]={1,3,5,7,9,11};int (*p)[2];p=b;3.(1*4分=4分)下面程序的运行结果为26#include<stdio.h>void sub(int *x,int i,int n){if(n<=i)sub(x,i,3*n);*x+=n++;}void main( ){int x=0;sub(&x,12,2);printf(“%d”,x);}4.(2*2分=4分)以下程序运行结果为_ Hello,world _、ello,world void main(){char *p,*q;char str[]="Hello,World\n";q = p = str;p++;printf(“%s\n”,q);printf(“%s\n”,p);}5. (1*4分=4分)以下程序运行结果是__121232343454_________ void main(){short ar[5]={1,2,3,4,5 };short * par=&ar[1];int i;for(i=0; i<4; i++){printf(“%d %d %d”,ar[i],par[i],*(ar+i));}}6.(2*2分=4分) 以下程序运行结果是__200 100_____void swap2(int *x,int *y){int t;t=*x;*x=*y;*y=t;}void main( ){ int a=100,b=200;swap2(&a,&b);printf(“%d\t%d”,a,b);}7.(3*2分=6分)void fun(int n, int *s){ int f1,f2;if(n= =1||n= =2)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=2*f1+f2+1;printf(“%d\t%d”,f1,f2);}}void main( ){ int x;fun(4,&x);printf(”x=%d\n”,x);}程序输出的第一行是1 1 第二行是4 1 最后一行是x=108. (3*2分=6分)void f(int *q1,int *q2,int *q3){*q3=*q1+*q2;}void main( ){ int i,j,a[3][3]={1,1},*p1=a[0],*p2=a[0]+1,*p3=a[0]+2;for(i=2;i<9;i++)f(p1++,p2++,p3++);for(i=0;i<3;i++){ for(j=0;j<3;j++)printf(“%d”,a[i][i]);printf(’\n’);}}程序输出的第一行是111 第二行是555 最后一行是343434 9.(2*3分=6分)int f(int x,int y){return x*y;}void main( ){ int i,j,(*fun)(int,int);fun=f;for(i=1;i<4;i++){ switch(i){case 1:case 2: j=(*fun)(i,i+1);break;case 3: j=(*fun)(i-1,i+2);break;}printf(”j=%d”,j);}}程序输出的第一行是j=2 第二行是j=6 最后一行是j=10三、完善程序1.(2*3分=6分)以下min 函数的功能是:在非空单向链表中查找结点数据域为最小的值,并作为函数返回值.链表如下.struct NODE{int data;NODE *next;};int min(NODE *first){NODE *p;int m;p=first;m=p->data;for(p=p->next;p!=NULL;p= p->next )if(m> p->data )m=p->data;return m;}2.(3*2分=6分)以下程序求二维数组的平均值float average(float (*p)[4],int n){float sum=0;for(int i=0; i<n ;i++){for(j=0;j<4;j++)sum+= (*p)[j] 或 *(*p+j) ;p++;}return sum/(n*4);}void main( ){ float score[3][4]={{56,65,70,76},{89,97,52,81},{90,99,91,86}};printf(”平均值=%f ”,average(score, 3 ));}3. (2*3.5分=7分)以下程序实现将以L 为头指针的链表逆置(设结点个数n>2),即将链表头当链表尾,链表尾当链表头。

实验8-1 指针基本概念

实验8-1 指针基本概念

实验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语言指针测试题

全国计算机等级考试二级C语言指针测试题

全国计算机等级考试二级C语言指针测试题一、选择题(1)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是A)*p=*q;B)p=q;C)*p=&n1;D)p=*q;(2)若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是A)随机值B)0C)x的地址D)p的地址(3) 以下定义语句中正确的是A) char a='A'b='B'; B) float a=b=10.0;C) int a=10,*b=&a; D) float *a,b=&a;(4) 有以下程序main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=p; p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序运行后的输出结果是A) 8,7,8,7B) 7,8,7,8C) 8,7,7,8D) 7,8,8,7(5) 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是A) scanf(“%d”,pa) ;B) scanf(“%d”,a) ;C) scanf(“%d”,&pa) ;D) scanf(“%d”,*pa) ;(6) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是A) p=1;B) *q=2;C) q=p;D) *p=5;(7) 有以下程序以下是引用片段:void fun(char *a, char *b){ a=b; (*a)++; }main (){ char c1=’A’, c2=’a’, *p1, *p2;p1=&c1; p2=&c2; fun(p1,p2);printf(“%c%c\n”,c1,c2);}程序运行后的输出结果是A) AbB) aaC) AaD) Bb(8) 若程序中已包含头文件stdio.h, 以下选项中,正确运用指针变量的程序段是A) int *i=NULL; B) float *f=NULL;scanf("&d",f); *f=10.5;C) char t="m", *c=&t; D) long *L;*c=&t; L=‘\0’;(9) 有以下程序以下是引用片段:#inc1udemain(){ printf("%d\n", NULL); }程序运行后的输出结果是A) 0B) 1C) -1D) NULL没定义,出错(10) 已定义以下函数int fun (int *p){ return *p: }该函数的返回值是A) 不确定的值B) 形参p中存放的值C) 形参p所指存储单元中的值D) 形参p的地址值(11) 下列函数定义中,会出现编译错误的是A) max(int x, int y,int *z) B) int max(int x,y){ *z=x>y ? x:y; } int z ;z=x>y ? x:y;return z ;}C) max (int x,int y) D) int max(int x,int y){ int z; { return(x>y?x:y) ; }z=x>y?x:y; return(z);}(12) 有以下程序段以下是引用片段:main(){ int a=5, *b, **c;c=&b; b=&a;……}程序在执行了c=&b:b=&a;语句后,表达式:**c的值是A) 变量a的地址B) 变量b中的值C) 变量a中的值D) 变量b的地址(13) 有以下程序以下是引用片段:main(){ char a,b,c,*d;a=’\’; b=‘\0xbc’;c=‘\xab’; d="\0127";printf("%c%c%c%c\n",a,b,c,*d);}编译时出现错误,以下叙述中正确的是A) 程序中只有a=’\’;语句不正确B) b=‘\0xbc’;语句不正确C) d="\0127";语句不正确D) a=’\’;和c=‘\0xab’;语句都不正确(14) 若有以下定义和语句以下是引用片段:#includeint a=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则以下选项中错误的语句是A) *q=0;B) w=p;C) *p=a;D) *p=*w;(15) 有以下程序以下是引用片段:int *f(int *x,int *y){ if(*x<*y)return x;elsereturn y;}main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(“%d,%d,%d”,*p,*q,*r);}执行后输出结果是A) 7,8,8B) 7,8,7C) 8,7,7D) 8,7,8(16) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是A) p=q;B) *p=*q;C) n=*q;D) p=n;(17) 有以下程序以下是引用片段:void fun(char *c,int d){ *c=*c+1;d=d+1;printf(“%c,%c,”,*c,d);}main(){ char a=’A’,b=’a’;fun(&b,a); printf(“%c,%c\n”,a,b);}程序运行后的输出结果是A)B,a,B,aB) a,B,a,BC) A,b,A,bD) b,B,A,b(18) 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A) scanf("%d%d%d",&a,&b,d);B) scanf("%d%d%d",&a,&b,&d);C) scanf("%d%d%d",a,b,d);D) scanf("%d%d%d",a,b,*d);(19) 若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为A) 无确定值B) a的地址C) 512D) 511(20) 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是A) i=*p;B) p*=*&j;C) i=&j;D) i=**p;(21) 下列程序段的输出结果是A) 2 1 4 3B) 1 2 1 2C) 1 2 3 4D) 2 1 1 2以下是引用片段:void fun(int *x, int *y){ printf(“%d %d”, *x, *y); *x=3; *y=4;}main(){ int x=1,y=2;fun(&y,&x);printf(“%d %d”,x, y);}(22) 下列程序的运行结果是A) 6 3B) 3 6C) 编译出错D) 0 0以下是引用片段:void fun(int *a, int *b){ int *k;k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf(“%d %d”, a, b);}(23) 有如下程序段int *p,a=10,b=1p=&a; a=*p+b;执行该程序段后,a的值为A) 12B) 11C) 10D) 编译出错(24) 有以下函数char fun(char *p){ return p; }该函数的返回值是A) 无确切的值B) 形参p中存放的地址值B) 一个临时存储单元的地址D) 形参p自身的地址值(25) 请选出正确的程序段A) int *p; B) int *s, k;scanf("%d",p); *s=100;……C) int *s, k; D) int *s, k;char *p, c; char *p, e;s=&k; s=&k;p=&c; p=&c;*p='a'; s=p;…*s=1;…(26) 若有以下定义和语句:double r=99,*p=&r;*p=r;则以下正确的叙述是A) 以下两处的*p含义相同,都说明给指针变量p赋值B) 在"double r=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元C) 语句"*p=r;"把变量r的值赋给指针变量pD) 语句"*p=r;"取变量r的值放回r中(27) 以下程序运行后,a的值是A) 4 B) 1 C) 0 D) 运行时出错,a无定值以下是引用片段:main(){ int a,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}(28) 有以下程序以下是引用片段:int fun(int x,int y,int *cp,int *dp){ *cp=x+y; *dp=x-y; }main(){ int a, b, c, d;a=30; b=50;fun(a,b,&c,&d);printf("%d,%d\n", c, d);}输出结果是A) 50,30B) 30,J50C) 80,-20D) 80,20(29) 若有定义和语句:int **pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);则输出结果是:A)10,20B)10,10C)20,10D)20,20(30) 以下程序的输出结果是以下是引用片段:#includesubl(char a,char b) {char c; c=a;a=b;b=c;}sub2(char* a,char b) {char c; c=*a;*a=b;b=c;}sub3(char* a,char*b) {char c; c=*a;*a=*b;*b=c;} { char a,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A) BABBABB) ABBBBAC) BABABAD) BAABBA(31) 若有说明:int i,j=7,*p=&i;,则与i=j;等价的语句是A) I= *P;B) *P=*&J;C) i=&j;D) i=* *p;(32) 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。

指针 练习题

指针 练习题

指针练习题指针是C语言中非常重要的概念之一。

掌握指针的使用和理解对于C语言程序的编写至关重要。

本文将介绍一些指针的练习题,帮助读者巩固对指针的理解和应用。

练习题一:交换变量的值请编写一个函数,使用指针作为参数,交换两个整型变量的值。

函数原型为:void swap(int* p1, int* p2);在主函数中调用该函数进行测试,并输出交换后的结果。

练习题二:查找数组中的最大值和最小值请编写一个函数,使用指针作为参数,实现在一个整型数组中查找最大值和最小值的功能。

函数原型为:void findMinMax(int* arr, int size, int* max, int* min);其中,arr表示整型数组的首地址,size表示数组的大小,max和min分别表示最大值和最小值的指针。

在主函数中调用该函数进行测试,并输出最大值和最小值。

练习题三:统计字符出现次数请编写一个函数,使用指针作为参数,统计一个字符串中某个字符的出现次数。

函数原型为:int countChar(char* str, char ch);其中,str表示字符串的首地址,ch表示要统计的字符。

在主函数中调用该函数进行测试,并输出字符出现的次数。

练习题四:字符串反转请编写一个函数,使用指针作为参数,将一个字符串进行反转。

函数原型为:void reverseString(char* str);其中,str表示字符串的首地址。

在主函数中调用该函数进行测试,并输出反转后的字符串。

练习题五:动态分配内存并初始化请编写一个函数,使用指针作为参数,动态分配一块内存,并将其中的每个元素初始化为给定的初始值。

函数原型为:int* initArray(int size, int initialValue);其中,size表示要分配的内存块的大小,initialValue表示初始化的值。

在主函数中调用该函数进行测试,并输出分配的内存块中的元素。

通过以上的练习题,读者可以进一步巩固和提升对指针的理解和应用。

测试使用指南针定位和导航的能力练习题

测试使用指南针定位和导航的能力练习题

测试使用指南针定位和导航的能力练习题在户外探险、山地徒步或野外露营等活动中,正确使用指南针是必不可少的技能。

指南针可以帮助我们定位和导航,确保我们顺利找到目的地。

本文将向您介绍一些测试使用指南针定位和导航的能力练习题,通过这些练习题的实践,您将能够提高自己的导航能力。

练习一:确定真北在使用指南针进行定位和导航之前,首先要确定真北的方向。

请您找到一个开阔的空地,然后按照以下步骤进行实践:1. 将指南针平放在您的手掌上,确保指南针不受其他金属物体的干扰。

2. 缓慢旋转指南针,观察指南针指针的行为。

3. 注意指针的方向。

当指针停止晃动并稳定在一个方向时,该方向就是指南针的真北。

通过这个练习,您可以更好地了解指南针的基本原理,并能够准确地确定真北的方向。

练习二:确定方位角在户外活动中,我们常常需要确定自己相对于目标方向的方位角。

下面是一个练习,以帮助您熟悉确定方位角的过程:1. 假设您的目标方向是东北方向,请将指南针放置在您的手掌上。

2. 转动身体,使您面向东北方向,并保持指南针水平。

指南针方向与您面朝的方向应一致。

3. 观察指北针指针的位置。

假设指针指向东方,则您与东北方向的相对角度为45度。

通过这个练习,您可以锻炼自己估算方位角的能力,并提高在实际导航中的准确性。

练习三:使用指南针进行定位在实际使用指南针进行定位时,您需要综合考虑地图和地形等因素。

下面是一个练习,旨在帮助您将指南针与地图结合使用:1. 如果您拥有一张地图,请将地图展开,并找到您当前所在的位置和目标位置。

2. 在地图上找到两个具有明显方位特征的地标,例如山峰、河流等,并标记它们。

3. 用指南针测量您当前所在位置与第一个地标之间的方位角,并在地图上画一条标记线。

4. 用指南针测量第一个地标与目标位置之间的方位角,并在地图上画一条标记线。

5. 交叉点即为您应该前往的方向。

通过这个练习,您可以掌握如何利用指南针和地图相结合进行准确定位的技巧。

全国计算机等级考试二级C语言指针测试题范文

全国计算机等级考试二级C语言指针测试题范文

全国计算机等级考试二级C语言指针测试题一、选择题(1)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是A)*p=*q;B)p=q;C)*p=&n1;D)p=*q;(2)若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是A)随机值B)0C)x的地址D)p的地址(3) 以下定义语句中正确的是A) char a='A'b='B'; B) float a=b=10.0;C) int a=10,*b=&a; D) float *a,b=&a;(4) 有以下程序main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=p; p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序运行后的输出结果是A) 8,7,8,7B) 7,8,7,8C) 8,7,7,8D) 7,8,8,7(5) 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是A) scanf(“%d”,p a) ;B) scanf(“%d”,a) ;C) scanf(“%d”,&pa) ;D) scanf(“%d”,*p a) ;(6) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是A) p=1;B) *q=2;C) q=p;D) *p=5;(7) 有以下程序以下是引用片段:void fun(char *a, char *b){ a=b; (*a)++; }main (){ char c1=’A’, c2=’a’, *p1, *p2;p1=&c1; p2=&c2; fun(p1,p2);printf(“%c%c\n”,c1,c2);}程序运行后的输出结果是A) AbB) aaC) AaD) Bb(8) 若程序中已包含头文件stdio.h, 以下选项中,正确运用指针变量的程序段是A) int *i=NULL; B) float *f=NULL;scanf("&d",f); *f=10.5;C) char t="m", *c=&t; D) long *L;*c=&t; L=‘\0’;(9) 有以下程序以下是引用片段:#inc1udemain(){ printf("%d\n", NULL); }程序运行后的输出结果是A) 0B) 1C) -1D) NULL没定义,出错(10) 已定义以下函数int fun (int *p){ return *p: }该函数的返回值是A) 不确定的值B) 形参p中存放的值C) 形参p所指存储单元中的值D) 形参p的地址值(11) 下列函数定义中,会出现编译错误的是A) max(int x, int y,int *z) B) int max(int x,y){ *z=x>y ? x:y; } int z ;z=x>y ? x:y;return z ;}C) max (int x,int y) D) int max(int x,int y){ int z; { return(x>y?x:y) ; }z=x>y?x:y; return(z);}(12) 有以下程序段以下是引用片段:main(){ int a=5, *b, **c;c=&b; b=&a;……}程序在执行了c=&b:b=&a;语句后,表达式:**c的值是A) 变量a的地址B) 变量b中的值C) 变量a中的值D) 变量b的地址(13) 有以下程序以下是引用片段:main(){ char a,b,c,*d;a=’\’;b=‘\0xbc’;c=‘\xab’; d="\0127";printf("%c%c%c%c\n",a,b,c,*d);}编译时出现错误,以下叙述中正确的是A) 程序中只有a=’\’;语句不正确B) b=‘\0xbc’;语句不正确C) d="\0127";语句不正确D) a=’\’;和c=‘\0xab’;语句都不正确(14) 若有以下定义和语句以下是引用片段:#includeint a=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则以下选项中错误的语句是A) *q=0;B) w=p;C) *p=a;D) *p=*w;(15) 有以下程序以下是引用片段:int *f(int *x,int *y){ if(*x<*y)return x;elsereturn y;}main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(“%d,%d,%d”,*p,*q,*r);}执行后输出结果是A) 7,8,8B) 7,8,7C) 8,7,7D) 8,7,8(16) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是A) p=q;B) *p=*q;C) n=*q;D) p=n;(17) 有以下程序以下是引用片段:void fun(char *c,int d){ *c=*c+1;d=d+1;printf(“%c,%c,”,*c,d);}main(){ char a=’A’,b=’a’;fun(&b,a); pri ntf(“%c,%c\n”,a,b);}程序运行后的输出结果是A)B,a,B,aB) a,B,a,BC) A,b,A,bD) b,B,A,b(18) 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A) scanf("%d%d%d",&a,&b,d);B) scanf("%d%d%d",&a,&b,&d);C) scanf("%d%d%d",a,b,d);D) scanf("%d%d%d",a,b,*d);(19) 若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为A) 无确定值B) a的地址C) 512D) 511(20) 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是A) i=*p;B) p*=*&j;C) i=&j;D) i=**p;(21) 下列程序段的输出结果是A) 2 1 4 3B) 1 2 1 2C) 1 2 3 4D) 2 1 1 2以下是引用片段:void fun(int *x, int *y){ printf(“%d%d”, *x, *y); *x=3; *y=4;}main(){ int x=1,y=2;fun(&y,&x);printf(“%d%d”,x, y);}(22) 下列程序的运行结果是A) 6 3B) 3 6C) 编译出错D) 0 0以下是引用片段:void fun(int *a, int *b){ int *k;k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf(“%d%d”, a, b);}(23) 有如下程序段int *p,a=10,b=1p=&a; a=*p+b;执行该程序段后,a的值为A) 12B) 11C) 10D) 编译出错(24) 有以下函数char fun(char *p){ return p; }该函数的返回值是A) 无确切的值B) 形参p中存放的地址值B) 一个临时存储单元的地址D) 形参p自身的地址值(25) 请选出正确的程序段A) int *p; B) int *s, k;scanf("%d",p); *s=100;……C) int *s, k; D) int *s, k;char *p, c; char *p, e;s=&k; s=&k;p=&c; p=&c;*p='a'; s=p;…*s=1;…(26) 若有以下定义和语句:double r=99,*p=&r;*p=r;则以下正确的叙述是A) 以下两处的*p含义相同,都说明给指针变量p赋值B) 在"double r=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元C) 语句"*p=r;"把变量r的值赋给指针变量pD) 语句"*p=r;"取变量r的值放回r中(27) 以下程序运行后,a的值是A) 4 B) 1 C) 0 D) 运行时出错,a无定值以下是引用片段:main(){ int a,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}(28) 有以下程序以下是引用片段:int fun(int x,int y,int *cp,int *dp){ *cp=x+y; *dp=x-y; }main(){ int a, b, c, d;a=30; b=50;fun(a,b,&c,&d);printf("%d,%d\n", c, d);}输出结果是A) 50,30B) 30,J50C) 80,-20D) 80,20(29) 若有定义和语句:int **pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);则输出结果是:A)10,20B)10,10C)20,10D)20,20(30) 以下程序的输出结果是以下是引用片段:#includesubl(char a,char b) {char c; c=a;a=b;b=c;}sub2(char* a,char b) {char c; c=*a;*a=b;b=c;}sub3(char* a,char*b) {char c; c=*a;*a=*b;*b=c;} { char a,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A) BABBABB) ABBBBAC) BABABAD) BAABBA(31) 若有说明:int i,j=7,*p=&i;,则与i=j;等价的语句是A) I= *P;B) *P=*&J;C) i=&j;D) i=* *p;(32) 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。

日晷测试题

日晷测试题

日晷测试题1. 日晷是一种利用什么原理来测量时间的仪器?A. 太阳光的直射B. 地球的自转C. 月亮的周期D. 季节的变化2. 在北半球,日晷上的指针通常指向哪个方向?A. 南B. 北C. 东D. 西3. 以下哪个因素会影响日晷的准确性?A. 季节B. 地理位置C. 天气状况D. 所有以上选项4. 为什么在赤道地区,日晷的指针几乎与地面平行?A. 因为赤道地区太阳高度角较大B. 因为赤道地区太阳高度角较小C. 因为赤道地区地球自转速度较快D. 因为赤道地区太阳移动速度较快5. 如果你想要在南半球使用日晷,需要对日晷做哪些调整?A. 将指针方向改为指向北方B. 将指针方向改为指向南方C. 将日晷的盘面倾斜角度调整为与赤道相反D. 将日晷的盘面倾斜角度调整为与赤道相同6. 以下哪个时间段内,日晷的测量结果可能不准确?A. 正午时分B. 春分和秋分C. 夏至和冬至D. 日落时分7. 为什么日晷在极地地区不适用?A. 极地地区没有阳光B. 极地地区阳光直射时间太长C. 极地地区阳光直射时间太短D. 极地地区太阳高度角变化太大8. 古代文明中,哪个文明是最早使用日晷的?A. 古埃及文明B. 古希腊文明C. 古罗马文明D. 古中国文明9. 以下哪个是日晷的组成部分?A. 指针(gnomon)B. 钟面C. 摆锤D. 齿轮10. 为什么日晷不能在晚上使用?A. 因为晚上没有阳光B. 因为晚上日晷的指针会消失C. 因为晚上日晷的盘面会发光D. 因为晚上日晷的指针会转动正确答案:1. A2. A3. D4. A5. B6. D7. D8. A9. A10. A。

单片机复位时-堆栈指针sp-pc-psw-tmod-scon-p0-单片机测试题1

单片机复位时-堆栈指针sp-pc-psw-tmod-scon-p0-单片机测试题1

单片机测试题1一、填空题(每题1分,共10分)1.MCS-51是指单片机的()号,8031、8051是指单片机的()号。

2.MCS-51共有()条指令,可分为几种不同的寻址方式。

如:MOV A,@Ri 属于()寻址方式,MOV C, bit 属于()寻址方式。

3.单片机(计算机)在进行()运算的情况下应使用补码。

4.在程序状态字寄存器PSW中,CY与OV标志的状态可反应指令运算的结果,其中CY为进位(借位)标志,被用于()符号数加(减)运算;OV为溢出标志,被用于()符号数加(减)运算。

5.转移指令与调用指令的相同点是两种指令都是通过改变程序计数器PC的内容来实现转移的;不同点是,当执行调用指令时,它不仅能转移到某一指定地址处,而且当子程序执行到()指令后,它能自动返回到()指令处,而普通转移指令()能返回。

6.8031有两个16位可编程定时/计数器,其中定时作用是指对单片机()脉冲进行计数,而计数器作用是指对单片机()脉冲进行计数。

7.当P1口做输入口输入数据时,必须先向该端口的锁存器写入(),否则输入数据可能出错。

8.堆栈指针SP的内容将始终指示(),当单步执行了调用指令LCALL addr16后SP的内容将()改变。

9.完成不同数制间的转换:(10100101)二=()十;(11000011)二=()十六;(01010111)BCD =()十;(58)十 = )BCD;10.中断源的优先级别被分为高级和低级两大级别,各中断源的中断请求是属于什么级别是由()寄存器的内容决确定的。

二、选择题(每空2分,共40分)1.判断是否溢出时用PSW的()标志位,判断是否有进位时用PSW的()标志位。

A.CY B.OV C.P D.RS0 E.RS12、调用子程序、中断响应过程及转移指令的共同特点是()。

A.都能返回 B.都通过改变PC实现转移C.都将返回地址压入堆栈 D.都必须保护现场3.当单片机从8155接口芯片内部RAM的20H单元中读取某一数据时,应使用()类指令。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++测试(指针)学号姓名成绩一、选择题(每题1.5分,共24分)1.语句int a=10,*point=&a;其值不为地址。

A. pointB. &aC. &pointD. *point2.若p为指针变量,y为变量,则y = *p++;的含义是A.y=*p;p++ B.y=(*p)++ C.y=p;p++ D.p++;y=*p3.语句char str[]=‛visual C++‛;char *p=str;则p的值为A. ‛visual C++‛B.str的首地址C. \nD.‛v‛4.设有说明语句char *s[]={‚student‛,‛Teacher‛,‛Father‛,‛Month‛},*ps=s[2];执行语句:cout<<*s[1]<<’,’<<ps<<’,’<<*ps<<’\n’;则输出为A.T,Father,FB.Teaher,F,FatherC. Teacher,Father,FatherD.语法错,无输出5.下列说明或赋值语句,不正确的是A. char *p;p=‛Visual C++‛;B. char p1[12]={‘v’,’i’,’s’,’u’};C. char p2[12];p2=‛Visual C++‛D. char p3[]=‛Visual‛;6.现有int b[3][4],*p;p=(int *)b;若要指针p指向b[2][3],以下正确的是A.p+=3*4+3B.p+=2*4+3C. p+=(3*4+3)*sizeof(int)D.p+=(2*4+3)*sizeof(int)7.语句int i,*p1,**p2;以下语句语法不正确的是A.p1=&i;B. p2=&i;C.p2=&p1;D.i=’\0x23’;把结点b连接到结点a之后8.如下图结构体说明和变量的定义,p指向a,q指向变量b.下面不能..的语句是p.next=&b;C. p->next=&b;D.(*p).next=q;9.下面正确的语句是A. int a[3][4],(*p)[4]; p=a;B. int a[3][4],*p[4]; p=a;C. int a[3][4],*p; p=a;D. inta[3][4],**p;*p=a;10.下面不正确的语句是A.float *p;p=new float[3];B. int *p;p=new int[3](1,2,3);C. float *p;p=new float(3);D. int (*p)[4];p=new int[3][4];11.设有函数定义:int f1(void){return 100,150;}调用函数f1()时,A.函数返回值100B. 函数返回值150C. 函数返回二个值100和150D. 语句return 100,150;语法错.12.设有语句:int fun(char *,int &);char str[100];int k;则对函数fun的正确的调用形式是A.fun(str,&k)B.fun(str,k)C.fun(str[100],k)D.fun(str, &k)13.数组作为函数的形参时,把数组名作为实参,传递给函数的是A.该数组的首地址B. 该数组的元素个数C. 该数组中的各元素值D. 该数组的大小14.执行以下语句序列:则enum {Sun,Mon,Tue,Wed,Thu,Fri,Sat}c1,c2; //Ac1=Mon; //Bcout<<c1;A.输出1B.输出2C.输出0D. B行语法错15.执行以下语句序列:则char *p1=‛Speaking‛; //Achar *p2=‛English‛; //Bchar *p3=‛a piece of cake‛; //Cchar *str[]={p1,p2,p3}; //Dcout<<*(str[0]+1);A.输出EnglishB.输出SpeakingC.输出ED. D行语法错16.下列语句不正确的是A.const float Pi=3.1415;B.const float *p1;C.float count; float &k=count;D. float &k;二、填空题(共42分)1.(2*2分=4分)下面程序的运行结果为、void main( ){static int a[3][2]={{12},{14,16},{1,2}};int *p=a[1];cout<<*(p+1)<<endl;cout<<*(p+3)<<endl;}2.(2*2分=4分)若有以下程序段,则*(*(a+2)+1)的值为,*(*(p+1)+1)的值为static int b[3][2]={1,3,5,7,9,11};int (*p)[2];p=b;3.(1*4分=4分)下面程序的运行结果为#include<iostream.h>void sub(int *x,int i,int n){if(n<=i)sub(x,i,3*n);*x+=n++;}void main( ){int x=0;sub(&x,12,2);cout<<x;}4.(2*2分=4分)以下程序运行结果为_______ _____、void main(){char *p,*q;char str[]="Hello,World\n";q = p = str;p++;cout<<q<<endl;cout<<p<<endl;}5. (1*4分=4分)以下程序运行结果是_______ ___________ void main(){short ar[5]={1,2,3,4,5 };short * par=&ar[1];int i;for(i=0; i<4; i++){cout<<ar[i]<< par[i]<<*(ar+i);}}6.(2*2分=4分) 以下程序运行结果是_______ 、___________ void swap1(int &x,int &y){int t;t=x;x=y;y=t;}void swap2(int *x,int *y){int t;t=*x;*x=*y;*y=t;}void main( ){ int a=100,b=200;swap1(a,b);cout<<a<<’\t’<<b<<endl;swap2(&a,&b);cout<<a<<’\t’<<b<<endl;}7.(3*2分=6分)void fun(int n, int *s){ int f1,f2;if(n= =1||n= =2)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=2*f1+f2+1;cout<<f1<<’\t’<<f2<<’\n’;}}void main( ){ int x;fun(4,&x);cout<<‛x=‛<<x<<’\n’;}程序输出的第一行是第二行是最后一行是8. (3*2分=6分)void f(int *q1,int *q2,int *q3){*q3=*q1+*q2;}void main( ){ int i,j,a[3][3]={1,1},*p1=a[0],*p2=a[0]+1,*p3=a[0]+2;for(i=2;i<9;i++)f(p1++,p2++,p3++);for(i=0;i<3;i++){ for(j=0;j<3;j++)cout<<a[i][i]<<’\t’;cout<<’\n’;}}程序输出的第一行是第二行是最后一行是9.(2*3分=6分)int f(int x,int y){return x*y;}void main( ){ int i,j,(*fun)(int,int);fun=f;for(i=1;i<4;i++){ switch(i){case 1:case 2: j=(*fun)(i,i+1);break;case 3: j=(*fun)(i-1,i+2);break;}cout<<‛j=‛<<j<<’\n’;}}程序输出的第一行是第二行是最后一行是三、完善程序(共35分)1.(2*3分=6分)以下min函数的功能是:是在非空单向链表中查找结点数据域为最小的值,并作为函数返回值.链表如下.struct NODE{int data;NODE *next;};int min(NODE *first){NODE *p;int m;p=first;m=p->data;for(p=p->next;p!=NULL;p= )if(m> )m=p->data;return m;}2.(3*2分=6分)以下程序求二维数组的平均值float average(float (*p)[4],int n){float sum=0;for(int i=0; ;i++){for(j=0;j<4;j++)sum+= ;p++;}return sum/(n*4);}void main( ){ float score[3][4]={{56,65,70,76},{89,97,52,81},{90,99,91,86}};cout<<‛平均值=‛<<average( )<<endl;}3. (2*3.5分=7分)以下程序实现将以L 为头指针的链表逆置(设结点个数n>2),即将链表头当链表尾,链表尾当链表头。

如下图:提示:本算法的思想是,逐个地把L 的当前结点q插入新的链表头部,p 为新表表头.void reverse(NODE * L){p=L->next;q=p->next;;while(q!=NULL){p->next=L;L=p;p=q;;}p->next=L;L=p;}4. (3*2分=6分) 以下程序实现链表L 中删除第i 个元素(设1≤i ≤元素个数)void Delete(NODE *L,int i){NODE *p,*q;if(i= =1) {q=L;L=L->next; } //删除第一个元素elseL L{p=L;while(--i>1) ;q=p->next;; //删除第i个元素};}5. (4*2.5分=10分)设链表上结点的数据结构定义如下:struct PNODE{int x;PNODE *next;};设已建立了一条链表,h为链表首指针。

相关文档
最新文档