二级C语言上机考试必读.pdf_第1页
二级C语言上机考试必读.pdf_第2页
二级C语言上机考试必读.pdf_第3页
二级C语言上机考试必读.pdf_第4页
二级C语言上机考试必读.pdf_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

忙活 365 网亲情奉献 二级 C 语言上机考试必读 一 上机改错题的特点和注意事项一 上机改错题的特点和注意事项 1 1 上机改错的试题中通常包含两个 上机改错的试题中通常包含两个 或三个或三个 错误需要修改 错误需要修改 2 2 试题中用 试题中用 found found 来提示在下一行来提示在下一行 或下面第二行或下面第二行 有错 有错 3 3 错误的性质基本分语法错和逻辑错两种 也有些试题要求把语句添加在 错误的性质基本分语法错和逻辑错两种 也有些试题要求把语句添加在 下划线处 下划线处 4 4 特别要注意的是 只能在出错的行上进行修改 不要改动程序行的顺序 特别要注意的是 只能在出错的行上进行修改 不要改动程序行的顺序 更不要自己另编程序 更不要自己另编程序 二 上机改错测试时 建议按以下步骤进行二 上机改错测试时 建议按以下步骤进行 1 1 首先仔细审题 了解试题的要求 看清楚试题给出的输入和输出 首先仔细审题 了解试题的要求 看清楚试题给出的输入和输出例示 例示 以便检验改错后程序运行的结果是否正确 以便检验改错后程序运行的结果是否正确 2 2 当在 当在 TURBO CTURBO C 环境下调出源程序后 审视环境下调出源程序后 审视 found found 所在所在 函数 根据题义理解程序所采用的基本算法 做到心里有数 函数 根据题义理解程序所采用的基本算法 做到心里有数 3 3 先按 先按 F9F9 对测试程序进行检查是否有语法错误 当编译提示有语法错时 对测试程序进行检查是否有语法错误 当编译提示有语法错时 可参考编译提示来查找并改正错误 可参考编译提示来查找并改正错误 4 4 当不再出现语法错时 使用 当不再出现语法错时 使用 CTRL F9CTRL F9 执行 执行 按照试题的示例给出的数按照试题的示例给出的数 据进行试算 若试算的结果与给出的输出结果相同时 该题就做对了 若试算据进行试算 若试算的结果与给出的输出结果相同时 该题就做对了 若试算 的结果与给出的输出结果不同 就应进一步检查程序中的逻的结果与给出的输出结果不同 就应进一步检查程序中的逻辑错误 辑错误 5 5 当程序存在逻辑错误时 首先应当理解题意 读懂程序的算法 必要时 当程序存在逻辑错误时 首先应当理解题意 读懂程序的算法 必要时 可按步检查数据的流程 以便确定错误所在 例如 题目要求数据按由小到大可按步检查数据的流程 以便确定错误所在 例如 题目要求数据按由小到大 排序 而结果数据是按由大到小进行了排序 问题可能出现在条件判断上 又排序 而结果数据是按由大到小进行了排序 问题可能出现在条件判断上 又 如 输出的字符串比预期的短 就有可能字符串的结束标志放错了位置 再如如 输出的字符串比预期的短 就有可能字符串的结束标志放错了位置 再如 做循环的时候做循环的时候 数组上限下限错误了数组上限下限错误了 基数是从 基数是从 0 0 开始开始 而不是而不是 1 1 开始的 修改开始的 修改 程序中的逻辑错时 要求考生认真读懂程序代码 程序中的逻辑错时 要求考生认真读懂程序代码 6 6 修改完成 得到正确结果后 一定不要忘记把修改后的程序存盘 修改完成 得到正确结果后 一定不要忘记把修改后的程序存盘 三 上机编程题的特点和说明三 上机编程题的特点和说明 在二级在二级 C C 程序设计上机考试中 要求完成一个独立的函数的编程 目前教程序设计上机考试中 要求完成一个独立的函数的编程 目前教 育部考试中心已出版了上机考试习题集 这些有助于学习编程 但考生应当在育部考试中心已出版了上机考试习题集 这些有助于学习编程 但考生应当在 忙活 365 网亲情奉献 学习过程中理解基本的算法 通过实际上机操作积累经验 才能掌握基本的编学习过程中理解基本的算法 通过实际上机操作积累经验 才能掌握基本的编 程能力 程能力 四 进行编程测试时 建议按以下步骤进行四 进行编程测试时 建议按以下步骤进行 1 1 首先仔细审题 了解试题的要求 记下试题给出的输入和输出例示 以 首先仔细审题 了解试题的要求 记下试题给出的输入和输出例示 以 便检验在完成指定的函数后程序运行的结果是否正确 便检验在完成指定的函数后程序运行的结果是否正确 2 2 当在 当在 TURBO CTURBO C 环境下调出源程序后 应对照函数首部的形参 审视主函环境下调出源程序后 应对照函数首部的形参 审视主函 数中调用函数时的实参内容 以便明确在函数中需要处理的数据数中调用函数时的实参内容 以便明确在函数中需要处理的数据对象 对象 3 3 理解试题的要求 审视主函数中调用函数的方式 若在表达式中调用函 理解试题的要求 审视主函数中调用函数的方式 若在表达式中调用函 数数 如把函数值赋给某个对象如把函数值赋给某个对象 则要求有函数值返回 需注意函数的类型 并 则要求有函数值返回 需注意函数的类型 并 在函数中用在函数中用 returnreturn 语句返回函数值 若主函数中仅用语句形式调用函数 则需语句返回函数值 若主函数中仅用语句形式调用函数 则需 要通过形参间接地返回所得结果 要通过形参间接地返回所得结果 4 4 选择适当的算法进行编程 输入程序语句 不要忘记及时存盘 选择适当的算法进行编程 输入程序语句 不要忘记及时存盘 5 5 编译程序 直到没有语法错误 编译程序 直到没有语法错误 6 6 调试程序 利用试题中给出的例示数据进行输入 调试程序 利用试题中给出的例示数据进行输入 若要求输入的话若要求输入的话 运 运 行程序 用例示的输出数据检验输出结果 直到结果相同 行程序 用例示的输出数据检验输出结果 直到结果相同 对一些对一些 C C 编程时常犯的错误 特别写给各位学员以供参考 编程时常犯的错误 特别写给各位学员以供参考 1 1 书写标识符时 忽略了大小写字母的区别 书写标识符时 忽略了大小写字母的区别 main main int a 5 int a 5 printf d A printf d A 编译程序把编译程序把 a a 和和 A A 认为是两个不同的变量名 而显示出错信息 认为是两个不同的变量名 而显示出错信息 C C 认为大写字母认为大写字母 和小写字母是两个不同的字符 习惯上 符号常量名用大写 变量名用小写表和小写字母是两个不同的字符 习惯上 符号常量名用大写 变量名用小写表 示 以增加可读性 示 以增加可读性 2 2 忽略了变量的类型 进行了不合法的运算 忽略了变量的类型 进行了不合法的运算 main main float a b float a b printf d a b printf d a b 忙活 365 网亲情奉献 是求余运算 得到是求余运算 得到 a ba b 的整余数 整的整余数 整型变量型变量 a a 和和 b b 可以进行求余运算 而实型可以进行求余运算 而实型 变量则不允许进行变量则不允许进行 求余求余 运算 运算 3 3 将字符常量与字符串常量混淆 将字符常量与字符串常量混淆 char c char c c a c a 在这里就混淆了字符常量与字符串常量 字符常量是由一对单引号括起来的单在这里就混淆了字符常量与字符串常量 字符常量是由一对单引号括起来的单 个字符 字符串常量是一对双引号括起来的字符序列 个字符 字符串常量是一对双引号括起来的字符序列 C C 规定以规定以 作字符串作字符串 结束标志 它是由系统自动加上的 所以字符串结束标志 它是由系统自动加上的 所以字符串 a a 实际上包含两个字符 实际上包含两个字符 a a 和和 而把它赋给一个字符变量是不行的 而把它赋给一个字符变量是不行的 4 4 忽略了忽略了 与与 的区别 的区别 在许多高级语言中 用在许多高级语言中 用 符号作为关系运算符符号作为关系运算符 等于等于 如在 如在 BASICBASIC 程序程序中中 可以写可以写 if a 3 then if a 3 then 但但 C C 语言中 语言中 是赋值运算符 是赋值运算符 是关系运算符 如 是关系运算符 如 if a 3 a b if a 3 a b 前者是进行比较 前者是进行比较 a a 是否和是否和 3 3 相等 后者表示如果相等 后者表示如果 a a 和和 3 3 相等 把相等 把 b b 值赋给值赋给 a a 由于习惯问题 初学者往往会犯这样的错误 由于习惯问题 初学者往往会犯这样的错误 5 5 忘记加分号 忘记加分号 分号是分号是 C C 语句中不可缺少的一部分 语句末尾必须有分号 语句中不可缺少的一部分 语句末尾必须有分号 a 1 a 1 b 2 b 2 编译时 编译程序在编译时 编译程序在 a 1 a 1 后面没发现分号 就把下一行后面没发现分号 就把下一行 b 2 b 2 也作为上一也作为上一 行语句的一部分 这就会出现语法错误 改错时 有时在被指出有错的一行中行语句的一部分 这就会出现语法错误 改错时 有时在被指出有错的一行中 未发现错误 就需未发现错误 就需要看一下上一行是否漏掉了分号 要看一下上一行是否漏掉了分号 z x y z x y t z 100 t z 100 printf f t printf f t 对于复合语句来说 最后一个语句中最后的分号不能忽略不写 对于复合语句来说 最后一个语句中最后的分号不能忽略不写 6 6 多加分号 多加分号 对于一个复合语句 如 对于一个复合语句 如 z x y z x y t z 100 t z 100 printf f t printf f t 复合语句的花括号后不应再加分号 否则将会画蛇添足 复合语句的花括号后不应再加分号 否则将会画蛇添足 又如 又如 忙活 365 网亲情奉献 if a 3 0 if a 3 0 I I 本是如果本是如果 3 3 整除整除 a a 则 则 I I 加加 1 1 但由于 但由于 if a 3 0 if a 3 0 后多加了分号 则后多加了分号 则 ifif 语句到语句到 此结束 程序将执行此结束 程序将执行 I I 语语句 不论句 不论 3 3 是否整除是否整除 a a I I 都将自动加都将自动加 1 1 再如 再如 for I 0 I 5 I for I 0 I 5 I scanf d scanf d printf d x printf d x 本意是先后输入本意是先后输入 5 5 个数 每输入一个数后再将它输出 由于个数 每输入一个数后再将它输出 由于 for for 后多加了一个后多加了一个 分号 使循环体变为空语句 此时只能输入一个数并输出它 分号 使循环体变为空语句 此时只能输入一个数并输出它 7 7 输入变量时忘记加地址运算符输入变量时忘记加地址运算符 int a b scanf d d a b scanf d d a b 这是不合法的 这是不合法的 ScanfScanf 函数的作用是 按照函数的作用是 按照 a a b b 在内存的地址将在内存的地址将 a a b b 的值存进的值存进 去 去 scanf d d 输入时 不能用逗号作两个数据间的分隔符 如下面输入不合法 输入时 不能用逗号作两个数据间的分隔符 如下面输入不合法 3 3 4 4 输入数据时 在两个数据之间以一个或多个空格间隔 也可用回车键 跳格键输入数据时 在两个数据之间以一个或多个空格间隔 也可用回车键 跳格键 tabtab scanf d d scanf d d C C 规定 如果在规定 如果在 格式控制格式控制 字符串中除了格式说明以外还有其它字符 则在输字符串中除了格式说明以外还有其它字符 则在输 入数据时应输入与这些字符相同的字符 下面输入是合法的 入数据时应输入与这些字符相同的字符 下面输入是合法的 3 3 4 4 此时不用逗号而用空格或其它字符是不对的 此时不用逗号而用空格或其它字符是不对的 3 4 33 4 3 4 4 又如 又如 scanf scanf a d b d a d b d 输入应如以下形式 输入应如以下形式 a 3 b 4 a 3 b 4 9 9 输入字符的格式与要求不一致 输入字符的格式与要求不一致 在用在用 c c 格式输入字符时 格式输入字符时 空格字符空格字符 和和 转义字符转义字符 都作为有效字符输都作为有效字符输 入 入 忙活 365 网亲情奉献 scanf c c c scanf c c c 如输入如输入 a b c a b c 字符字符 a a 送给送给 c1c1 字符 字符 送给送给 c2c2 字符 字符 b b 送给送给 c3c3 因为 因为 c c 只要求读入只要求读入 一个字符 后面不需要用空格作为两个字符的间隔 一个字符 后面不需要用空格作为两个字符的间隔 10 10 输入输出的数据类型与所用格式说明符不一致 输入输出的数据类型与所用格式说明符不一致 例如 例如 a a 已定义为整型 已定义为整型 b b 定义为实型定义为实型 a 3 b a 3 b 4 5 4 5 printf f dprintf f d n a b n a b 编译时不给出出错信息 但运行结果将与原意不符 这种错误尤其需要注意 编译时不给出出错信息 但运行结果将与原意不符 这种错误尤其需要注意 11 11 输入数据时 企图规定精度输入数据时 企图规定精度 scanf 7 2f scanf 7 2f 这样做是不合法的 输入数据时不能规定精度 这样做是不合法的 输入数据时不能规定精度 12 switch12 switch 语句中漏写语句中漏写 breakbreak 语句 语句 例如 根据考试成绩的等级打印出百分制数段 例如 根据考试成绩的等级打印出百分制数段 switch grade switch grade case A printf 85 100 case A printf 85 100 n n case B printf 70 84case B printf 70 84 n n case case C printf 60 69 C printf 60 69 n n case D printf 60case D printf 2n 2 位的整数 函数求出 位的整数 函数求出 w w 的后的后 n n 1 1 位的数作为函数值返回 例如 位的数作为函数值返回 例如 w w 值为值为 59235923 则函数返回 则函数返回 923923 w w 值为值为 923923 则函数返回则函数返回 2323 unsigned fun unsigned fun unsigned w unsigned w if w 10000 return w 10000 if w 10000 return w 10000 if w 1000 return w 1000 if w 1000 return w 1000 if w 100 return w 100 if w 100 return w 100 return w 10 return w 10 注 由于注 由于 unsignedunsigned 型整数在型整数在 0 0 6553565535 这间 只要它大于这间 只要它大于 1000010000 则对则对 1000010000 求余求余 即得出后面即得出后面 4 4 位 否则如果大于位 否则如果大于 10001000 则对则对 10001000 求余得出后求余得出后 3 3 位数 这样一层位数 这样一层 一层往小的判断 由于一层往小的判断 由于 returnreturn 的作用除了返回值以外 还有当执行到的作用除了返回值以外 还有当执行到 returnreturn 时就跳出该程序 所以可以连续的用时就跳出该程序 所以可以连续的用 i if f 语句 语句 4 4 请编一函数 请编一函数 void fun int tt M N int pp N void fun int tt M N int pp N tttt 指向一个指向一个 M M 行行 N N 列的列的 二维数组 求出二维数组每列中最小元素 并依次放入二维数组 求出二维数组每列中最小元素 并依次放入 pppp 所指一维数组中 二所指一维数组中 二 维数组中的数已在主维数组中的数已在主 函数中赋予 函数中赋予 define M 3 define M 3 define N 4 define N 4 void fun int tt M N int pp N void fun int tt M N int pp N int i j int i j for i 0 i for i 0 i pp tt 0 pp tt 0 for j 0 j for j 0 j if tt j if tt j 注 该题用注 该题用 for i 0 i j for i 0 i j 用于控制同列内元素的比较 多重循环的嵌套总用于控制同列内元素的比较 多重循环的嵌套总 是最里层循环变化最快 即外层循环改变一个值 内层循环就要循环完一次 是最里层循环变化最快 即外层循环改变一个值 内层循环就要循环完一次 对于多重循环一定要好好去体会和理解 在多数题目中都要用到多重循环 一对于多重循环一定要好好去体会和理解 在多数题目中都要用到多重循环 一 般为二重 般为二重 5 5 请编一个函数 请编一个函数 funfun 其中 其中 n n 所指存储单元中存放了数组中元素的个数 函数所指存储单元中存放了数组中元素的个数 函数 的功能是 删除所有值为的功能是 删除所有值为 y y 的元素 数组元素中的值和的元素 数组元素中的值和 y y 的值由主函数通过健的值由主函数通过健 盘读入 盘读入 试题程序 试题程序 define M 20 define M 20 void fun int bb int n int y void fun int bb int n int y int i int i j 0 j 0 for i 0for i 0 i n i i n i if bb y bb j bb if bb y bb j bb n j n j 忙活 365 网亲情奉献 注 该题的算法是 用注 该题的算法是 用 for for 循环控制元素逐一判断数组元素是否等于循环控制元素逐一判断数组元素是否等于 y y 若 若 不等则赋给新数不等则赋给新数 bbbb 由于删除的关系 由于删除的关系 j j 总是小于或等于总是小于或等于 i i 故而可用 故而可用 bbbb 作为新作为新 数组 与第数组 与第 6 6 题相似 还要注意题相似 还要注意 n j n j 如果没有这个语句则不能传回新数组的 如果没有这个语句则不能传回新数组的 个数 另外也不能换成个数 另外也不能换成 n n 这点是用指针时常犯的错误 切记 这点是用指针时常犯的错误 切记 6 6 请编写一个函数请编写一个函数 int fun int x int fun int x 它的功能是 判断整数 它的功能是 判断整数 x x 是否是同构数 是否是同构数 若是同构数 函数返回若是同构数 函数返回 1 1 否则返回 否则返回 0 0 所所谓谓 同构数同构数 是指这样的数 它出现在它的平方数的右边 例如 输入整数是指这样的数 它出现在它的平方数的右边 例如 输入整数 5 5 5 5 的平方数是的平方数是 2525 5 5 是是 2525 中右侧的数 所以中右侧的数 所以 5 5 是同构数 是同构数 x x 的值由主函数从健的值由主函数从健 盘读入 要求不大于盘读入 要求不大于 100100 int fun int x int fun int x int xx x x int xx x x if xx x xx 10 x xx 100 x return 1 if xx x xx 10 x xx 100 x return 1 else return 0 else return 0 注 由注 由 同构数同构数 的定义可得只要求出平方数或平方数的最后一位或平方数的定义可得只要求出平方数或平方数的最后一位或平方数 的最后两位然后与的最后两位然后与 x x 进行判断即可 分别求余后即得出平方数的右边 进行判断即可 分别求余后即得出平方数的右边 7 7 请编 请编写函数写函数 funfun 它的功能是 求出 它的功能是 求出 ssss 所指字符串中 指定字符的个数 并所指字符串中 指定字符的个数 并 返回此值 例如 若输入字符串 返回此值 例如 若输入字符串 123412132123412132 输入字符为 输入字符为 1 1 则输出 则输出 3 3 define M 81 define M 81 int fun char ss char c int fun char ss char c int num 0 int num 0 while ss while ss 0 0 if ss c num if ss c num ss ss return num return num 注 本题用注 本题用 while while 循环来控制字符的移动 每移动一个字符都要进行判断循环来控制字符的移动 每移动一个字符都要进行判断 if ss c if ss c 是否为指定的字母 若是则个数 是否为指定的字母 若是则个数加加 1 1 这里要注意如何让 这里要注意如何让 ssss 指指 针向下走动 针向下走动 ss ss 8 8 请编写函数 请编写函数 funfun 经的功能是 求出 经的功能是 求出 1 1 到到 10001000 之内能被之内能被 7 7 或或 1111 整除 但不整除 但不 能同时补能同时补 7 7 和和 1111 整除的所有整数并将它们放在整除的所有整数并将它们放在 a a 所指的数组中 通过所指的数组中 通过 n n 返回这返回这 些数的个数 些数的个数 void fun int a int n void fun int a int n int i m 0 int i m 0 for i 1 i 1000 i for i 1 i 1000 i i

温馨提示

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

评论

0/150

提交评论