image

编辑人: 青衫烟雨

calendar2025-06-05

message8

visits949

数据结构、算法、C语言基础笔试题(带答案)

  1. 单项选择题
  1. 树是结点的集合,它的根结点数目是
    A) 有且只有1     
    B) 1或多于1
    C) 0或1       
    D) 至少2

  2. 程序设计语言的基本成分是数据成分、运算成分、控制成分和
    A) 对象成分      
    B) 变量成分
    C) 语句成分      
    D) 传输成分

  3. 下列不属于软件工程的3个要素的是
    A) 工具       
    B) 过程
    C) 方法       
    D) 环境
    正确答案:  D

  4. 数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及
    A) 数据的存储结构    
    B) 计算方法
    C) 数据映象       
    D) 逻辑存储
    正确答案:  A

  5. 在计算机中,算法是指
    A) 加工方法      
    B) 解题方案的准确而完整的描述
    C) 排序方法      
    D) 查询方法
    正确答案:  B

  6. 开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作
    A) 软件投机      
    B) 软件危机
    C) 软件工程      
    D) 软件产生
    正确答案:  B

  7. 下面不属于软件设计原则的是
    A) 抽象       
    B) 模块化
    C) 自底向上      
    D) 信息隐蔽
    正确答案:  C

  8. 开发大型软件时,产生困难的根本原因是
    A) 大系统的复杂性    
    B) 人员知识不足
    C) 客观世界千变万化    
    D) 时间紧、任务重
    正确答案:  A

  9. 单个用户使用的数据视图的描述称为
    A) 外模式      B) 概念模式
    C) 内模式      D) 存储模式
    正确答案:  A

  10. SQL语言又称为
    A) 结构化定义语言    
    B) 结构化控制语言
    C) 结构化查询语言    
    D) 结构化操纵语言
    正确答案:  C

  11. 将E-R图转换到关系模式时,实体与联系都可以表示成
    A) 属性       
    B) 关系
    C) 键       
    D) 域
    正确答案:  B

  12. 下列SQL语句中,用于修改表结构的是
    A) ALTER      
    B) CREATE
    C) UPDATE      
    D) INSERT
    正确答案:  A

  13. 数据库、数据库系统和数据库管理系统之间的关系是
    A) 数据库包括数据库系统和数据库管理系统
    B) 数据库系统包括数据库和数据库管理系统
    C) 数据库管理系统包括数据库和数据库系统
    D) 3者没有明显的包含关系
    正确答案:  B

  14. 关系模型允许定义3类数据约束,下列不属于数据约束的是
    A) 实体完整性约束    
    B) 参照完整性约束
    C) 域完整性约束     
    D) 用户自定义的完整性约束
    正确答案:  C

  15. 假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为
    A) log2n       
    B) n2
    C) O(n1..5)       
    D) n(n-1)/2
    正确答案:  D

  16. 算法分析的目的是
    A) 找出数据结构的合理性   
    B) 找出算法中输入和输出之间的关系
    C) 分析算法的易懂性和可靠性  
    D) 分析算法的效率以求改进
    正确答案:  D

  17. 在单链表中,增加头结点的目的是
    A) 方便运算的实现
    B) 使单链表至少有一个结点
    C) 标识表结点中首结点的位置
    D) 说明单链表是线性表的链式存储实现
    正确答案:  A

  18. 如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是
    A) e3,e1,e4,e2      
    B) e2,e4,e3,e1 
    C) e3,e4,e1,e2      
    D) 任意顺序
    正确答案:  B

     

  19. 软件开发离不开系统环境资源的支持,其中必要的测试数据属于
    A) 硬件资源      
    B) 通信资源
    C) 支持软件      
    D) 辅助资源
    正确答案:  D

  20. 分布式数据库系统不具有的特点是
    A) 数据分布性和逻辑整体性  
    B) 位置透明性和复制透明性
    C) 分布性      
    D) 数据冗余
    正确答案:  D

  21. 关系表中的每一横行称为一个
    A) 元组       
    B) 字段
    C) 属性       
    D) 码
    正确答案:  A

  22. 在下列C语言程序中,可以用做变量名的是( B )。

    A) 1

    B) a1

    C) int

    D) *p

  23. C语言提供的合法数据关键字是( A )。

    A) float

    B) Sagned

    C) Integer

    D) Char

  24. 以下符号中不能用作用户标识符的符号是( B )。

    A)_256 B)void

    C)scanf D)Struct

  25. 若k为int型变量,则以下语句( C )。

    k=8567;

    printf(“|%-06d|n”,k);

    A)输出格式描述不合法 B)输出为|008567|

    C)输出为|8567| D)输出为|-08567|

  26. sizeof(float)是( B )。

    A)一个双精度表达式 B)一个整型表达式

    C)一种函数调用 D)一个不合法的表达式

  27. 在C语言中, int、char和short三种类型数据在内存中所占用的字节数( D )。

    A)由用户自己定义 B)均为2个字节

    C)是任意的 D)由所用机器的机器字长决定

  28. 判断char型变量c1是否为小写字母的正确表达式为 ( D )。

    A) ‘a'<=c1<=’z’ B) (c1>=A. &&(c1<=’z’)

    C) (‘a’>=c1)||(‘z'<=c1) D) (c1>=’a’)&&(c1<=’z’)

  29. 以下叙述中正确的是( B )。

    A.a是实型变量,C语言允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值

    B.在赋值表达式中,赋值号右边即可以是变量也可以是任意表达式

    C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

    D.已有a=3,b=5当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3

  30. 表达式18/4*sqrt (4.0)/8值的数据类型为( C )。

    A)int B)float C)double D)不确定

  31. 下列运算符中,不属于关系运算符的是( C )。

    A) < B) > = C) !D) ! =

  32. 若希望当A的值为奇数时,表达式的值为真,A的值为偶数时,表达式的值为假,则以下不能满足要求的表达式是 ( C )。

    A) A%2= =1 B) !(A%2= =0) C) !(A%2) D) A%2

  33. 已知各变量的类型说明如下:

    int i=8,k,a,b;

    unsigned long w=5;

    double x=1.42,y=5.2;

    则以下符合C语言语法的表达式是( A )。

    A)a+=a-=(b=4)*(a=3)

    B)a=a*3=2

    C)x%(-3)

    D)y=float(i)

  34. 若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )。

    A)a=a+7; B)a=7+b+c,a++ C)int 12.3%4 D)a=a+7=a+b

  35. 逗号表达式(a=3*5,a*4),a+15的值为( C )。

    A)15 B)60 C)30 D)不确定

  36. 设Int n=3;则n++的结果是( B )。

    A)2 B)3 C)4 D)5

  37. 现已定义整型变量int i=1;

    执行循环语句while(i+ +<5);后,i的值为( B )。

    A)1 B)5 C)6 D)以上三个答案均不正确

  38. 设变量a是整型,f是实型,i是双精度型,则表达式10+’a’+i*f值的数据类型为( C )。

    A)int B)float C)double D)不确定

  39. 已知各变量的类型说明如下:

    int k,a,b;

    unsigned long w=5;

    double x=1.42

    则以下不符合C语言语法的表达式是( A )。

    A)x%(-3)

    B)w+=-2

    C)k=(a=2,b=3,a+b)

    D)a+=a-=(b=4)*(a=3)

  40. 若t为double类型,表达式t=1,t+5,t++的值是( D )。

    A)1 B)6.0 C)2.0 D)1.0

  41. 设n=10,i=4,则赋值运算 n%=i+1执行后,n的值是( A ).

    A) 0

    B) 3

    C) 2

    D) 1

  42. 设Int n=3;则有表达式++n,n的结果是( C )。

    A)2 B)3 C)4 D)5

     

     

  43. 现已定义整型变量int i=1;执行循环语句while(i+ +<5);后,i的值为( B )。

