免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 1 给定程序 给定程序 MODI1 CMODI1 C 中 函数中 函数 funfun 的功能是 通过某种方式实现两个变量值的交换 规定的功能是 通过某种方式实现两个变量值的交换 规定 不允许增加任何语句和表达式 例如变量不允许增加任何语句和表达式 例如变量 a a 中的值原为中的值原为 1010 b b 中的值原为中的值原为 2020 程序运行后 程序运行后 a a 中的值为中的值为 2020 b b 中的值为中的值为 1010 请改正程序中的错误 使它能得出正确的结果 请改正程序中的错误 使它能得出正确的结果 注意 不要改动注意 不要改动 mainmain 函数 不得增行或删行 也不得更改程序的结构 函数 不得增行或删行 也不得更改程序的结构 试题源程序如下 include stdio h found void fun int x int y int t found t x x y found retum y main int a b printf Enter a b scanf d d printf a d b d n n a b b fun printf a d b d n n a b 分析 1 当对以上程序进行编译时 给出的第一个出错信息是 void function may not return avalue 指出 void 类型的函数不可能返回一个函数值 从主函数可知 函数将返回值 赋给整型变量 b 因此 fun 函数应当是 int 类型 在 fun 之前的 void 应改为 int 或删除 void 2 改正以上错误的同时 考生会发现主函数中调用 fun 函数时 第一个实参和形参的 类型不匹配 实参的类型是 int 变量的地址值 形参的类型是 int 类型变量 因此应该在 fun 函数的第一个形参 x 之前加一个 号 把 x 定义成一个能接受地址的指针 3 进行修改后的程序编译不再出错 运行程序时给 a 和 b 输入数据 注意输入的数据用 空格隔开 若给 a 输入 10 给 b 输入 20 从输出的结果看 a 和 b 的值都没有变 也就是 说 在 fun 函数中并没有进行指定的交换操作 这就要求对 fun 函数中的语句进行检查 4 在函数内可以发现语句 t x 把地址值赋给了整型变量 这是不允许的 按题义应当 把指针 x 所指 a 的值赋给 t 因此语句应该是 t x 同样语句 x y 应该改成 x y 这样就把 主函数中变量 b 的值赋给了变量 a 改变后再运行程序并给 a 和 b 分别输入 10 和 20 观察 输出结果可以看到 a 和 b 的值都为 20 也就是说 b 的值已给了 a 而 b 本身并没有改变 5 再审查程序应当看到在主函数中 b 最后的值是通过 fun 函数的返回值赋给的 观 察函数的 return 语句 返回的是函数中 y 的值 而这是主函数中 b 的原值 因此在逻辑上 存在错误 按题义应该返回 a 的原值 而此时 a 的原值已通过 t x 放在了 fun 函数的 t 中 所以 return 语句应改成 retum t 再次运行程序 就的到了正确的结果 6 提示 首先检查被调用函数的类型和形参的类型是否与主函数中的调用函数和实参类型一 致 如果不一致 应按主函数中的调用来进行修改 例如 实参为指针或数组名时 对应 的形参一定应定义成基类型相同的指针 在主函数中返回的函数值赋给一个指针时 则函 数的类型也一定是基类型相同的地址值 BR 若函数有返回值 应检查 return 语句中 的表达式的类型是否与函数的类型一致 若形参是指针类型 则在函数中应通过间址符 来引用主函数中的变量 2 2 给定程序 给定程序 MODI1 CMODI1 C 中 函数中 函数 funfun 的功能是 求出以下分数序列的前的功能是 求出以下分数序列的前 n n 项之和 项之和 序列见序列见 后面的图片后面的图片 其结果通过函数值返回其结果通过函数值返回 mainmain 函数 例如 若函数 例如 若 n n 的值为 的值为 5 5 则应输出 则应输出 8 3916678 391667 请改正程序中的错误 或在下划线处填上适当的内容并把下划线删除 使它能得出正请改正程序中的错误 或在下划线处填上适当的内容并把下划线删除 使它能得出正 确的结果 确的结果 注意 不要改动注意 不要改动 mainmain 函数 不得增行或删行 也不得更改程序的结构 函数 不得增行或删行 也不得更改程序的结构 试题源程序如下 include stdio h found fun int n int i double t s a b c found s 1 a 1 b 2 found For i 0 i n i t a b s s t found a b b c return s main int n printf Enter n scanf d printf n nn d n n printf nThe value of function is lf n fun n 分析 1 当对以上程序进行编译时 给出的第一个出错信息是 Statement missing 指出语句缺少分号 再看出现此信息的上一行 关键字 for 写成了 For 改正后再编译 给出的出错信息是 Code has no effect 指出代码无效 检查信息所在的 for 语句行 可以 发现括号内的各项用逗号分开而不是用分号 因此应当改正 2 进行以上改正后 编译指出下划线处出错 这是必然的 应当在此处填写适当的语 句 这要求考生理解题义和给定的程序算法 由程序可见 分数序列中的每一项放在变量 t 中 其中的分子放在变量 a 中 分母放在变量 b 中 累加和放在变量 s 中 每次累加之后 需要重新获得下一项的分子和分母 按给出的分数序列可知 下一项的分母是上一项的分 子 这由语句 b a 来实现 而下一项的分子是上一项的分子与分母之和 根据语句 a c 可 知 上一项的分子与分母之和放在变量 c 中 因此在下划线处应填入 c a b 3 编译之后没有语法错 执行程序给 n 输入 5 输出的结果是 0 000000 检查函数中 的 return 语句 函数的返回值是 s 难道 s 中的值是 0 为此 在 for 循环体的最后添加一个 输出语句 printf s f n s 以检查 s 的值 运行程序 得到以下的输出结果 n 5 s 1 500000 s 4 5000000 s 5 8333333 s 7 5833333 s 9 154762 The value of function is 0 000000 可见 s 的值不是 0 由此可以断定函数值在返回时出了问题 检查与函数值有关的函 数值类型 发现函数的类型为 int 而在主函数中 从输出格式可见输出的函数值是双精度 型 而 s 本身也是双精度型 因此应当在函数名 fun 前添加类型名 double 4 再次执行程序给 n 输入 5 输出的结果不是 8 391667 而是 10 791126 大于应得的 结果 这就应当检查所赋的初值和循环次数是否过多 首先检查各变量的初值 存放累加和 的 s 初值应是 0 而不应是 1 进行改正 变量 a 是分子 第一项分子的初值应是 2 第一 项的分母应是 1 因此应给 a 赋 2 给 b 赋 1 进行改正 5 改正后执行程序给 n 输入 5 输出的结果是 10 007051 因此接着检查循环次数 发 现 for 循环的循环控制变量 i 从 0 变化到 5 循环次数是 6 因此应把 for 循环改成 for i 0 i n i 或 for i 1 i n i 再次运行即得到正确的结果 6 提示 对于计算类型的程序 最好一开始就检查一下函数值的类型 对于计算类型的程序 需要注意变量的初值 循环重复的次数 对于如 1 n 这样的整除应该改为 1 0 n 或 double 1 n 这样的方式 所有的关键字必须小写 例如 不能把 if 写成 If 把 double 写成 Double 注意 变量名字母的大 小写 例如 定义变量名为 str 则不能错写成 Str 定义变 量名为 pt 则不能错写成 Pt 3 3 给定程序 给定程序 MODI1 CMODI1 C 中 函数中 函数 funfun 的的功能功能是 给定是 给定 n n 个实数 输出平均值 并统计在平个实数 输出平均值 并统计在平 均值以上均值以上 含平均值含平均值 的实数的个数 的实数的个数 例如 例如 n n 的值为的值为 8 8 时 输入时 输入 28 328 3 41 541 5 19 019 0 89 589 5 55 855 8 74 274 2 22 422 4 68 968 9 所 所 得平均值为得平均值为 49 94999749 949997 在平均值以上 在平均值以上 含平均值含平均值 的实数的个数为的实数的个数为 4 4 请改正函数请改正函数 funfun 中的错误 使它能得出正确的结果 中的错误 使它能得出正确的结果 注意 不要改动注意 不要改动 mainmain 函数 不得增行或删行 也不得更改程序的结构 函数 不得增行或删行 也不得更改程序的结构 试题源程序如下 include stdio h int fun float x int n found int i found float xn 0 0 for i 0 i n i found xn xn x j n printf ave f n xn for i 0 i n i found if x i xn c return c main float x 20 28 3 41 5 19 0 89 5 55 8 74 2 22 4 68 9 printf The number over average value d n fun x 8 分析 1 当对以上程序进行编译时 给出的第一个出错信息是 Declaration syntax error 指出在说明语句 int i 中有语法错 仔细观察 可以发现在说明语句前却少了函数体 开始的左花括号 应当添加左花括号 2 修改后进行编译 在第一个 for 循环体处给出一个警告出错信息 Possible use of xn beforedefintion 提示 xn 有确定的值之前使用了它 此处 变量 xn 用于存放累加和 xn 出现在赋值号的右边 在第一次累加时它应当有初值 向上寻找 没有发现给它赋过初 值 因此应当在定义语句中给它赋初值 0 float xn 改成 float xn 0 0 3 修改后再次进行编译 编译提示 if 语句中的关系表达式有语法错 出错信息是 Expressionsyntax 查看关系表达式 可发现关系运算符 写错 应该是 应进行 修正 4 修改后再次进行编译 编译指出在 c 处有错 出错信息是 Undefined symbol c 指出符号 c 没有经过定义 此处变量 c 用以统计数组中高于 等于平均值的实数的个数 查看函数开头处的定义语句 未曾对 c 进行过定义 因此应该在 int 语句中添加 5 修改后再次进行编译 编译给出出错信息 Undefined symbol c 指出变量 c 没有定 义 所以说明语句应写成 int i c 0 因为函数用 c 进行累加 它应当先赋初值 0 6 进行了以上的修改后 编译已无错误 运行程序得到正确的结果 4 4 给定程序 给定程序 MODI1 CMODI1 C 中 函数中 函数 funfun 的功能是 从字符串的功能是 从字符串 s s 中删除所有小写字母中删除所有小写字母 c c 主函数 主函数 中已给中已给 s s 赋字符串 赋字符串 cabcdabcdabcxccccabcdabcdabcxccc 输出结果应该是 输出结果应该是 abdabdabxabdabdabx 请改正函数请改正函数 funfun 中的错误 使它能得出正确的结果 中的错误 使它能得出正确的结果 注意 不要改动注意 不要改动 mainmain 函数 不得增行或删行 也不得更改程序的结构 函数 不得增行或删行 也不得更改程序的结构 试题源程序如下 found include stdio a void fun char s int i j for i j 0 s i i if s i c found s j s i found s i 0 main char s 80 cabcdabcdabcxccc printf The original string puts s fun s printf The string after deleted puts s printf n n 分析 1 当对以上程序进行编译时 给出的第一个出错信息是 Declaration syntax error 指出在 include 行有语法错 观察此行首先可以发现在 include 之前没有 号 在此 行的末尾多了分号 对此进行修正 再进行编译 给出出错信息 Unable to open include file STDIO A 指出打不开名为 STDIO A 的 include 文件 可以发现在此错把 stdio h 文件的 后缀写成了 a 进行改正 2 再次进行编译时给出了出错信息 Invalid indirection 指出 for 语句中的 s i 为非法 的标识符 在此 s i 以带下标的形式表示字符串中的某个元素 并作为循环结束标志 当 s i 中的值为 0 时循环结束 也就是说 遇到字符串结束标志时循环结束 观察形参 s 仅 说明它是一个字符变量 当然不可以使用 s i 的形式 而对应的实参却是一个字符数组名 显然 形参应定义成 char s 进行修改后编译不再有错 3 运行程序 输出结果是 xabcdabcdabcxccc 与预定的结果不符 应进一步检查函 数 fun 中的逻辑结构 检查程序可知在 for 循环中 通过下标 i 用 if 语句来逐个检查 s 所指 字符串中的每个字符是否为小写的字母 c 若不是 就重新放回 s 所指字符数组中 所放 位置由下标 j 来指定 i 由 for 循环变量来控制变化 而 j 除了赋过初值外 没有改变过 因此 只要不是小写字母 c 就不断重复放在 s 0 因为 j 一直为 0 中 只有 s 0 中的字符改 变 其他位置上的内容都没有改变 应该每在 s j 中放入一个非小写字母 c 之后 使 j 增 1 if 子句中的 s j s i 应改写为 s j s i 或改写为 s j s i j 4 改正后 再次运行程序 输出的字符串为 abdabdabxabcxccc 与预定的结果也不 相同 但可以看到字符串的前部分是正确的 应当考虑字符串结束标志是否放错了位置 检查函数中最后的语句 s i 0 可见 字符串结束标志没有放在由 j 所指的字符串的最后 而是仍放在原串的最后了 因此 此语句应该成 s j 0 5 改正后 再次运行程序 得到了正确的结果 abdabdabx 6 提示 本题中出现的错误基本是逻辑错 对于这样的试题 要求考生能够读懂程序 分析算法方面的错误进行改正 5 5 给定程序 给定程序 MODI1MODI1 C C 中 函数中 函数 funfun 的功能是 求出在字符串中最后一次出现的子字符串的功能是 求出在字符串中最后一次出现的子字符串 的地址 通过函数值返回 在主函数中输出从此地址开始的字符串 若未找到则函数值为的地址 通过函数值返回 在主函数中输出从此地址开始的字符串 若未找到则函数值为 NULLNULL 例如 当字符串例如 当字符串 s s 中的内容为 中的内容为 abcdabfabcdxabcdabfabcdx 子串 子串 t t 中的内容为 中的内容为 abcabc 时 输出结时 输出结 果应为 果应为 abcdxabcdx 当子串 当子串 t t 中的内容为 中的内容为 abdabd 时 输出未找到信息 时 输出未找到信息 NotbeNotbe found found 请改正函数请改正函数 funfun 中指定部位的错误 使它能得出正确的结果 中指定部位的错误 使它能得出正确的结果 注意 不要改动注意 不要改动 mainmain 函数 不得增行或删行 也不得更改程序的结构 函数 不得增行或删行 也不得更改程序的结构 试题源程序如下 include stdio h found char fun char s char t char p r a a NULL found while s p s r t while r found if r p r p else break if r 0 a s s found retrun a main char s 50 abcdabfabcdx t 50 p printf The string s s n n s printf Enter substring gets t p fun s t if p printf nThe result is s n p else printf nNot be found n 分析 1 对以上程序进行编译 给出出错信息 Misplaced else 指出 else 放错了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年四川省公务员申论考试冲刺押题试卷(含答案)
- 2025年高端制造业综合研发中心项目可行性研究报告及总结分析
- 2025年新型药物研发与商业化可行性研究报告及总结分析
- 2025年家庭废弃物处理项目可行性研究报告及总结分析
- 硕士学位论文浙江大学公共管理学院
- 2025年粉丝经济文化项目可行性研究报告及总结分析
- 2025年大数据分析及数据挖掘服务平台项目可行性研究报告及总结分析
- 2025年智慧水务城市项目可行性研究报告及总结分析
- 2025年虚拟现实应用于培训项目可行性研究报告及总结分析
- 2025年人工智能健康管理应用开发项目可行性研究报告及总结分析
- 2025年镇残联年度工作总结(6篇)
- 医院消防知识题库及答案
- 房地产公司工程质量管控实施细则
- 2026年怀化师范高等专科学校单招职业技能测试题库汇编
- 2025年中国铝铸件铸造行业市场前景预测及投资价值评估分析报告
- 2025年河北机关事业单位工人技能等级考试题库及答案
- 旅行社安全应急预案范本
- 企业文档管理与归档操作规范
- (2025)纪检监察综合业务知识考试题(含答案)
- 气动物流方案模板
- 最终版本提高PVC地板一次粘贴合格率QC成果
评论
0/150
提交评论