C程序设计项目教程习题答案_第1页
C程序设计项目教程习题答案_第2页
C程序设计项目教程习题答案_第3页
C程序设计项目教程习题答案_第4页
C程序设计项目教程习题答案_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目一 项目考核 一 选择题 1 6 ACCCD C 二 简答题 1 机器语言 汇编语言 高级语言各有什么特点 机器语言 汇编语言 高级语言各有什么特点 机器语言 机器语言是以二进制代码 0 和 1 表示机器指令的一种语言 用机器语言编写的程序能 被计算机直接执行 但使用机器语言编写程序非常繁琐 程序代码很难读懂且不通用 汇编语言 汇编语言用易懂的符号代替二进制代码 使得编程技术前进了一大步 计算机并不能直 接执行 需要借助汇编编译器将它翻译成二进制机器代码 高级语言 高级语言屏蔽了机器的细节 更接近于自然语言和数学语言 给编程带来了极大的方便 如 FORTRAN BASIC C C Java C 等 2 简述执行 简述执行 C 语言程序的基本过程 语言程序的基本过程 C 语言程序都采用编译方式运行 一般分为编辑 编译 连接和运行过程 编写源代码 使用 C 语言编写实现特定功能的程序代码 源代码必须遵循 C 语言的规范 编译 编译阶段是将我们编写的源代码翻译为计算机能够理解的二进制目标代码 连接 连接过程便是将目标文件与函数合并成完整的可执行文件 即生成 exe 文件 这样程序 就可以在计算机上直接运行了 运行 高级语言 源程序 编译 机器语言 目标程序 连接 可执行 程序 运行 运行 结果 编译程序连接程序 obj exe C 程序设计项目教程 2 即执行连接成功后得到的可执行程序 3 简述 简述 C 程序的基本结构 程序的基本结构 C 语言程序由函数构成 程序中包含对库函数的引用 程序有良好的编码格式 编写程序注释 友好的人机交互提示 4 简述调试 简述调试 C 程序的基本步骤 程序的基本步骤 第一步 设置断点 单击工具栏按钮即可添加断点 此时该行前端将出现一个断点标志 第二步 开始调试程序 打开 组建 下拉菜单 执行 开始调试 GO 命令 或直接按 F5 键 程序 会进入调试模式 并且会在断点处暂停 第三步 单步运行 不断按 F10 键 程序会一步一步地向前执行 项目实训 略 项目二 项目考核 一 选择题 1 12 DAAAB BDCAB AC 二 简答题 1 在程序中定义数据类型的目的是什么 在程序中定义数据类型的目的是什么 C 语言提供了哪些基本数据类型 语言提供了哪些基本数据类型 答 为了在程序中存储不同类型的数据 并节省空间 C 语言提供了以下数据类型 项目六 函数 3 2 常量和变量有何区别 字符常量和字符串常量有何区别 常量和变量有何区别 字符常量和字符串常量有何区别 答 常量是指在程序执行过程中值保持不变的量 变量是指在程序运行过程中值可以改变的 量 每个变量都必须在声明时明确定义其数据类型 并且需要用标识符标识 字符串常量与字符常量有所不同 字符型常量在内存中只占一个字节 字符串是按照串 中字符的排列顺序存放的 每一个字符占一个字节 并在末尾添加 0 作为字符串结尾标 志或结束标志 3 在 在 C 语言中如何表示不同进制的整数 语言中如何表示不同进制的整数 答 十进制整型常量 由正 负号和数字 0 9 组成 但数字部分不能以 0 开头 如 12 7 0 等 八进制整型常量 由正 负号和数字 0 7 组成 数字部分以 0 开头 如 0408 07761 等 十六进制整型常量 由正 负号 数字 0 9 和字母 A F 或 a f 组成 数字部 分以 0X 或 0 x 开头 A F 或 a f 分别表示数值 10 15 如 0XFFFF 0 x2D 等 4 下列标识符中哪些是合法的 并指出系统自定义的标识符下列标识符中哪些是合法的 并指出系统自定义的标识符 2a a t3 hit int 答 合法标识符 答 合法标识符 t3 hit int 为系统自定义标识符 5 写出下面程序的输出结果写出下面程序的输出结果 include void main 数据类型 基本类型 构造类型 整型 短整型 长整型 整型 双长整型 浮点型 字符型 布尔型 空类型 单精度 双精度 长双精度 枚举类型 数组类型 结构体类型 共同体类型 指针类型 函数类型 C 程序设计项目教程 4 int i j m n i 5 j 10 m i n j printf i d j d m d n d n i j m n 结果为 i 6 j 11 m 6 n 10 项目实训 include stdio h void main int num i char name 10 字符串用数组方式存储 下同 int age int base salary float ratio salary yj sum age sum salary sum age sum salary 0 printf n printf 输入与输出职工工资信息 n printf n for i 0 i 3 i 输入并存储职工工资信息 printf n n printf 请输入员工编号 n scanf d printf 请输入姓名 n scanf s printf 请输入年龄 n scanf d fflush stdin 清空缓存 printf 请输入基本工资 n 项目六 函数 5 scanf d printf 请输入级别系数 n scanf f printf 请输入销售额 n scanf f 计算每个人工资总额 salary base salary yj 0 01 ratio 输出职工工资信息 printf n n 下面输出职工工资信息 n printf 员工编号 d n num printf 姓名 s n name printf 年龄 d n age printf 工资总额为 f n salary sum age age sum age sum salary salary sum salary printf n n printf 平均年龄为 f n sum age 3 printf 平均工资为 f n sum salary 3 项目三 项目考核 一 选择题 1 2 A A 二 简答题 1 将任务一将任务一 例例 3 2 的算法用流程图表示出来 的算法用流程图表示出来 C 程序设计项目教程 6 2 计算计算的值 设计算法并尝试写出程序进行调试 的值 设计算法并尝试写出程序进行调试 11 111 1 23 499 100 自然语言描述如下 S1 sigh 1 S2 sum 1 S3 deno 2 S4 sigh 1 sigh S5 term sigh 1 deno S6 sum sum term S7 deno deno 1 S8 若 deno 100 返回 S4 否则 结束 流程图描述如下 项目六 函数 7 参考程序代码如下 include stdio h void main int sigh deno long double sum term sigh 1 deno 2 term sum 0 for deno 100 deno sigh 1 sigh term sigh 1 deno sum sum term printf 表达式的值为 20lf sum 项目实训 include int main 输出 sum 的值 开始 deno 100 sigh 1 sigh term sigh 1 deno sum sum term deno deno 1 初始化变量 sigh 1 sum 1 deno 2 结束 C 程序设计项目教程 8 int sushu int x int n printf 请输入一个大于 1 的整数 n scanf d sushu n return 0 int sushu int x int i for i 2 i x i if x i 0 break if i x printf 是素数 n else printf 不是素数 n return 0 程序运行结果 项目四 项目考核 一 选择题 1 5 DBCCC 项目六 函数 9 二 简答题 1 简述逻辑运算符与条件运算符的使用方法 简述逻辑运算符与条件运算符的使用方法 逻辑运算符的使用方法逻辑运算符的使用方法 表 4 2 逻辑运算符及其用法 逻辑运算符名称说明示例结果 逻辑非一元运算符 真变假 假变真 6 4 0 逻辑或 两操作数同假结果为假 否则为真 但当左操 作数为真 其结果则为真 不再计算右操作数的 值 ef ef ac bd1 条件运算符的使用方法条件运算符的使用方法 条件运算符 也称三元运算符 它根据布尔型表达式的值返回两个值中的一个 其 格式如下 条件 第一个表达式 第二个表达式 如果条件为 true 则计算第一表达式并以它的计算结果为整个条件表达式的值 如果为 false 则计算第二表达式并以它的计算结果为整个条件表达式的值 2 简述 简述 C 语言中语言中 switch 语句的特点 语句的特点 switch 语句中的表达式通常为整型或字符型 配套的常量类型也应该是字符型或整型 此外 如果常量类型是字符型 一定要用单引号括起来 如 A 而不能使用双引号 A 每个 case 后面的常量表达式必须各不相同 否则会出现矛盾 即一个值有多种选择 各个 case 语句和 default 语句出现的顺序对执行结果没有影响 每个分支的语句可以是单条语句 也可以是多条语句 多条语句不用加花括号 通常情况下 每个分支语句后都要加一个 break 语句 表示跳出 switch 语句 程序在 执行完该分支的语句后 如果有 break 语句 则结束 switch 语句 否则 继续执行下面的语 句 直到遇到 break 语句或整个 switch 语句结束 C 程序设计项目教程 10 项目实训 实训一 include void main float weight price printf 请输入您行李的重量 scanf f if weight 0 printf 您输入的数据有误 else if weight 20 printf 您可以免费托运行李 else if weight 30 price weight 20 30 printf 您的托运费用为 f 元 price else if weight 40 price 30 20 30 weight 30 40 printf 您的托运费用为 f 元 price else if weight 50 price 30 20 30 40 30 40 weight 40 50 printf 您的托运费用为 f 元 price else 项目六 函数 11 printf 您托运的行李超出了最高上限 不允许托运 实训二 include void main float sales bonus printf 请输入您的销售额 scanf f bonus sales 15000 sales 0 1 sales 10000 sales 0 08 sales 8000 sales 0 05 sales 5000 sales 0 03 0 if sales 0 printf 您输入的金额有误 奖金 else printf 您获得的奖金为 f 元 bonus 项目五 项目考核 一 选择题 1 5 ABBAA 二 简答题 1 简述 简述 for 语句的使用方法 语句的使用方法 for 语句中变量初始化部分只在开始时执行一次 然后判断条件表达式 若为 true 则执 行代码块循环体 然后执行控制变量更新表达式 再回头来判断条件表达式是否成立 以决 定下一次循环 若条件表达式为 false 则结束整个循环 2 简述 简述 break 语句和语句和 continue 语句的区别 语句的区别 C 程序设计项目教程 12 break 语句语句用于终止当前循环的执行 直接执行当前循环语句的下一语句 当循环有多 层时 break 语句只能跳出本层循环 外层循环仍会继续 continue 语句语句只能用于循环语句内部 用于结束本次循环 即跳过本次循环体中余下的 尚未执行的语句 再一次进行循环条件判断 以便执行下一次循环 项目实训 实训一 include void main char c int n 0 printf 请输入一行字符 do scanf c if c A while c n printf 该行英文字母的个数为 d n n 实训二 include void main int x 1 while x 100 if x 3 0 printf d x 项目六 函数 13 scanf d 项目六 项目考核 一 选择题 1 10 CCACC BCBDD 二 简答题 1 简述函数进行嵌套调用时函数的执行顺序 简述函数进行嵌套调用时函数的执行顺序 当函数进行嵌套调用时 程序首先从主函数开始执行 到达调用函数语句时流程转到第 一个被调用函数 第一个被调用函数执行到调用函数的语句时转入第二个被调用函数 依此 类推 直到最后一个被调用函数 最后一个被调用函数执行到 return 语句时 返回调用该函 数的函数中 执行调用函数语句下面的语句 依此类推 直到最后返回到主函数中 2 简述不同变量的作用域 简述不同变量的作用域 局部变量 局部变量只在该函数范围内有效 也就是说 只有在该函数内才能使用这些变量 全局变量 在函数外部定义的变量称为全局变量 其作用范围是从定义变量的位置开始到本源文件 结束 项目实训 实训 include int CommonFactors int a int b main int sub x y C 程序设计项目教程 14 printf 请输入用于计算公约数的两个整数值 中间通过空格分隔 n scanf d d while sub CommonFactors x y 0 static int counter 1 printf Common factor d is d n counter sub 函数功能 指明计算哪两个数的公约数 函数入口参数 两个整型数 函数返回值 公约数 int CommonFactors int a int b static int num1 1 static int num2 1 static int curFactor if a 0 b b b a curFactor 置为两个数中较小的那个 while curFactor 0 if a curFactor 0 如果不减 1 则下次还会测试这个数 curFactor 项目六 函数 15 return 1 项目七 项目考核 一 选择题 1 10 DDCCD BACAD 二 简答题 1 简述二维数组的存储形式 简述二维数组的存储形式 尽管二维数组由若干行 列构成 而实质上 二维数组最终也是在硬件存储器的一维线 性空间上实现的 在 语言中 二维数组是按行排列的 如图 7 6 所示 图 7 6 数组 a 在内存中的组织形式 2 简述使用数组元素和数组名作为函数参数时的区别 简述使用数组元素和数组名作为函数参数时的区别 用数组元素作实参时 只要数组类型和函数的形参变量的类型一致即可 并不要求函数 的形参也必须是下标变量 即对数组元素的处理是按普通变量对待的 用数组名作函数参数时 则要求形参和相对应的实参必须是类型相同的数组 都必须有 明确的数组说明 当形参和实参二者不一致时 就会发生错误 项目实训 实训源码 include include string h C 程序设计项目教程 16 char names 10 int score 10 7 int max 10 min 10 double average 10 int no 10 0 1 2 3 4 5 6 7 8 9 void main char names 10 10 定义二维字符数组存放选手名字 int i for i 0 i 10 i printf please input the name of the No d singer n i 1 提示用户输入编号为 i 1 的选手的名字 gets names i 将用户输入的字符串作为该选手的名字 int score 10 7 j for i 0 i 10 i printf nplease input the score of the No d singer n i 1 提示用户输入编号为 i 1 的选手的成绩 for j 0 j 7 j scanf d for i 0 i 10 i max i score i 0 for j 1 jmax i max i score i j printf the highest score of the No d singer is d n i 1 max i for i 0 i 10 i min i score i 0 for j 1 j 7 j 项目六 函数 17 if score i j min i min i score i j printf the lowest score of the No d singer is d n i 1 min i int sum temp 清零 for i 0 i 10 i sum 0 for j 0 j 7 j sum score i j 累加 sum sum max i min i 去掉最高和最低分 average i double sum 5 计算平均分 printf the average score of the No d singer is lf n n i 1 average i for i 1 i 6 i for j 0 j 7 i j 比较的 average no j 而不是 no j 本身 if average no j average no j 1 temp no j no j no j 1 no j 1 temp 交换排名位置 for i 0 i 10 i printf d s number d get lf n i names no i no i 1 average no i 项目八 项目考核 一 选择题 1 5 DDABA C 程序设计项目教程 18 二 简答题 以下程序的执行结果 1 2 3 项目实训 实训一 include include main char str 80 pStart pEnd int len printf Input string gets str len strlen str 项目六 函数 19 pStart str pEnd str len 1 while pStart pEnd pEnd if pStart pEnd printf No n else printf Yes n 实训二 include main char ballColor RED YELLOW BLUE WHITE BLACK int i j k m 0 for i 0 i 5 i for j i 1 j 5 j for k j 1 k 5 k m printf d s s s n m ballColor i ballColor j ballColor k C 程序设计项目教程 20 项目九 项目考核 一 选择题 1 4 BCDD 二 简答题 1 简述共用体与结构体数据类型的不同 简述共用体与结构体数据类型的不同 共用体与结构体的定义形式相似 但它们的含义不同 结构体变量所占内存长度是各成 员所占内存长度之和 每个成员分别占有自己的内存单元 而共用体变量所占的内存长度等 于最长的成员的长度 2 简述单链表的插入与删除结点的步骤 简述单链表的插入与删除结点的步骤 插入结点插入结点 在单链表中 插入结点同样有三种情况 如图 9 8 所示 即插入到链表的中间 插入到 链表头结点前 接到链表的尾结点后 图 9 8 链表结点的插入 插入到中间结点 p3 和 p2 之间时 只要将其前一个结点 p3 的指针指向要插入的接点 p1 然后将 p1 的指针指向 p2 就完成了结点 p1 的插入 若要插入到第一个结点之前 只要将 head 直接指向新结点 p1 然后将 p1 的指针指 向老的首结点即可 项目六 函数 21 若要插入到最后一个结点之后 则只要将最后的 p2 的指针直接指向新结点即可 下面我们通过一个例子来学习链表的插入 假定链表中的各结点已经按照学号由小到大 顺序排列 现要插入一个新结点 要求按学号的顺序插入 插入的结点要依次与表中结点相 比较 找到合适的插入位置 删除结点删除结点 如图 9 9 所示 从链表中删除一个结点有三种情况 即删除链表的中间结点 删除链表 头结点 删除链表的尾结点 h he ea ad d N NU UL LL L p ps s N NU UL LL L h he ea ad d h he ea ad d p ps s N NU UL LL L N NU UL LL L 图 9 9 链表结点的删除 删除中间结点 s 时 只要将其前一个结点 p 的指针指向 s 的下一个接点 即完成了将 结点 s 从链表中分离的目的 再将其内存释放 就完成了结点 s 的删除 若要删除的是第一个结点 只要将 head 直接指向第二个结点 然后将第一个结点的 内存释放即可 若要删除的是最后一个结点 则只要将 p 的指针直接指向 NULL 然后释放 s 的内存 即可 项目实训 实训 include include struct stack int data struct stack next C 程序设计项目教程 22 typedef struct stack STACK STACK head pr int nodeNumber 0 堆栈节点数寄存器 函数功能 生成一个新的节点 并为该节点赋初值 函数参数 整型变量 unm 是要给新节点赋的初值 函数返回值 指向新的节点的指针 STACK CreateNode int num STACK p p STACK malloc sizeof STACK 动态申请一段内存 if p NULL 如果返回空指针 申请失败 打印错误信息并退出程序 printf No enough memory to alloc exit 0 结束程序运行 p next NULL 为新建的节点指针域赋空指针 p data num 为新建的节点数据区赋值 return p 函数功能 压栈函数 函数参数 整型变量 num 表示要保存到栈里的数据 函数返回值 指向链表新节点的指针 STACK PushStack int num if nodeNumber 0 如果是第一个节点 保留该节点首地址在 head 中 head CreateNode num pr head nodeNumber 堆栈节点数寄存器 1 else 不是第一个节点 将新建节点连到链表的结尾处 项目六 函数 23 pr next CreateNode num pr pr next nodeNumber 堆栈节点数寄存器 1 return pr 函数功能 弹出堆栈 函数参数 无 函数返回值 当前堆栈中存储的数据 int PopStack void STACK p int result p head for if p next NULL 查找最后一个节点 break else pr p 记录最后一个节点的前一个节点的地址 p p next nodeNumber 堆栈节点数寄存器 1 if nodeNumber 0 return 1 如果是最后一个节点 返回错误代码 pr next NULL 将最后一个节点的前一个节点的地址的指针域赋空指针 result p data free p 释放内存 return result C 程序设计项目教程 24 main int pushNum 10 111 222 333 444 555 666 777 888 999 10000 int popNum 10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论