A)1 B)5 C)6 D)以上三个答案均不正确

  1. C语言程序的三种基本结构是(A)

    A、顺序结构,选择结构,循环结构 B、递归结构,循环结构,转移结构

    C、嵌套结构,递归结构,顺序结构D、循环结构,转移结构,顺序结构

  2. C语言规定,程序中各函数之间( A )
  3. A) 既允许直接递归调用也允许间接递归调用 B) 不允许直接递归调用也不允许间接递归调用C) 允许直接递归调用不允许间接递归调用 D) 不允许直接递归调用允许间接递归调用
  4. C语言中可处理的文件类型是( B )

    A) 文本文件和数据文件B)文本文件和二进制文件

    C) 数据文件和二进制文件 D)数据代码文件

  5. C语言可执行程序的开始执行点是( C )

    A) 程序中第一条可执行语句B) 程序中第一个函数

    C) 程序中的main函数 D) 包含文件中的第一个函数

  6. C语言中,运算对象必须是整型数的运算符是( A)

    A) % B) C) %和 D) * *

  7. C语言中函数返回值的类型是由( D )决定。

    A) return语句中的表达式类型B) 调用函数的主调函数类型

    C) 调用函数时临时D) 定义函数时所指定的函数类型

  8. C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为( D )

    A、该数组的长度。 B、该数组的元素个数。

    C、该数组中各元素的值。 D、该数组的首地址。

  9. C语言中数组下标的下限是( B )

    A、1 B、0 C、视具体情况 D、无固定下限

  10. 一个C语言的语句至少应包一个( C )

    A、{} B、逗号 C、分号D、什么不要

  11. 一个完整的C源程序是( B )

    A、要由一个主函数(或)一个以上的非主函数构成

    B、由一个且仅由一个主函数和零个以上(含零)的非主函数构成

    C、要由一个主函数和一个以上的非主函数构成

    D、由一个且只有一个主函数或多个非主函数构成

  12. 在C语言程序中,当do-while语句构成的循环中的条件为(A )时,结束循环。

    A、0 B、1 C、true D、非0

  13. 合法的C语言中,合法的长整型常数是(A )

    A) ‘t’ B) “A” C) 65 D) A

  14. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( D )

    A) 3 B) 6 C) 10 D) 20  

  15. 假定有以下变量定义: int k=7 ,x=12; 则能使值为3的表达式是( D )

    A x%=(k%=5) B x%=(k-k%5) C x%=k-k%5 D (x%=k)-(k%=5)

  16. 设有如下定义: int x=10,y=3,z; 则语句 printf(“%dn”,z=(x%y,x/y)); 的输出结果是( D )

    A) 1 B) 0 C) 4 D) 3、

  17. 一个软件项目是否进行开发的结论是在______文档中作出的。

