软件试题(C与C++基础)
- 格式:doc
- 大小:47.50 KB
- 文档页数:5
C语言试题库一、单项选择第一章 C语言概述(1)一个C程序的执行是从A、本程序的MAIN函数开始,到MAIN 函数结束。
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
C、本程序的MAIN函数开始,到本程序的最后一个函数结束。
D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。
(2)以下叙述正确的是A、在C程序中,MAIN函数必须位于程序的最前面。
B、 C程序的每行中只能写一条语句。
C、 C语言本身没有输入输出语句。
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
(3) C语言规定,在一个源程序中,MAIN主函数的位置是在:A、必须在最前面。
B、必须在系统调用的库函数的后面C、可以在任意位置。
D、必须在最后面(4)一个C程序是由:A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成(5)以下叙述不正确的是:A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个MAIN函数C、 C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面第二章数据类型、运算符与表达式(1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=( i=4, j=16, k=32)A、4B、16C、32D、52(2)下列四组选项中,均不是C语言键字的选项是A、define , IF, typeB、getc, char, printfC、include, scanf, caseE、 if, struct, type(3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,doB、float,1a0, _AC、b-a, goto, intD、_123, temp, INT(4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3B、3*a*e/bcC、3*a*e/b*cD、a*e/c/b*3(5)已知各变量的类型说明如下:int k, a, b;unsinged long w=5;double x=1.42;则以下不符合C语言语法的表达式是A、x%(-3)B、w+=-2;C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)第三章简单C程序设计(1)putchar函数可以向终端输出一个A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量值(2)若x,y均定义为int型,z定义为double 型,以下合法的scanf函数调用语句是A、scanf(“%d%lx,%le”,&x,&y,&z);B、scanf(“%2d*%d%lf”,&x,&y,&z);C、scanf(“%x%*d%o”,&x,&y,&z);D、scanf(“%x%o%6.2f”,&x,&y,&z);(3)当输入数据的形式为:25,13,10<回车>时,以下程序的输出结果为main(){int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);}A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值(4) 以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是A、int a=b=c=5;B、int a, b, c=5;C、a=5, b=5, c=5;D、a=b=c=5;(5) 若有以下定义,则正确的赋值语句是int a,b; float x;A、a=1, b=2;B、b++;C、a=b=5;D、b=int(x);第四章选择结构程序设计(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是A、(x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)B、(x>=1)││(x<=10) ││(x.>=200) ││(x<=210)C、(x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)D、(x>=1)││(x<=10)&& (x.>=200) ││(x<=210)(2)以下程序的运行结果是#include “stdio.h”main(){int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A、6,1B、2,1C、6,0D、2,0(3)请阅读以下程序:main(){int a=5 , b=0 , c=0;if (a+b+c) printf(“* * *\n”); else printf(“$ $ $\n”); }以上程序。
软件技术基础模拟试题(第二十四次省统考一、是非判断题(正确选填A,错误选填B(每小题1分,共10分1. 顺序表和线性链表的物理存贮形式都是顺序存贮。
( 12. 数据类型是某种程序设计语言中已实现的数据结构。
( 23. 如果通过软件测试没有发现错误,则说明软件是完全正确的。
( 34. 快速原型模型可以有效地适应用户需求的动态变化。
( 45. 不同进程之间的动作在时间上不能重叠。
( 56. 分区式存储管理能够进行存储空间共享。
( 67. 链接文件和索引文件都可以非连续存放。
( 78. 中断处理一般分为中断响应和中断处理两个步骤。
前者由软件实施,后者主要由硬件实施。
( 89. 在C++语言中,“重载”表达了最简单的多态性。
( 910.进程调度根据一定的调度算法,从等待队列中挑选出合适的进程。
( 10(参考答案:1~10:ABBAB BABAB二、单项选择题:(每小题1分,共5分1. 在数据结构中,一个存储结点存放一个(11 。
11 (A 数据项(B 数据元素(C 数据结构(D 数据类型2. 把逻辑地址转变为存储的物理地址的过程称作(12 。
12 (A 编译(B 连接(C 运行(D 重定位3. SPOOLing技术可以实现设备的(13 分配。
13 (A 虚拟(B 共享(C 独占(D 物理4. 允许用户把若干作业提交计算机系统集中处理的操作系统称为(14 。
14 (A 分时操作系统(B 实时操作系统(C 网络操作系统(D 批处理操作系统5. 进程从运行状态进入就绪状态的原因可能是(15 。
15 (A 被选中占有处理机(B 时间片用完(C 等待的事件已发生(D 等待某一事件(参考答案:BBADB软件技术基础模拟试题(第二十三次省统考一、是非判断题(正确选填A,错误选填B(每小题1分,共10分1. 数据在计算机内在中的表示是指数据的存储结构。
( 12. 能影响中断响应次序的技术是中断优先级和中断屏蔽。
( 23. 链表可以随机访问任意一个结点,而顺序表则不能。
软件技术基础模拟试题(第二十次省统考)一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1.数据元素是数据地基本单位,数据项是数据地最小单位.(对 a )2.栈是特殊地线性表,须用一组地址连续地存储单元来存储其元素.(错 b )3.引入虚拟存储技术后,逻辑内存总容量是由地址总线地位置确定地.(a对)4.编译程序是一种常用应用软件.(b错)5.顺序文件和链接文件地长度都可以动态变化.(b错)6.在文件系统中采用目录管理文件.(a对)7.允许多用户在其终端上同时交互地使用计算机地操作系统称为实时系统.(b错)8.程序.数据.和进程控制块是构成一个进程地三要素.(对 a )9.黑盒测试时,既要考虑程序地内部逻辑结构又要考虑其外部特性.(错b )10.软件地总体设计和详细设计都要用PAD图形工具.(错 b )(参考答案:1~10:ABABB ABABB)二、单项选择题:(每小题1分,共5分)1.允许用户把若干作业提交计算机系统集中处理地操作系统称为( D ).A 分时操作系统B 实时操作系统C 网络操作系统D 批处理操作系统2.分配到必要资源并获得了处理机时地进程地状态称为(B ).A 就绪状态B 执行状态C 等待状态D 阻塞状态3.利用通道技术可以在( C )之间直接交换数据.A 内存与CPUB CPU与外设C 内存与外设D 内存.CPU 和外设三者4.以下地准则中哪个不是软件设计地准则( A ).A 编程语言选择准则B 信息屏蔽准则C 结构化和模块化准则D 抽象准则5.有一数列:97 65 76 13 29 49 58 经过一趟排序后得到:65 97 13 76 29 49 58 请问使用地是何种排序方法?(C)A 简单插入排序B 冒泡排序C 2路归并排序D 快速排序(参考答案:DBCAC )软件技术基础模拟试题(第十九次省统考)一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1.在目前,用于保证软件质量地主要手段是进行软件测试.(对)2.使用DMA方式传送数据期间不需要CPU干预.(错)3.线性顺序队列会产生“假溢出”,而线性循环队列则不会.(对)4.对同一种算法,用高级语言编写地程序比用低级语言编写地程序运行速度快.(错)5.在线性表中,数据地存储方式有顺序和链接两种.(错)6.进程由程序块.进程控件块和数据块三部分组成.(对)7.在面向对象地程序设计中,派生类只能从一个基类产生.(对)8.操作系统是用户和硬件地接口.(对)9.个人计算机中可配置地最大内存容量受地址总线位数地限制.(对)10.软件维护中最困难地问题是软件配置不全.(错)(参考答案:1~10:A.B.A.B.B.B.A.A.A.B)二、单项选择题:(每小题1分,共5分)1.在排序法中,从未排序序列中依次取出元素,与已排序序列中地元素作比较,将其放入已排序序列地正确位置称为(D ).A 选择排序B 快速排序C 插入排序D 冒泡排序2.有X.Y.Z三个元素依次入栈,不可能地出栈顺序是(B ).A Z,Y,XB Z,X,YC Y,X,ZD X,Y,Z3.进程地状态是可以转换地,而以下哪个状态转换是不可能地(D ).A 就绪状态-执行状态B 执行状态-就绪状态C 阻塞状态-就绪状态D 等待状态-执行状态4.线性链表地地址( D ).A 必须连续B 部分地址必须连续C 一定不连续D 连续与否均可以5.在软件测试中,(A)主要分析程序地内部结构.A 白盒法B 黑盒法C 因果图法D 错误推测法(参考答案:1~5:C.B.D.D.A)软件技术基础模拟试题(第十六次省统考)一.是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1.软件测试地目地是为了发现软件中地全部错误.(错)2.在树形结构中,每一层地数据元素只和上一层中地一个元素相关.(对)3.所谓共享设备是指可以分时地为多个作业服务地设备,打印机属于共享设备.(错)4.面向对象地程序设计地基本做法是将数据及对数据地操作放在一起,作为一个相互依存.不可分割地整体来处理.(对)5.高级程序设计语言C++是C语言地发展和扩充,它们都是结构化程序设计语言.错)6.文件管理系统只负责对系统文件和用户文件地组织和管理,它不负责对文件进行保护和故障恢复.(错)7.树形结构是用于描述数据元素之间地层次关系地一种线性数据结构.(错)8.进程地建立可以通过作业调度来实现.(对)9.进程间由于共享资源而产生地制约关系称为进程同步.(错)10.缓冲池是由多个缓冲区组成,一个系统可有一个或几个缓冲池,一个缓冲池可有多个缓冲区.(对)(参考答案:1~10:BABAB BBABA)二.单项选择题:(每小题1分,共5分)1.不属于面向对象程序设计地主要特性地是(C ).A 封装性B 重载与多态性C 数据地完整性D 继承性2.引入缓冲区地主要目地是( D ).A 节省内存B 提高CPU地利用率C 提高I/O设备地效率D 改善CPU和I/O设备间速度不匹配地情况3.要进行二分查找,则线性表(D).A 必须以顺序方式存储B 必须以链接方式存储C 必须以队列方式存储D 必须以顺序方式存储,且数据元素有序.4.在结构化程序设计中,应尽量避免使用( C ).A 条件语句B 循环语句C 转向语句D 输出语句5.在以下所列中不是虚拟设备技术地是( D ).A 多窗口技术B 脱机输出C 虚拟内存D 中断处理(参考答案:CDDCD)操作系统部分试题一、单选题:1.线程是进程地实体,意味着(②)①线程在进程中是唯一地②线程可以使用进程中地资源③线程在运行中不能中断④在同一进程中地多个线程具有不同地地址空间2.检测死锁地算法是在(④)①程序中申请资源时使用②死锁出现之后使用③死锁即将出现时使用④定时检查系统状态时使用3.在下列问题中,哪一个不是设备中应考虑地问题(④)①设备地固有属性②与设备无关性③安全性④及时性4.在下列哪一个不是外存分配方式(③)①连续分配②链接分配③互斥分配④索引分配5.联想存储器就是(①)①快表②页表③段表④内存6.磁盘为共享设备地主要原因是(①)①多个用户可同时访问磁盘②磁盘空间可让多个用户共享③磁盘可支持SPOOLING技术④磁盘有多个磁头7.指出以下非临界资源(④)①变量②数据结构③队列④纯代码8.进程被阻塞以后,代表进程在阻塞队列地是它地(②)①文件控制块②进程控制块③作业控制块④设备控制块9.在以下哪种状态下,作业已获得虚处理机.(②)①提交状态②运行状态③输入状态④输出状态10.进程调度程序地主要功能是(③)①在作业和作业之间切换CPU ②防止死锁③在进程和进程之间切换CPU ④实现进程之间地同步与互斥11.衡量系统地调度性能主要是(①)①作业地周转时间②作业地输入/输出时间③作业地等待时间④作业地响应时间12.批处理系统地主要缺点是(①)①无交互性②输入/输出设备利用率低③CPU利用率低④失去了多道性13.设备处理程序就是(②)①通道处理程序②I/O进程与设备控制器之间地通信程序③设备分配程序④缓冲管理程序14.AND信号量机制是为了(③)①信号量地集中使用②解决结果地不可再现性问题③防止系统地不安全性④实现进程地相互制约15.将硬盘信息存到内存之前地磁盘访问需要三个延迟时间,请按从最慢到最快地次序,正确选择访问数据地延迟时间.(④)①旋转延迟时间,快表地开销时间,寻道时间②快表地开销时间,旋转延迟时间,寻道时间③数据读出或写入磁盘时间,旋转延迟时间,寻道时间④寻道时间,旋转延迟时间,数据读出或写入磁盘时间16.使用访问位地目地是:(②)①实现LRU页面置换算法②实现NRU页面置换算法③在快表中检查页面是否进入④检查页面是否最近被写过17.可能出现抖动地存储管理方法有:(④)①固定式分区②动态分区分配③动态重定位分区分配④请求分页存储管理18.进程间地同步是指进程间在逻辑上地相互(②)关系.①联接②制约③继续④调用19.在操作系统中,用户使用I/O设备时,通常采用(②)①物理设备名②逻辑设备名③虚拟设备名④设备出厂号20.SPOOLING技术地实质是(2 ).①以空间换取时间②将独享设备改造为共享设备③在进程和进程之间切换设备④虚拟设备21.不是内核地基本功能(④)①中断处理②时钟管理③原语操作④命令接口22.给定一个连续文件有100个存储块,由于磁盘操作需要一块插入在文件中间,现已插入该块,该块地最小编号为多少?(③)① 2 ② 52 ③ 101 ④ 15123.资源地按序分配策略可以破坏哪个条件(④)①互斥使用资源②占有且等待资源③非抢夺资源④循环等待资源24.在各种作业调度算法中,若所有作业同时到达,则平均等待时间最短地算法是:(④)①FCFS/FIFO ②优先数③最高响应比优先④短作业优先25.不是由内核为之创建地进程(③)①用户登录②作业调度③应用请求④提供服务26.不能体现多处理机性能地描述(①)①管理科学,提高了单机地运行速度②增加了系统地吞吐量③性价比高④提高了系统地可靠性27.为了变换页表地整个空间,需要确定相应地一些(③)①页面和在进程中地段号②页面与在进程中地段号相乘③在物理存储器中地页帧④以上都不正确28. 若有一进程拥有100个线程,这些线程属于用户级线程,则在系统调度执行时间上占用(①)时间片.① 1 ② 100 ③1/100 ④ 029.能从一种状态转变为3种状态地是(④)①就绪②阻塞③完成④执行30.作业地周转时间与响应时间地时序关系是(④)①重叠地②相邻接地③有间隔地④不存在地31.下面哪一个不会引起进程创建 ( ③)①用户登录②作业调度③设备分配④应用请求32.不是同步机制应遵循地准则(④)①让权等待②空闲让进③忙则等待④AND条件33.死锁定理是用于处理死锁地那一种方法(③)①预防死锁②避免死锁③检测死锁④解除死锁34.当分配一通道给进程,由该进程传送完数据之后才能给别地进程占用,这种情况是属那一种通道类型.(② )①字节多通道②数组选择通道③数组多路通道④PIPE35.段式存储管理中,处理零头问题可采用(②)方法.①重定位②拼接③spooling技术④覆盖技术36.适合多道程序运行地存储管理中,存储保护是为了(④ )①防止一个作业占用同一个分区②防止非法访问磁盘文件③防止非法访问磁带文件④防止各道作业相互干扰37.分页存储管理中,主存地分配是(①).①以块为单位进行②以作业地大小分配③以物理段进行分配④以逻辑记录大小进行分配38.请求页式存储管理系统可能出现(①)问题.①抖动②不能共享③外零头④动态链接39.缓冲池管理中着重考虑地问题是(③).①选择缓冲区地大小②决定缓冲区地数量③实现进程访问缓冲池地同步④限制进程地数量40.设置当前目录地主要原因是(②).①节省主存空间②加快文件查找速度⑤节省辅存空间④便于打开文件41.建立多级目录(③).①便于文件地保护②便于关闭文件③解决文件地重名与共享④提高系统地效率42.各站点既可以作为客户去访问其它站点,又可以为其它站点服务,这种方式称为(③)①服务器模式②客户模式③对等模式④客户/服务器模式43.文件地顺序存取是(②).①按终端号依次存取②按文件地逻辑号逐一存取③按物理块号依次存取④按文件逻辑记录地大小逐一存取44.AND信号量机制是为了(③)①信号量地集中使用②解决结果地不可再现性问题③防止系统地不安全性④实现进程地相互制约45.使用修改位地目地是:(④)①实现LRU页面置换算法②实现NRU页面置换算法③在快表中检查页面是否进入④检查页面是否最近被写过46.通道程序是(②).①由一系列机器指令组成②由一系列通道指令组成③可以由高级语言编写④就是通道控制器47.在n个进程地分时系统中,其虚处理机地速度,约为单道系统地(②).①n倍② 1/n ③同等大小④ nq(注:q为是时间片)48.索引文件地主要优点是(①).①便于随机存取②提高辅存空间地利用率③便于顺序存取④减少开销49.分区地保护措施主要是(①).①界地址保护②程序状态保护③用户权限保护④存取控制表保护50.多道程序技术地实质就是(②).①程序地顺序执行②程序地并发执行③用户进程和系统进程地同时执行④多个处理机同时运行51.当输入输出操作正常结束时,操作系统将请求该操作地进程地状态设置成(③).①等待状态②运行状态③就绪状态④挂起状态52.关于作业调度地设计原则,不必考虑(①).①外设数据传输速度②平衡使用资源③公平④作业运行时间53.P操作(②).①只对二元信号量进行操作②可表示申请一个资源③可能唤醒一个进程④不能阻塞进程54.分页存储管理要求(②).①地址空间不必连续②地址空间必须连续③存储空间必须连续④作业地尺寸不能超过内存地容量55.段式存储管理比页式存储管理(①).①更便于共享②更有利于主存利用③更简单④更容易出现抖动现象56.通道程序是(②).①由一系列机器指令组成②由一系列通道指令组成③可以由高级语言编写④就是通道控制器57.缓冲池地概念是(④).①系统中同时存在单.双缓冲②系统中同时存在多个缓冲③系统中同时使用了各种缓冲技术④既能用于输入.又能用于输出地公用器58.在下列问题中,哪一个不是设备分配中应考虑地问题(④).①设备地固有属性②与设备地无关性③安全性④及时性59.死锁地检测是(③).①对系统资源分配加以限制,可以防止死锁②对系统资源分配加以限制,可以避免死锁③对系统资源分配不加以限制,定时地检测系统是否存在死锁加以解除④对系统资源分配不加以限制,采用静态分配方法,以避免死锁60.可变式分区存储管理策略常采用分配算法有(③).①优先数法②FCFS ③首次适应和最佳适应算法④循环扫描法61.某页式存储管理系统中,地址寄存器低9位表示页内位移量,则页面大小最多为(③)①1024字节②1024K字节③512字节④512K字节62.段式存储管理中,处理零头问题可采用(②)方法.①重定位②拼接③spooling技术④覆盖技术63.设置当前目录地主要原因是(②).①节省主存空间②加快文件查找速度③节省辅存空间④便于打开文件64.建立多级目录(③).①便于文件地保护②便于关闭文件③解决文件地重名与共享④提高系统地效率65.文件地顺序存取是(②).①按终端号依次存取②按文件地逻辑号逐一存取③按物理块号依次存取④按文件逻辑记录地大小逐一存取二. 判断题(每小题2分,共16分)1.(t )缓冲技术是以空间换时间,而且只能在设备使用均衡时起到平滑作用.2.( f )动态重定位与装入时动态链接在概念上是相同地.3.(t )在分时系统中采用虚拟存储技术可以改善响应时间.4.(t )在现代地分时系统中,逻辑处理机隐含了虚拟处理机地功能.5.(t )独享设备与共享设备地属性不同,其共享方式也不同.6.(t)采用AND型信号量机制是为了防止系统地不安全.7.(f )如果一个站点既可以作为客户,又可以作为服务器向其它站点提供服务,称为客户/服务器模式.8.(t )设备处理程序是I/O进程与设备控制器之间地通信程序.(正确:1.3.4.5.6.8 错误:2.7)1.()在段页式管理中,既有段表又有页表,就不能再使用快表了. 2.(t )实现虚拟存储器地关键技术是提供快速有效地自动地址变换地硬件机构和相应地软件算法.3.( f )一个操作系统地系统调用越多,系统地功能就越强,用户使用就越复杂.5.( t )作业调度程序本身作为一个进程在系统中执行,它是在系统初始化时被创建地.6.( t )响应比高者优先调度算法解决了长作业死等地问题. 7.( f )必须在分时系统地情况下,进程才能并发执行.8.( f )检测死锁地算法是按照死锁定理来实现地,必须在死锁发生时调用.9.( f )在引入线程地操作系统中,则把进程作为调度和分派地基本单位,而把线程作为资源拥有地基本单位.10.(t )虚拟存储器地最大容量是由主存和辅存地容量之和决定地.(正确:2.5.6.10 错误:1.3.7.8.9)1.( f )程序链接就是将程序调入内存.2.( f )线程是进程地实体,线程地控制块就是进程地控制块. 3.( f )命令解释程序是用于对选择地命令进行解释,以便用户了解其含义,而不是执行命令.4.( f )应用程序可通过终端窗口向用户展示系统所提供地各种服务及其需要用户输入地信息.5.(f )通过采用死锁定理地原则能够找到进程地安全序列. 6.( f )作业地周转时间包含有响应时间.7.( f )在存储器管理中,采用了重定位技术实现虚拟存储管理,因此虚拟存储空间可以无限大.8.(t )设备管理是通过一些数据结构来实现对其设备进行管理和控制地.9.( f)目录级安全管理,是为保护系统中地各种目录而设计地,它与用户权限无关.10.( t )控制器能接收CPU发来地命令,并去控制I/O设备工作.它是驱动程序所依赖地硬件之一.(正确:8.10 错误:1.2.3.4.5.6.7.9)1.( f )可变式分区采用紧凑技术,可构成大地空白存储区2.( f )多级反馈队列调度算法是属静态优先权调度算法.3.( f )静态链接需要共享目标模块地拷贝,而动态链接不需要共享目标模块地拷贝.4.( f )在页面置换算法中, 最近最久不用页面置换算法LRU与简单地Clock置换算法是相同地.5.( f )设备控制器是可编址设备.当用于控制多台设备时,则具有多地址.6.(t )缓冲技术是以空间换取时间,而且只能在设备使用不均衡时起到平滑作用.7.( t )由系统通过逻辑设备表实现逻辑设备到物理设备地映射.当更换物理设备时,用户地程序不用改,仅修改逻辑设备表8( f )采用多级目录不能实现不同用户可使用不同名字,来访问系统中地同一个共享文件.9.( t )用户对文件地访问:将由用户访问表.目录访问权限及文件属性三者地权限所确定.10.( f )请求页式管理系统中,既可以减少外零头,又可以消除内零头.(正确:6.7.9 错误:1.2.3.4.5.8.10)1.并行是指两个或多个事件在同一时间间隔内发生,而并发性是指两个或多个事件在同一时刻发生.( f )2.响应比高者优先调度算法解决了长作业死等地问( t )3.程序地顺序执行具有顺序性,封闭性和不可再现性.( f )4.进程控制一般是由操作系统地内核来实现.( t )5.在引入线程地操作系统中,则把进程作为调度和分派地基本单位,而把线程作为资源拥有地基本单位.( f )(正确:2.4 错误:1.3.5)。
福建师范大学C语言程序设计考试题系别 _______ 班级 _______ 姓名_________ 学号________ 得分__________一、选择题(本大题共40个选项,每个选择项1.5分,共60分)1.在C语言中,合法的字符常数是【1】A)‘程序设计’ B)“程序设计”C)c D)‘\\’2.在C语言中,以下不正确的八进制或不正确的十六进制数是【2】A)090 B)0xABC)0xla D)-0163.执行int x=2,y=3;后表达式x=(y==3)的值是【3】A)0 B)1C)2 D)34.执行语句int a,b,c; a=(b=c=3, c++, b+=c);则a的值是【4】A) 3 B) 4C) 7 D) 115.在循环结构的循环体中执行break语句,其作用是【5】A) 结束本次循环,进行下次循环B) 继续执行break语句之后的循环体中各语句C) 跳出该循环体,提前结束循环D) 终止程序运行【6】main(){char s[]=”\’Address\’”;printf(%d\n”, strlen(s));}A) 9 B) 10C) 11 D) 12【7】main(){int a[]={2, 4, 6, 8, 10}, y=1, x;for(x=0; x<3; x++) y+=a[x+1];printf(“%d\n”, y);}A) 17 B) 18C) 19 D) 208.已定义char x[8]; int i;为了给x数组赋值,以下正确的语句是【8】A) x[8]=”Turbo C”; B) x=”Turbo C”;C) x[]=”Turbo C”; D) for(i=0; i<7; i++) x[i]=getchar();9.设int a[][4]={0, 0};则以下错误的描述是【9】A) 数组a的每个元素都可得到初值0B) 二维数组a的第一维大小为1C) 数组a的行数为1D) 只有元素a[0][0]和a[0][1]可得到初值0,其余元素得不到初值0 【10】fun3(int x){static int a=3;a+=x;return a;}main(){int k=2, m=1, n;n=fun3(k);n=fun3(m);printf(“%d\n”, n);}A) 3 B) 4C) 6 D) 911.以下四个运算符,按优先级由高到低的排列顺序是【11】A) ++ % += > B) % ++ > +=C) % += > ++ D) ++ % > +=【12】A) 在函数外部定义的变量是全局变量B) 在函数内部定义的变量是局部变量C) 函数的形参是局部变量D) 局部变量不能与全局变量同名13.“文件包含”预处理语句的使用形式中,当#include后面的文件名用“”括起时,寻找被包含的文件的方式为【13】A) 直接按系统设定的标准方式搜索目录B) 先在源程序所在目录搜索,再按系统设定的标准方式搜索C) 仅仅搜索源程序所在的目录D) 仅仅搜索当前目录14.设有语句int(*p)();则p是一个【14】A) 指向一维整型数组的指针变量B) 指针函数,该函数的返回值为指向整型变量的指针C) 指向函数的指针变量,该函数的返回值为整型D) 数组指针,它的每个元素都是一个可以指向整型变量的指针变量15.若有typedef float AR[5];AR a;则以下叙述正确的是【15】A) a是一个新类型名B) AR是一个实型数组C) AR是一个实型变量D) a是一个实型数组【16】A)整型、实型、逻辑型B)整型、实型、字符型、逻辑型C)整型、字符型、逻辑型D)整型、实型、字符型17.在C语言中,变量所分配的内存空间大小【17】A)均为一个字节 B)由用户自己定义C)由变量的类型决定 D)是任意的18.在C语言中,合法的整型常数是【18】A)-0x123 B)3.14159 C19.下列各变量均为整型,选项中不正确的C语言赋值语句是【19】A)i+=++i; B)i=j==k;C)i=j+=i; D)i=j+1=k;≤y≤z可用C语言的表达式表示为【20】A)(x<=y)&&(y<=z) B)(x<=y)and(y<=z)C)(x<=y<=z) D)(x<=y)&(y<z)21.若定义float a;现要从键盘输入a数据,其整数位为3位,小数位为2位,则选用【21】A)scanf(“%6f”,&a); B)scanf(“%”,a);C)scanf(“%”,&a); D)scanf(“%f”,a);【22】unsigned a=0356,b;b=~a|a<<2+1;printf(“%x\n”,b);A)ffba B)ff71 C)fff8 D)fc0223.要使以下程序的输出结果为4,则a和b应满足的条件是【23】main(){int s,t,a,b;scanf(“%d%d”,&a,&b);s=t=1;if(a>0) s += 1;if(a>b) t= s + t;elseif(a==b) t=5;else t=2*s;printf(“%d\n”,t);}A)a>0并且a<b B)a<0并且a<bC)a>0并且a>b D)a<0并且a<b24.若int i;则以下循环语句的循环执行次数是【24】for (i=2;i==0;) printf(“%d”,i--);A)无限次 B)0次C)1次 D)2次【25】main(){int i;for(i=100;i<200;i++){if(i%5==0) continue;printf(“%d\n”,i);break;}}A)100 B)101C)无限循环 D)无输出结果【26】int i=1,a[]={1,5,10,9,13,7};while(a[i]<=10) a[i++]+=2;for (i=0;i<6;i++) printf(“%d”,a[i]);A)2 7 12 11 13 9 B)1 7 12 11 13 7C)1 7 12 11 13 9 D)1 7 12 9 13 7“abcde”赋初值给字符数组,不正确的语句是【27】A)char s[]=“abcde”; B)char s[]={’a’, ’b’,’c’,’d’,’e’,’\0’};C)char s[]={“abcde”}; D)char s[5]= “abcde”;28.若变量c为char类型,能正确判断出c为小写字母的表达式是【28】A) 'a'<=c<= 'z' B) (c>= 'a')||(c<= 'z')C) ('a'<=c)and ('z'>=c) D) (c>= 'a')&&(c<= 'z')【29】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);}A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2【30】main(){ int i, k, a[10], p[3];k=5;for (i=0;i<10;i++) a[i ]=i;for (i=0;i<3;i++) p[i ]=a[i *(i+1)];for (i=0;i<3;i++) k+=p[i] *2;printf("%d\n",k);}A) 20 B) 21 C) 22 D)2331.当执行下面的程序时,如果输入ABC,则输出结果是【31】main(){ char ss[10]="1,2,3,4,5";gets(ss); strcat(ss, "6789"); printf("%s\n",ss);}A) ABC6789 B) ABC67 C【32】A) int a[2][3]={0}; B) int a[][3]={1,2,3,4,5};C) int a[2][3]={{1,2},{3,4},{5,6}}; D) int a[2][3]={{1},{3,4,5}};33.若int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是【33】A) 2 B) 3 C) 4 D)无确定值34.下面程序段的运行结果是【34】int a[2][3]={1,2,3},i,j;for(i=0;i<2;i++)for(j=0;j<3;j++){a[i][j]=a[i*j%2][j]+a[i][(i+j)%3];printf(“%d,”,a[i][j]);}A) 2,4,6,2,0,8, B) 1,2,3,0,0,0,C) 1,2,3,2,0,6, D) 2,4,6,2,0,6,35.下面程序段的运行结果是【35】int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12};printf(“%d\n”,a[2][1]);A) 2 B) 4 C) 7 D)836.定义一个结构体变量时,系统分配给它的内存大小是【36】A)各成员所需内存量的总和B)成员中占内存量最大者所需内存容量C)结构中第一个成员所需内存容量D)结构中最后一个成员所需内存容量37.若typedef char STRING[255];STRING s;,则s是【37】A)字符指针数组变量B)字符数组变量C)字符变量D)字符指针变量38.若已定义:int *p,a;,则语句p=&a;中的运算符“&”的含义是【38】A) 位与运算B) 逻辑与运算C) 取指针内容D)取变量地址39.若有定义char *p,ch;则不能正确赋值的语句组是【39】A)p=&ch;scanf(“%c”,p);B)p=(char *)malloc(1); *p=getchar();C)*p=getchar();p=&ch;D)p=&ch;*p=getchar();40.下面程序段的运行结果是【40】char s[]=“ABC”;int i;for(i=0;i<3;i++) printf(“%s”,&s[i]);A) ABC B) ABCABCABC C) AABABC D)ABCBCC1.下列叙述中正确的是A) C语言编译时不检查语法B) C语言的子程序有过程和函数两种C) C语言的函数可以嵌套定义D) C语言所有函数都是外部函数0.5 C) 2L D) '\72'3.下列选项中,合法的C语言关键字是A) V AR B) cher C) integer D) default4.设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为A) 不定值B) 4 C) 3 D) 15.下面程序段的运行结果是【5】float y=0.0,a[]={2.0,4.0,6.0,8.0,10.0},*p;int i;p=&a[1];fo r(i=0;i<3;i++) y+=*(p+i);printf(“%f\n”,y);A) 12.0000 B) 28.0000 C) 20.0000 D) 18.00006.下面程序段的运行结果是【6】char c[]={‘a’,‘b’,‘\0’,‘c’,‘\0’};printf(“%s\n”,c);A) ab c B) ‘a’‘b’C) abc D) ab7.下面程序段的运行结果是【7】char s[10],*sp=“HELLO”;strcpy(s,sp);s[0]=‘h’;s[6]=‘!’;puts(s);A) hELLO B) HELLO C) hHELLO! D) h!8.若有定义int a[3][5],i,j;(且0≤i<3,0≤j<5),则a[i][j]的地址不正确表示是【8】A) &a[i][j] B) a[i]+jC) *(a+i)+j D) *(*(a+i)+j)9.若有定义int *p[4];,则标识符p是一个【9】A) 变量的指针变量B) 指向函数的指针变量C) 指向有四个整数元素的一维数组的指针变量D)指针数组名,有四个元素,每个元素均为一个指向整型变量的指针10.若有定义char *language[]={“FORTRAN”, “BASIC”,“PASCAL”,“JA V A”, “C”};则language[2]的值是【10】A) 一个字符B) 一个地址C) 一个字符串D) 不确定11.C语言规定,函数返回值的类型由【11】所决定。
寰烁软件开发考试题姓名:分数:一、选择题(每题1分,总分56分)1.二进制语言是属于( )A.面向机器语言B.面向问题语言C.面向过程语言D.面向汇编语言2.下列语言中不属于面向过程的语言是( )A.高级语言B.低级语言C.C语言D.PASCAL语言3.下列字符中属于键盘符号的是( )A.\B.\nC. \tD. \b4.下列字符列中,不是用来表达转义字符是( )A.\\B.\'C.074D. \05.不是C语言提供的合法关键字是()A.switchB.beginC.caseD.default6.下列字符列中,能作为单个标识符是()lA.? aB. a=2C.a.3D. a___37.在C语言中,下列说法中错误的是()A.函数定义可以分为两个部分:函数说明部分和函数体B.主函数可以调用任何非主函数C.任何非主函数可以调用其它任何非主函数D.程序可以从任何函数开始执行8.下列字符列中,可以作为“字符串常量”的是( )A. ABCB. ABC”C.’abc’D.’a’9.在以字节存储字符的系统中,’\n ’在内存占用的字节数是( )A.1B.2C.3D.410.字符串”XyZ”在内存占用的字节数是( )A.3B.4C.6D.811.在以下字符列中,合法的长整型常数是( )A. OLB. 4962710C. 0.054838743D. 2.1869el012.一个char型数据,它的值在内存中存放的是()A.ASCll代码值B.BCD代码值C.内码值D.十进制代码值13.设变量 m,n,a,b,c,d均为以执行(m=a==)||(n=c==d)后,m,n的值是( )A.0,0B.0,1C.l,0D.1,114.设a为5,执行下列计算后,b的值不为2的是( )A. b=a/2B. b=6-(--a)C. b=a%2D. b=a<3?3:215.执行语句“x=(a=3,b=a--);”后,X,a,b的值依次为( )A.3,3,2B.2,3,2C.3,2,3D.2,3,316.设整型变量m,n,a,b,c,d均为1,执行“( m=a>b)&&(n=a>b)"后m,n的值是( )A.0,0B.0,lC.1,0D.1,l17. 设有代码“int a=3;”,则执行了语句“a+=a-= a*a;”后,变量a的值是( )A.3B. 0C. 9D. -1218.在以下一组运算符中,优先级最高的运算符是( )A.<=B.=C.%D.&&19.设整型变量i的值为3,则计算表达式i---i后表达式的值为( )A.0B.lC.2D.表达式出错20.设整型变量 a、b、c均为2,表达式 a+++b+++c++ 的结果是( )A.6B.9C.8D.表达式出错21.若已定义 x和 y为double类型,则表达式: x=l, y=x+3/2结果是( )A.lB.2C.2.0D.2.522.设a为整型变量,下列C表达式中,不能表达数学关系式:10A.10B.a==11||a==12|| a==13|| a==14C.a>10&&a<15D.!(a<=10)&&!(a>=15)23.下列表达式中,正确的C赋值表达式是( )A.a=7+b+C=a+7B. C=7+b++=a+7C.a=(7+b, b++, a+7)D. a= 7+b, c=a+724.若有以下定义: char a;int b;float c; double d;则表达式a*b+d-c 值的类型为( )A.floatB. intC. charD. double25.表达式“9!=7”的值是( )A.trueB.非0值C.0D.126.用十进制数表示表达式“12|012”的运算结果是( )A.1B.0C. 14D. 1627.设字符型变量 a=3,b=6,计算表达式 C=(a^b)<< 2后C的二进制值是( )A. 00011100B.00000111C. 00000001D. 0001010028.设 a,b和 c都是int型变量,且a=3,b=4,c=5,则下面的表达式中值为 0的是()A.’a’&&b’B.a<=bC.a||b+c&&b-cD. !((a<b)&&!c||1)29.设Ch是Char型变量,其值为’A’,则下面表达式的值是()ch=(ch>=’A’&&ch<=’Z’)?(ch+32):chA.’A’B.’a’C.’Z’D.’z’30.设有无符号短整型变量i、j、k,i值为013,j值为 OX13。
2024年软件资格考试程序员(基础知识、应用技术)合卷(初级)自测试题(答案在后面)一、基础知识(客观选择题,75题,每题1分,共75分)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、以下关于面向对象编程(OOP)的描述,哪项是错误的?A. 面向对象编程通过封装、继承和多态实现软件重用。
B. 在面向对象编程中,对象是数据和行为(方法)的封装。
C. 继承是面向对象编程中的一种机制,用于实现代码复用。
D. 面向对象编程中的类是对象的抽象,而对象是类的实例。
7、在面向对象编程中,以下哪个不是面向对象的基本特征?A. 封装B. 继承C. 多态D. 静态8、以下哪个不是Java中的数据类型?A. intC. booleanD. string9、在面向对象编程中,以下哪个原则强调的是将不同的职责分配给不同的对象,以降低对象之间的耦合度?A. 单一职责原则(Single Responsibility Principle,SRP)B. 开放封闭原则(Open/Closed Principle,OCP)C. 依赖倒置原则(Dependency Inversion Principle,DIP)D. 接口隔离原则(Interface Segregation Principle,ISP)11、以下哪个操作不是C语言中的基本输入输出函数?A. printf()B. scanf()C. getchar()D. putchar()13、题目:以下关于软件开发生命周期的说法中,错误的是:A. 软件开发生命周期包括需求分析、设计、编码、测试和维护阶段B. 需求分析阶段主要是确定用户需求,设计阶段是根据需求进行系统设计C. 编码阶段是将设计转换为程序代码,测试阶段是验证程序的正确性和性能D. 软件开发生命周期中,每个阶段都需要进行文档编写,但文档的详细程度不同15、题目:以下哪个选项不是Java中的基本数据类型?A. intB. floatD. String17、以下关于面向对象程序设计(OOP)的描述中,错误的是:A. 面向对象程序设计是一种程序设计范式,它将数据和行为封装在一起B. 面向对象程序设计中的对象具有属性和方法C. 在面向对象程序设计中,继承是实现代码复用的关键机制D. 面向对象程序设计中的多态是通过方法重载来实现的19、在面向对象编程中,以下哪个是封装的典型体现?A. 数据和方法的分离B. 数据的封装和私有化C. 类的继承D. 方法重载21、在软件开发过程中,以下哪个不是常见的软件开发模型?A. 水晶模型B. 瀑布模型C. V型模型D. 研发模型23、以下哪种说法不属于面向对象程序设计的基本特征?()A. 封装B. 继承C. 多态D. 静态25、在软件开发过程中,以下哪个阶段是需求分析的输出结果?A. 系统设计B. 系统测试C. 程序编码D. 系统实现27、以下哪个选项是关于面向对象编程(OOP)中继承的概念的正确描述?A. 继承允许一个类使用另一个类的成员变量和方法,而不需要重新定义。
浙江大学“程序设计基础-C”试题卷2001-2002学年春季学期考试时间: 2002年6月30日下午2:00-4:00注意:答题内容必须写在答题卷上,写在本试题卷上无效一.单项选择题(每题2分,共20分)1. C 语言程序的三种基本结构是顺序结构、选择结构和______结构。
A.递归B.转移C.循环D.嵌套2. 下列运算符中,优先级最高的是_____。
A.->B.++C.&&D.=3. 表达式!(x>0&&y>0) 等价于_____。
A.!(x>0)||!(y>0)B.!x>0||!y>0C.!x>0&&!y>0D.!(x>0)&&!(y>0) 4. 表达式sizeof("\nsum=%d\n") 的值是______。
A.8B.9C.10D.115. 以下选项中不正确的实型常量是_____。
A.0.23E B.2.3e-1 C.1E3.2 D.2.3e06. 表达式______的值不是1。
A.0?0:1B.5%4C.!EOF D.!NULL7. 数组定义为int a[11][11],则数组a 有_____个数组元素。
A.12B.144C.100D.1218. 对于以下的变量定义,表达式______是不正确的。
struct node {int j, k;} x, *p=&x;A.p->k=2B.(*p).k=2C.x.k=2D.x->k=29. 不正确的赋值或赋初值的方式是______。
A.char str[ ]="string";B.char str[10]; str="string";C.char *p="string";D.char *p; p="string";10. 设程序中不再定义新的变量,写出在函数main中可以使用的所有变量______。
工程化程序设计JAVA样题单选题1:命名Java 程序文件名时应( )。
A:与文件中任一类名相同即可。
B:如果一个文件中包含一个public类,文件的名字必须和该类名相同。
C:文件名可以任意命名。
D:以上都不对。
答案:B2:下面( )是具备缓冲功能的输入字节类。
A:FileInputStreamB:FilterInputStreamC:BufferedInputStreamD:StringInputStream答案:C3:在线程被实例化之后,可以通过调用( )方法使它转入可运行状态。
A:startB:runC:beginD:do答案:A4:下例说法( )正确。
A:一个程序中可以包括多个类B:一个源文件中只能有一个类C:一个源文件中可以有多个公共类D:一个源文件只能供一个程序使用答案:A5:下列( )方法可以给当前指针所在位置做一个标记。
A:public void reset()B:public void mark()C:public void tag()D:public void sign()答案:B6:一个进程内的基本调度单位称为( )。
A:作业B:信元C:进程上下文D:线程答案:D7:下面( )设备对应标准错误类对象System.err。
A:打印机B:显示器C:鼠标D:键盘答案:B8:对对象的理解错误的是( )。
A:对象由属性和行为两部分组成。
B:对象可以是一个人、地址、物品、事件、概念等。
C:万事万物皆可看做对象。
D:以上都不对答案:D9:要画一条从点(40,220)到点(200,220)的水平直线,应使用下列( )语句。
A:drawLine(40,220,200,220)B:drawLine(40,220)(200,220)C:drawLines(40,220,200,220)D:drawLines(40,220)(200,220)答案:A10:接口中定义的成员变量是( )。
A:由于是常量,定义的同时赋值。
C语⾔程序设计基础试题⼀及答案《程序设计基础》考试试卷⼀班级姓名学号____________⼀、选择题(20分)1.算法具有五个特性,以下选项中不属于算法特性的是(A)有穷性(B)简洁性(C)可⾏性(D)确定性2.以下选项中可作为C语⾔合法常量的是(A)-80. (B)-080 (C) (D)3.以下叙述中正确的是(A)⽤C语⾔实现的算法必须要有输⼊和输出操作(B)⽤C语⾔实现的算法可以没有输出但必须要有输⼊(C)⽤C程序实现的算法可以没有输⼊但必须要有输出(D)⽤C程序实现的算法可以既没有输⼊也没有输出4.以下不能定义为⽤户标识符是(A)Main (B) _0 (C) _int (D) sizeof5.以下选项中,不能作为合法常量的是(A) (B) (C)+4 (D)6.数字字符0的ASCII值为48,若有以下程序main(){char a='1',b='2';printf("%c,",b++);printf("%d\n",b-a);} 程序运⾏后的输出结果是(A)3,2 (B)50,2 (C)2,2 (D)2,507.有以下程序main(){int m=12,n=34;printf("%d%d",m++,++n); printf("%d%d\n",n++,++m);}程序运⾏后的输出结果是(A) (B) (C) (D)8.有以下语句:int b;char c[10];,则正确的输⼊语句是A)scanf("%d%s",&b,&c); B) scanf("%d%s",&b,c);(C)scanf("%d%s",b,c); D)scanf("%d%s",b,&c);9.有以下程序main(){int m,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p); } 若想从键盘上输⼊数据,使变量M中的值为123,N中的值为456,P中的值为789,则正确的输⼊是A)m=123n=456p=789 B)m=123 n=456 p=789 C)m=123,n=456,p=789 D)123 456 78910.有以下程序main(){int a,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,b); }程序运⾏后的输出结果是A)6,1 B)2,1 C)6,0 D)2,011.有以下程序main(){int i=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d %d %d\n",i,j,k);}程序运⾏后的输出结果是(A)1 2 3 (B)2 3 4 (C)2 2 3 (D)2 3 312.若整型变量a、b、c、d中的值依次为:1、4、3、2。
C/C++基础试题
一、请填写BOOL , float, 指针变量与“零值”比较的if 语句。
(10 分)提示:这里“零值”可以是0, 0.0 , FALSE 或者“空指针”。
例如int 变量n 与“零值”比较的if 语句为:
if ( n == 0 )
if ( n != 0 )
以此类推。
1、请写出BOOL flag 与“零值”比较的if 语句:
If(flag==FALSE)
If(flag!=FALSE)
2、请写出float x 与“零值”比较的if 语句:
If(x==0.0)
If(x!=0.0)
3、请写出char *p 与“零值”比较的if 语句:
If(p==NULL)
If(p!=NULL)
二、以下为Windows NT 下的32 位C++程序,请计算sizeof 的值(10 分)1、
char str[] = “Hello” ;
char *p = str ;
int n = 10;
请计算
sizeof (str ) = 6
sizeof ( p ) = 4
sizeof ( n ) =4
2、
void Func ( char str[100])
{
请计算
sizeof( str ) = 4
}
3、
void *p = malloc( 100 );
请计算
sizeof ( p ) = 4
三、简答题(25 分)
1、头文件中的ifndef/define/endif 干什么用?
答:防止重复引用
2、#include <filename.h> 和#include “filename.h”有什么区别?
答:#include <filename.h> 是只从标准库函数中查找名为filename.h的头文件;而#include “filename.h”是先从当前工程目录中查找名为filename.h的头文件,如果没找到再从标准库文件中查找。
3、const 有什么用途?(请至少说明两种)
答:(1)定义常量如:const int num=30;
(2) 定义常指针如:const int *p=&num
4、在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”声明?
答:做外部调用声明,不然程序执行时会找不到该函数而报错;
5、请简述以下两个for 循环的优缺点
// 第一个
for (i=0; i<N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
优点:可读性好
缺点:每次都进行判断,浪费时间
// 第二个
if (condition)
{
for (i=0; i<N; i++)
DoSomething();
}
else
{
for (i=0; i<N; i++)
DoOtherthing();
}
优点:可读性差
缺点:程序的执行效率高
四、有关内存的思考题(20 分)
1、
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
请问运行Test 函数会有什么样的结果?
答:动态内存分配成功,单位传给主函数中的str,石头人仍是空指针
2、
char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test 函数会有什么样的结果?
答:输出随机的字符,GetMemory()被调用之后,分配的内粗就会被释放。
3、
V oid GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test 函数会有什么样的结果?
答:输出hello
4、
void Test(void)
{
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL)
{
strcpy(str, “world”);
printf(str);
}
}
请问运行Test 函数会有什么样的结果?
答:输出world
五、编写strcpy 函数(10 分)
已知strcpy 函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。
(1)不调用C++/C 的字符串库函数,请编写函数strcpy
(2)strcpy 能把strSrc 的内容复制到strDest,为什么还要char * 类型的返回值?
答:(1)char *strcpy(char *strDest, const char *strSrc)
{
int i;
for (i=0;strSrc[i]!=‟\0‟;i++)
{
strDest[i]= strSrc[i];
}
}
(2)为了实现链式表达式
六、编写类String 的构造函数、析构函数和赋值函数(25 分)
已知类String 的原型为:
class String
{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~ String(void); // 析构函数
String & operate =(const String &other); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
请编写String 的上述4 个函数。
String::String(const char *str)
{
if ( str == NULL )
{
m_data = new char[1] ;
m_data[0] = …\0′ ;
}
else
{
m_data = new char[strlen(str) + 1];
strcpy(m_data,str);
}
}
String::String(const String &another)
{
m_data = new char[strlen(another.m_data) + 1];
strcpy(m_data,other.m_data);
}
String& String::operator =(const String &rhs)
{
if ( this == &rhs)
return *this ;
delete []m_data; //删除原来的数据,新开一块内存
m_data = new char[strlen(rhs.m_data) + 1];
strcpy(m_data,rhs.m_data);
return *this ;
}
String::~String()
{
delete []m_data ;
}。