




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
习题八习题八 一 单项选择题一 单项选择题 1 C 语言程序由函数组成 它的 A 主函数必须在其它函数之前 函数内可以嵌套定义函数 B B 主函数可以在其它函数之后 函数内不可以嵌套定义函数主函数可以在其它函数之后 函数内不可以嵌套定义函数 C 主函数必须在其它函数之前 函数内不可以嵌套定义函数 D 主函数必须在其它函数之后 函数内可以嵌套定义函数 2 一个 C 语言程序的基本组成单位是 A 主程序 B 子程序 C C 函数函数 D 过程 3 以下说法中正确的是 A C 语言程序总是从第一个定义的函数开始执行 B 在 C 语言程序中 要调用的函数必须在 main 函数中定义 C CC C 语言程序总是从语言程序总是从 mainmain 函数开始执行 函数开始执行 D C 语言程序中的 main 函数必须放在程序的开始部分 4 已知函数 abc 的定义为 void abc 则函数定义中 void 的含义是 A A 执行执行 abcabc 后 函数没有返回值后 函数没有返回值 B 执行函数 abc 后 函数不再返回 C 执行函数 abc 后 可以返回任意类型 D 以上三个答案全是错误的 5 在以下对 C 语言的描述中 正确的是 A A 在在 C C 语言中调用函数时 只能将实参数的值传递给形参 形参的值不能传递给实参语言中调用函数时 只能将实参数的值传递给形参 形参的值不能传递给实参 B C 语言函数既可以嵌套定义又可以递归调用 C 函数必须由返回值 否则不能使用函数 D C 语言程序中有定义关系的所有函数都必须放在同一源文件中 6 以下叙述中错误的是 A 在 C 语言中 函数中的自动变量可以赋初值 每调用一次赋一次初值 B 在 C 语言中 在定义函数时 实参和对应的形参在类型上只需赋值兼容 C C 在在 C C 语言中 外部变量的隐含类别是自动存储类别语言中 外部变量的隐含类别是自动存储类别 D 在 C 语言中 函数形参的存储类型是自动 auto 类型的变量 7 说明语句 static int i 10 中 i 10 的含义是 A 只说明了一个静态变量 B 与 auto i 10 在功能上等价 C C 将变量将变量 i i 初始化为初始化为 1010 D 将变量 i 赋值为 10 8 C 语言中的函数 A 可以嵌套定义 B 不可以嵌套调用 C 可以嵌套调用 但不能递归调用 D D 嵌套调用和递归调用均可嵌套调用和递归调用均可 9 C 语言中函数返回值的类型是由 决定的 A return 语句中的表达式类型 B 调用该函数的主调函数类型 C 调用函数时临时 D D 定义函数时所指定的函数类型定义函数时所指定的函数类型 10 C 语言规定 调用一个函数时 实参变量和形参变量之间的数据传递方式是 A 地址传递 B B 值传递值传递 C 由实参传给形参 并由形参传回给实参 D 由用户指定传递方式 11 下列的结论中只有 是正确的 A A 所有的递归程序均可以采用非递归算法实现所有的递归程序均可以采用非递归算法实现 B 只有部分递归程序可以用非递归算法实现 C 所有的递归程序均不可以采用非递归算法实现 D 以上三种三种说法都不对 12 在以下结论中 只有一个是错误的 它是 A C 语言允许函数的递归调用 B C 语言中的 continue 语句 可以通过改变程序的结果而省略 C C 有些递归程序是不能用非递归算法实现的有些递归程序是不能用非递归算法实现的 D C 语言中不允许在函数中再定义函数 13 在下列结论中 只有一个是正确的 它是 A A 递归函数中的形式参数是自动变量递归函数中的形式参数是自动变量 B 递归函数中的形式参数是外部变量 C 递归函数中的形式参数是静态变量 D 递归函数中的形式参数可以根据需要自己定义存储类别 14 下列结论中只有一个是正确的 它是 A 在递归函数中使用自动变量要十分小心 因为在递归过程中 不同层次的同名变量在赋值的时候 一定会产生相互影响 B 在递归函数中使用自动变量要十分小心 因为在递归过程中 不同层次的同名变量在赋值的时候 可能会产生相互影响 C C 在递归函数中使用自动变量要十分小心 因为在递归过程中 不同层次的同名变量在赋值的时候在递归函数中使用自动变量要十分小心 因为在递归过程中 不同层次的同名变量在赋值的时候 肯定不会产生相互影响肯定不会产生相互影响 D 在 C 语言中无法得出上述三个结论之一 15 在 C 语言的函数定义过程中 如果函数 finA 调用了函数 funB 函数 funB 又调用了函数 funA 则 A 称为函数的直接递归 B B 称为函数的间接递归称为函数的间接递归 C 称为函数的递归定义 D C 语言中不允许这样的递归形式 二 填空题 1 下面的函数 sum int n 完成计算 1 n 的累加和 sum int n if n 0 retuen 1 if n 1 return 1 else return n sum n 1 2 下面的函数是一个求阶乘的递归调用函数 facto int n if n 1 return 1 else return return n facto n 1 三 编程题 1 编写一个判断一个整数是否是素数的函数 使用该函数编写验证 1000 以内的哥德巴赫猜想是成 立 每个不小于 6 的偶数都是两个素数之和 include main int i j for i 6 i 1000 i 2 for j 3 j i 2 j 2 if flag j break flag n 函数 flag 的功能是判断整数 n 是否为素数 int n int i if n 2 0 return 0 for i 3 i n 2 i if n i 0 return 0 return 1 2 编写一个程序 调用函数已知一个圆筒的半径 外径和高 计算该圆筒的体积 参考程序 include double v double r double h return 3 1415926 r r h main double r1 r2 h v r1 外圆半径 r2 内圆半径 h 圆筒的高 printf Enter r1 r2 h scanf lf lf lf printf v lf n v r1 h v r2 h 3 编写一个求水仙花数的函数 求 100 到 999 之间的全部水仙花数 所谓水仙花数是指一个三位 数 其各位数字立方的和等于该数 例如 153 就是一个水仙花数 153 1 1 1 5 5 5 3 3 3 参考程序 main int i 0 j k a b c s for a 1 a 9 a for b 0 b 9 b for c 0 c0 k z 10 sum k k k z 10 return m sum 4 请编写一个函数 输出整数 的全部素数因子 例如 120 时 因子为 2 2 2 3 5 参考答案 main int m printf nEnter m scanf d primedec m primedec m int m int k 2 while k m if m k 0 printf d k m m k else k 5 已知某数列前两项为 2 和 3 其后继项根据当前的前两项的乘积按下列规则生成 若乘积为 一位数 则该乘积就是数列的后继项 若乘积为二位数 则乘积的十位和个位数字依次作为数 列的后继项 当 N 10 求出该数列的前十项为 2 3 6 1 8 8 6 4 2 4 参考程序 include stdio h define MAXNUM 100 void sum n pa int n pa int count temp pa 0 2 pa 1 3 count 2 while count n temp pa count 1 pa count 2 if temp 10 pa count temp else pa count temp 10 if count n pa count temp 10 main int n i num MAXNUM do printf Input N 2 N d MAXNUM scanf d while nMAXNUM printf nsum d n sum n num for i 0 i n i printf 4d num i printf n 程序 2 P244 5 c define N 20 main int i n a N shul a N for i 0 i N i printf 3d a i printf n shul int x int k int i 0 m n x 0 2 x 1 3 for i 2 i 10 x i m 10 x i m 10 else x i m 6 求组合数 编程计算 nmn m nmc 参考答案 double facton int n double s 1 for n 0 n s s n return s main int m n double c scanf d d c facton m facton n facton m n printf c d d lf n m n c 7 已知 ackermann 函数 对于 m 0 和 n 0 有如下定义 ack 0 n n 1 ack m 0 ack m 1 1 ack m n ack m 1 ack m n 1 请编程输入 m 和 n 求出 ack m n 之值 参考程序 include ackerman int m int n if m 0 return n 1 if n 0 return ackerman m 1 1 else return ackerman m 1 ackerman m n 1 main int m n printf Enter ackerman m n scanf d d printf ackerman d d d n m n ackerman m n 8 用递归的方法打印杨辉三角形 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 参考答案 杨辉三角形中的数 正是 x y 的 N 次方幂展开式中各项的系数 本题作为程序设计中具有代 表性的题目 求解的方法很多 可以使用一维数组 也可以使用二维数组 这里仅给出一种使用 递归求解的方法 从杨辉三角形的特点出发 可以总结出 第 N 行有 N 1 个值 设起始行为第 0 行 对于第 N 行的第 J 个值 N 2 当 J 1 或 J N 1 时 其值为 1 当 J 1 且 J N 1 时 其值为第 N 1 行的第 J 1 个值与第 N 1 行第 J 个值之和 将这些特点提炼成数学公式可表示为 c x y 1 x 1 或 x N 1 c x y c x 1 y 1 c x 1 y 其它 下面程序就是根据以上递归的数学表达式编制的 include main int i j n 13 printf N while n 12 scanf d 最大输入值不能大于 12 for i 0 i n i 控制输出 N 行 for j 0 j 12 i j printf 控制输出第 i 行前面的空格 for j 1 j i 2 j printf 6d c i j 输出第 i 行的第 j 个值 printf n int c x y 求杨辉三角形中第 x 行第 y 列的值 int x y int z if y 1 y x 1 return 1 若为 x 行的第 1 或第 x 1 列 则输出 1 else 否则 其值为前一行中第 y 1 列与第 y 列值之和 z c x 1 y 1 c x 1 y return z 9 编写一递归程序实现任意正整数向八进制数的转换 参考程序 1 include main int m printf nEnter m scanf d printhex m printhex int m if m 8 printhex m 8 printf d m 8 P245 9 程序 2 int a 8 i main int n scanf d ch10to8 n while i 0 printf d a i printf n ch10to8 int m 八进制数的每一位存入数组中 if m 8 a i m return else a i m 8 ch10to8 m m 8 p249 9c main int n long n8 t8 scanf d n8 t8 n printf n8 ld n n8 long t8 int k 按十进制形式读出的八进制数 if k0 m i k 8 k k 8 i for i 0 i n n 10 m i return n 10 验证卡布列克运算 任意一个四位数 只要它们各个位上的数字是不全相同的 就有这样的规 律 将组成这个四位数的四个数字由大到小排列 形成由这四个数字构成的最大的四位数 将组成这个四位数的 4 个数字由小到大排列 形成由这 4 个数字构成的最小的四位数 如 果四个数字中含有 0 则得到的数不足四位 求两个数的差 得到一个新的四位数 重复以上过程 最后得到的结果总是 6174 参考答案 根据原题中描述的算法 可以将整个进行卡布列克运算的过程做成递归 这样原算法描述中的 重复执行卡布列克运算 就可以变成了递归调用 可以很容易写出递归算法如下 进行 卡布列克运算 若 结果不是 6174 则 递归进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 传热考试题及答案
- 中西文明比较与互鉴知到智慧树答案
- 建筑施工技术第阶段测试题(附答案)
- 汽车维修工中级考试模拟题含参考答案
- 中小学教师资格考试专题知到智慧树见面课答案
- 介入手术室理论知识考核试题及答案
- 电梯安全管理人员考评习题跟答案
- 2025电子商务合同监管与电子商务行业发展趋势研究
- 2025二手房买卖违约金及原房产证遗失补办服务合同
- 2025年土地整治与开发土地租赁承包合同范本详解
- 充电桩知识培训课件
- 人工智能智能客服系统
- 个人安全管理工作存在的不足及整改措施
- 公司登记(备案)申请书
- 八下政治全册思维导图
- 供水管网工程监理实施细则
- 科研伦理与学术规范-期末考试答案
- 2024年秋季学期人教版七年级上册历史全册教学课件(新版教材)
- 化学-安徽省1号卷A10联盟2025届高三上学期8月开学摸底考试试题和答案
- 创业大赛承办服务投标方案(技术方案)
- JGJ/T235-2011建筑外墙防水工程技术规程
评论
0/150
提交评论