A、软件开发计划     B、可行性报告     C.需求分析说明书    D.测试报告

  1. 需求分析是由分析员了解用户的要求,认真细致地调研。分析,最终应建立目标系统的逻辑模型并写出____。

A.模块说明书 B.软件规格说明书 C.项目开发计划 D.合同文档

  1. 需求分析说明书不能作为______。

A、可行性研究的依据    B.用户和开发人员之间的合同

C、系统概要设计的依据 D.软件验收测试的依据

  1. 请按顺序写出软件生命期的几个阶段____,____ ,____,____,____,____。

A.维护 B.测试 C.详细设计 D.概要设计 E.编码 F.需求分析

  1. 软件生存周期中,开发期间包括______阶段。

A.软件计划、结构设计、测试和运行维护 B.需求分析、概要设计、详细设计和编码

C.结构设计、编码、测试和运行维护 D.需求分析、结构设计、详细设计、编码和测试

  1. 下列哪个阶段不是软件生存期三个阶段中的内容( C )。

A. 计划阶段 B. 开发阶段 C. 编码阶段 D. 维护阶段

  1. 数据流图所描述的是实际系统的______。

A、逻辑模型    B、物理模型    C、程序流程     D.数据结核

  1. 数据流是数据流图的基本成分,下列关于数据流的叙述中,______ 是正确的。

A、某加工的输入是一个数据流,该加工的输出也必定是一个数据流

B、多个不同的数据流可以流向一个加工,也可从一个加工中流出

C、数据流只能从加工流向文件,但不能从文件流向加工

D、一个数据流可以从一个文件流向另一个文件

  1. 分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描述了系统的____。

A.总貌B.细节 C.抽象 D.软件的作者

  1. 经调查,系统分析员给出有问题的初略陈述,其中部分描述如下:某商场的采购部门要求每天开出定购清单,交采购员;仓库管理员将此要还应输入系统,经库存业务(进贷或出贷)处理后输出。从这段描述可知该部分数据流图中的外部项为:

A、采购员、仓库管理员 B、定购清单、库存业务

C、库存业务 D、定购清单、采购员

  1. 银行计算机储蓄管理信息系统中,根据客户提出的要求(如存款、取款、查询、挂失、咨询等)进行相应的业务处理的该层数据流图是______。

A、变换型 B、事务型 C、既不是A也不是B D、不一定

  1. 系统开发的需求分析阶段的重要工作之一是____。

A.数据定义        B.数据库设计        C.数据维护        D.数据结构实现

  1. 概要设计的结果是提供一份____。

A.模块说明书 B.框图 C.程序 D.数据结构

  1. 软件的____设计又称为总体设计,其主要任务是建立软件系统的总体结构。

A.概要        B.抽象        C.逻辑        D.规划

  1. 系统开发人员使用系统流程图或其他工具描述系统,估计每种方案的成本和效益的工作是在______阶段进行的。

A、需求分析 B、总体设计 C、详细设计 D、编码阶段

  1. 在软件的设计阶段应提供的文档是____。

A.软件需求规格说明书

B.概要设计规格说明书和详细设计规格说明书

C.数据字典及流程图

D.源程序以及源程序的说明书

  1. 软件总体结构的内容应在____文档中阐明。

A.软件需求规格说明书        B.概要设计规格说明书

C.详细设计规格说明书        D.数据要求规格说明书

  1. 模块本身的内聚是模块独立性的重要度量因素之一,在七类内聚中,具有最强内聚的一类是____。

A.顺序性内聚        B.过程性内聚    C.逻辑性内聚        D.功能性内聚

  1. 如果模块中所有成分引用共同的数据,该模块内的联系类型是____。

A.顺序内聚        B.功能内聚        C.通信内聚        D.过程内聚

  1. 某模块的功能是打印录取通知书或不录取通知书,调用模块可通过向此模块传递布尔标志信息决定本次调用哪种通知书的打印,这种模块之间的耦合称为____。

A.数据耦合        B.混合耦合        C.公共耦合        D.控制耦合

  1. 初始化模块和结束模块从块内联系看,被称为____模块。

A.过程内聚        B.功能内聚            C.时间内聚            D.逻辑内聚

  1. 设一模块内部的处理动作为:成分A的输出是成分B的输入,则该模块的聚合性称为______。

A、顺序内聚 B、功能内聚 C、过程内聚 D、通信内聚

  1. 某个模块的作用域是指______。

A、被该模块调用的所用模块 B、调用该模块的所有模块

C、与该模块相关联的所有模块 D、受该模块内的判定所影响的所有模块

  1. 一个模块直接控制(调用)的下层模块的数目称为模块的_______。

A、扇入数 B、扇出数 C、宽度 D、作用域

  1. 下列系统设计工具中,______不属于详细设计工具。

A、N—S图 B、数据流图 C、程序流程图 D、PAD

  1. 程序流程图、N-S图和PAD图是____使用的算法表达工具。

A.设计阶段的概要设计    B.设计阶段的详细设计

C.编码阶段                D.测试阶段

  1. 模块内部的算法设计在结构化方法的______阶段进行。

A、系统分析 B、概要设计 C、详细设计 D 编码(实现)

  1. 编码(实现)阶段得到的程序段应该是_______。

A、编辑完成的源程序 B、编译(或汇编)通过的可装配程序

C、可交付使用的程序 D、可运行程序

  1. 软件测试中设计测试实例(test case)主要由输入数据和____两部分组成。

A.测试规则                B.测试计划

C.预期输出结果                D.以往测试记录分析

  1. 软件测试中,白箱方法是通过分析程序的____来设计测试实例的方法,除了测试程序外,还适用于对____阶段的软件文档进行测试。黑箱方法是根据程序的____来设计测试实例的方法,除了测试程序外,它适用于____阶段的软件文档进行测试。

A.应用范围B.内部逻辑C.功能D.输入数据

A.编码B.软件详细设计C.软件概要设计D.需求分析

  1. ____是以发现错误为目的的,而____是以定位,分析和改正错误为目的的。

A.测试 B.排错(调试) C.维护 D.开发

  1. 下列所述的测试原则中,错误的是_______。

A、应设计非法输入的测试用例 B、测试用例要给出测试的预期结果

C、因维护修改程序后需回归测试 D、开发小组与测试小组合并

  1. 在软件工程中,当前用于保证软件质量的主要技术手段还是____。

A.正确性证明        B.测试        C.自动程序设计        D.符号证明

  1. 软件工程中,只根据程序的功能说明而不关心程序内部的逻辑结构的测试方法,称为____测试。

A.白盒法        B.灰盒法        C.黑盒法        D.综合法

  1. 月收入<=800元者免税,现用输入数800元和801元测试程序,则采用的是____方法。

A.边缘值分析    B.条件覆盖        C.错误推测        D.等价类

  1. 采用黑盒法测试程序是根据____。

A.程序的逻辑    B.程序的功能说明    C.程序中的语句        D.程序中的数据

  1. 采用白盒法测试模块(程序),应根据____。

A.内部逻辑结构        B.算法复杂度        C.外部功能特性        D.支撑环境

  1. 在软件测试中,确认(验收)测试主要用于发现____阶段的错误。

A.软件计划        B.需求分析        C.软件设计        D.编码

  1. 用黑盒法设计测试用例时采用的方法包括______。

A、判定覆盖法     B、条件覆盖法 C 、因果图法 D、路径分析法

  1. 现有一个计算类型的程序,它的输入只有一个Y,其范围是—50≤Y≤50。现从输入的角度考虑设计了一组测试用例:—100,100,0。设计这组测试用例的方法是_____。

A、条件覆盖法 B、等价分类法 C、边缘值分析法 D 、错误推测法

  1. 程序功能说明中指出:由三个输入数据表示一个三角形的三条边长。根据黑盒法中的边缘值分析法设计测试用例,应选_____。

A、a=3,b=4,c=5         B、a=1,b=2,c=4

C、上述A、B 项目都应选上        D、a=1,b=2,c=3

  1. 成功的测试是指______。

A.运行测试实例后未发现错误项    B.发现程序的错误

C.证明程序正确                    D.改正程序的错误

  1. 软件的维护是指____。

A.对软件的改进、适应和完善        B.维护正常运行

C.配置新软件                    D.软件开发期的一个阶段

  1. 软件的可维护性是指____。

A.软件的可理解程度,程序修改的难易程度

B.软件文档修改的难易程度

C.程序修改的难易程度

D.使用维护工具进行维护的难易程度

  1. 适应性维护的含义是____所进行的维护。

A.为使软件在改变了的环境下仍能使用

B.为改正在开发时期产生、测试阶段没有发现、运行时出现的错误

C.为改善系统性能、扩充功能

D.为软件的正常执行

  1. 软件维护过程中,______将会引起维护副作用。

A、修改代码或数据后未作测试 B、进行改正性维护时错误未全部改正

C、进行完善性、适应性或预防性维护时考虑因素不全面

D、维护过程中发生系统运行错误

  1. 如果按用户要求增加新功能或修改已有的功能而进行的维护工作,称为_____。

A、完善性维护 B、适应性维护 C、预防性维护 D、改正性维护

  1. 为软件系统今后改进和发展打好基础而进行的维护工作称为______。

A、改正性维护 B、适应性维护 C、完善性维护 D、预防性维护

  1. 某应用系统为今后的发展将单用户系统改为多用户系统,并形成新的应用软件,由此进行的维护工作称为______。

A、改正性维护和预防性维护 B、适应性维护和完善性维护

C、完善性维护和改正性维护 D、预防性维护和适应性维护

 

  1. 提高程序可读性的有力手段是______。

A、选好一种程序设计语言         B、显式说明一切变量

C、使用三种标准控制语句         D、给程序加注释

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 多选题
  1. 若在scanf函数语句中没有非格式字符作输入数据的间隔,则可用( ACD )。

作为输入数据的间隔。

A)空格        B)逗号 C)TAB         D)回车

  1. 使用scanf函数时,在源程序开头( ABC )。

A)书写#include “stdio.h”     B)书写#include <stdio.h>

C)不必写#include <stdio.h>    D)书写#include “scanf.h”

  1. 用十进制形式输入有符号整数时,在scanf函数语句里格式字符为( AB )。

    A)d B)i C)n D)u

  2. 在scanf函数语句中可用的修饰符有( ABCD )。

    A)*        B)h C)l D)宽度

  3. 以下选项中,合法的字符常量是()。

    A:’t’

    B:’17’

    C:”n”

    D:’xaa’

    答案:ABD

 

  1. 以下用户标识符,其中合法的是()。

    A:return

    B:f2_G3

    C:A3-3

    D:abc

 

答案:BD

 

  1. 以下可以定义为用户标识符的有()。

    A:scanf

    B:short

    C:_3com_

    D:int

     

    答案:AC

 

  1. 以下选项中合法的表达式是()。

    A:0<=x<100

    B:i=j==0

    C:(char)(65+3)

    D:x+1=x+1

     

    答案:ABC

 

  1. 以下不符合C语言语法的实型常量是()。

    A:1.2E0.5

    B:3.14.159E

    C:.5E-3

    D:E15

     

    答案:ABD

 

  1. 以下叙述中正确的是()。

    A:一个C源程序可由一个或多个函数组成

    B:一个C源程序必须包含一个main()函数

    C:C源程序的基本组成单位是函数

    D:在C源程序中,注释说明只能位于一条语句的最后

     

    答案:ABC

 

  1. 以下正确的if语句形式是()。

    A:if (x>y && x!=y);

    B:if (x==y) x+=y;

    C:if (x!=y) scanf(“%d”,&x) else scanf(“%d”,&y);

    D:if (x<y) {x++;y++;}

 

答案:ABD

 

  1. 以下选项中不是C语言合法整数的是()。

    A:10110

    B:0386

    C:0Xffa

    D:x2a2

     

    答案:BD

 

  1. 以下关于数组描述错误的是()。

    A:数组的大小是固定的,但可以有不同的类型的数组元素

    B:数组的大小是可变的,但所有数组元素的类型必须相同

    C:数组的大小是固定的,所有数组元素的类型必须相同

    D:数组的大小是可变的,可以有不同的类型的数组元素

     

    答案:ABD

 

  1. 以下描述正确的是()。

    A:使用while和do-while循环时,循环变量初始话的操作应在循环体语句之前完成

    B:while循环是先判断表达式,后执行循环语句

    C:do-while和for循环均是先执行循环语句,后判断表达式

    D:for,while和do-while循环中的循环体均可以由空语句构成

     

    答案:ABD

 

  1. 以下4个选项中,可以看作是一条语句的有()。

    A:{;}

    B:a=0,b=0,c=0;

    C:if(a>0);

    D:if(b==0) m=1;n=2;

     

    答案:ABC

 

  1. 设有以下定义

    int a=0;

    double b=1.25;

    char c=’A’;

    #define d 2

     

    则下面语句中正确的是()。

    A:a++;

    B:b++;

    C:c++;

    D:d++;

     

    答案:ABC

 

  1. 若a,b,c,d都是int型变量且初值为0,以下选项中正确的赋值语句是()。

    A:a=b=c=d=100;

    B:d++;

    C:c+b;

    D:d=(c=22)-(b++);

     

    答案:ABD

 

  1. 以下叙述正确的是()。

    A:C语言严格区分大小写英文字母

    B:C语言用”;”作为语句分隔符

    C:C程序书写格式自由,一行内可以写几个语句,一个语句也可以写在几行上.

    D:可以使用/*…*/对C程序中的任何部分作注释

     

    答案:ABCD

 

  1. 有定义语句:int x,y;若要通过scanf(“%d,%d”,&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的有()。

    A:11 12<回车>

    B:11,<空格>12<回车>

    C:11,12<回车>

    D:11,<回车> 12<回车>

     

    答案:BCD

 

  1. 下列对逻辑运算符两侧的运算对象的数据类型描述不正确的是()。

    A:只能是0或1

    B:只能是0或非0正数

    C:可以是整型或字符型数据

    D:可以是任何类型的数据

     

    答案:ABD

 

  1. 以下描述错误的是()。

    A:continue语句的作用是重新开始一次循环体的执行

    B:只能在循环体内和switch语句体内使用break语句

    C:在循环体内使用break语句和continue语句的作用相同

    D:从多重循环嵌套中退出是,只能使用goto语句

     

    答案:CD

 

  1. 已定义c为字符型变量,则下列语句中错误的是()。

    A:c=’97’;

    B:c=”97″;

    C:c=97;

    D:c=”a”;

     

    答案:ABD

 

  1. 下列选项中是C语言合法标志符的有()。

    A:good_morning

    B:main

    C:stdio.h

    D:8abc

 

答案:AB

 

  1. 以下不合法的赋值语句是()。

    A:x=y=100

    B:d–;

    C:x+y;

    D:c=int(a+b);

     

    答案:ACD

 

  1. 以下选项中不合法的字符常量是()。

    A:”B”

    B:’�10′

    C:68

    D:D

     

    答案:ACD

 

  1. 在定义int a[2][3];之后,对a的引用正确的有()。

    A:a[0][2]

    B:a[1,3]

    C:a[1>2][!1]

    D:a[2][0]

     

    答案:AC

 

  1. 以下对C语言中的函数描述不正确的有()。

    A:可以嵌套定义,不可以嵌套调用

    B:不可以嵌套定义,可以嵌套调用

    C:可以嵌套定义,也可以嵌套调用

    D:嵌套定义和嵌套调用都不允许

     

    答案:ACD

 

  1. 以下关于typedef的叙述正确的是()。

    A:用typedef可以定义各种类型名,但不能用来定义变量

    B:用typedef可以增加新类型

    C:用typedef只是将已存在的类型用一个新的名字来代表

    D:使用typedef便于程序的通用

     

    答案:ACD

 

  1. 对do-while语句描述正确的是()。

    A:do-while语句构成的循环可以使用break语句退出循环

    B:do-while语句构成的循环必须使用break语句退出循环

    C:do-while语句构成的循环,当while中的表达式值为非零时结束循环

    D:do-while语句构成的循环,当while中的表达式值为零时结束循环

     

    答案:AD

 

  1. 以下描述正确的是()。

    A:调用函数时,实参可以是表达式

    B:调用函数时,实参与形参可以共用内存单元

    C:调用函数时,将为形参分配内存单元

    D:调用函数时,实参与形参的类型必须一致

     

    答案:ACD

 

  1. 以下对switch语句和break语句中描述错误的有()。

    A:在switch语句中必须使用break语句

    B:break语句只能用于switch语句

    C:在switch语句中,可以根据需要使用或不使用break语句

    D:break语句是switch语句的一部分

     

    答案:ABD

 

  1. 以下叙述正确的是()。

    A:预处理命令行都必须以”#”开始

    B:在程序中凡是以”#”开始的语句行都是预处理命令行

    C:C程序在执行过程中对预处理命令行进行处理

    D:#define ABCD是正确的宏定义

     

    答案:ABD

 

 

  1. 以下合法的十六进制数是()。

    A:oxff

    B:0Xabc

    C:0x01

    D:0X9X

     

    答案:BC

 

  1. 以下对二维数组a进行正确初始话的是()。

    A:static char word[]=’Turbo�’;

    B:static char word[]={‘T’,’u’,’r’,’b’,’o’,’�’};

    C:static char word[]={“Turbo�”};

    D:static char word[]=”Turbo�”;

     

    答案:BCD

 

  1. 若以下选项中的变量已正确定义,则不正确的赋值语句是()。

    A:x1=26.8%3

    B:x=3*x+x

    C:x3=0x12

    D:x4=1+2=3;

     

    答案:AD

 

  1. 程序题
  1. 题目:要求输出国际象棋棋盘。
    1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
    2.程序源代码:
    #include “stdio.h”
    main()
    {
    int i,j;
    for(i=0;i<8;i++)
    {
    for(j=0;j<8;j++)
    if((i+j)%2==0)
    printf(“%c%c”,219,219);
    else
    printf(” “);
    printf(“n”);
    }
    }

  2. 题目:输出9*9乘法表。
    1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
    2.程序源代码:
    #include “stdio.h”
    main()
    {
    int i,j,result;
    printf(“n”);
    for (i=1;i<10;i++)
    { for(j=1;j<10;j++)
    {
    result=i*j;
    printf(“%d*%d=%-3d”,i,j,result);/*-3d表示左对齐,占3位*/
    }
    printf(“n”);/*每一行后换行*/
    }
    }

  3. 题目:输入三个整数x,y,z,请把这三个数由小到大输出。
    1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,
    然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
    2.程序源代码:
    main() {
    int x,y,z,t;
    scanf(“%d%d%d”,&x,&y,&z);
    if (x>y)
    {t=x;x=y;y=t;} /*交换x,y的值*/
    if(x>z)
    {t=z;z=x;x=t;}/*交换x,z的值*/
    if(y>z)
    {t=y;y=z;z=t;}/*交换z,y的值*/
    printf(“small to big: %d %d %dn”,x,y,z); }

  4. 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
    掉不满足条件的排列。
    2.程序源代码:
    main() {
    int i,j,k;
    printf(“n”);
    for(i=1;i<5;i++) /*以下为三重循环*/
    for(j=1;j<5;j++)
    for (k=1;k<5;k++) {
    if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
    printf(“%d,%d,%dn”,i,j,k); }}

  5. 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
    60分以下的用C表示。
    1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
    2.程序源代码:
    main()
    {
    int score;
    char grade;
    printf(“please input a scoren”);
    scanf(“%d”,&score);
    grade=score>=90?’A’:(score>=60?’B’:’C’);
    printf(“%d belongs to %c”,score,grade);

  6. 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
       第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
       的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
    1.程序分析:采取逆向思维的方法,从后往前推断。
    2.程序源代码:
    main()
    {
    int day,x1,x2;
    day=9;
    x2=1;
    while(day>0)
     {x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
     x2=x1;
     day–;
     }
    printf(“the total is %dn”,x1);
    }

  7. 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
       3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
       问第一个人,他说是10岁。请问第五个人多大?
    1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
          第四人的岁数,依次类推,推到第一人(10岁),再往回推。
    2.程序源代码:
    age(n)
    int n;
    {
    int c;
    if(n==1) c=10;
    else c=age(n-1)+2;
    return(c);
    }
    main()
    { printf(“%d”,age(5));
    }

  8. 题目:对10个数进行排序
    1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
          下次类推,即用第二个元素与后8个进行比较,并进行交换。      
    2.程序源代码:
    #define N 10
    main()
    {int i,j,min,tem,a[N];
    /*input data*/
    printf(“please input ten num:n”);
    for(i=0;i{
    printf(“a[%d]=”,i);
    scanf(“%d”,&a[i]);}
    printf(“n”);
    for(i=0;iprintf(“%5d”,a[i]);
    printf(“n”);
    /*sort ten num*/
    for(i=0;i{min=i;
    for(j=i+1;jif(a[min]>a[j]) min=j;
    tem=a[i];
    a[i]=a[min];
    a[min]=tem;
    }
    /*output data*/
    printf(“After sorted n”);
    for(i=0;iprintf(“%5d”,a[i]);
    }

  9. 题目:输入某年某月某日,判断这一天是这一年的第几天?
    1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
    情况,闰年且输入月份大于3时需考虑多加一天。
    2.程序源代码:
    main() {
    int day,month,year,sum,leap;
    printf(“nplease input year,month,dayn”);
    scanf(“%d,%d,%d”,&year,&month,&day);
    switch(month)/*先计算某月以前月份的总天数*/

{ case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf(“data error”);break; }
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf(“It is the %dth day.”,sum);}

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:数据结构、算法、C语言基础笔试题(带答案)

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share