![《全国计算机等级考试二级教程C语言程序设计》_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/317f57b5-9b6b-4ef7-a999-61269f60b2fe/317f57b5-9b6b-4ef7-a999-61269f60b2fe1.gif)
![《全国计算机等级考试二级教程C语言程序设计》_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/317f57b5-9b6b-4ef7-a999-61269f60b2fe/317f57b5-9b6b-4ef7-a999-61269f60b2fe2.gif)
![《全国计算机等级考试二级教程C语言程序设计》_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/317f57b5-9b6b-4ef7-a999-61269f60b2fe/317f57b5-9b6b-4ef7-a999-61269f60b2fe3.gif)
![《全国计算机等级考试二级教程C语言程序设计》_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/317f57b5-9b6b-4ef7-a999-61269f60b2fe/317f57b5-9b6b-4ef7-a999-61269f60b2fe4.gif)
![《全国计算机等级考试二级教程C语言程序设计》_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/317f57b5-9b6b-4ef7-a999-61269f60b2fe/317f57b5-9b6b-4ef7-a999-61269f60b2fe5.gif)
已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 全国计算机等级考试二级教程全国计算机等级考试二级教程 C C 语言程序设计语言程序设计 课后题及参考答案课后题及参考答案 第一章 程序设计基本概念 1 1 在 TRUBO C 环境中用 RUN 命令运行一个 C 程序时 所运行的程序的后缀是 答案 exe 1 2 C 语言源程序文件的后缀是 经过编译后 生成文件的后缀是 经过连接后 生成文件的后缀是 答案 c obj exe 1 3 结构化程序由 三种基本结构组成 答案 顺序 选择 循环 第二章 C 程序设计的初步知识 一 选择题 2 1 以下选项中正确的整型常量是 A 12 B 20 C 1 000 D 4 5 6 答案 B 2 2 以下选项中正确的实型常量是 A 0 B 3 1415 C 0 329 10 2 10 的 2 次方 D 871 答案 D 2 3 以下选项中不正确的实型常量是 A 2 607E 1 B 0 8103e 2 C 77 77 D 456e 2 答案 B 2 4 以下选项中不合法的用户标识符是 A abc c B file C Main D PRINTF 答案 A 2 5 以下选项中不合法的用户标识符是 A 123 B printf C A D Dim 答案 C 2 6 C 语言中运算对象必需是整型的运算符是 A B C D 答案 A 2 7 可在 C 程序中用作用户标识符的一组标识符是 A void define WORD B as b3 123 If C For abc case D 2c DO SIG 答案 B 2 8 若变量已正确定义并赋值 符合 C 语言语法的表达式是 A a a 7 B a 7 b c a C int 12 3 4 D a a 7 c b 答案 B 2 9 以下叙述中正确的是 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 答案 B 2 10 以下叙述中正确的是 A 在 C 程序中无论是整数还是实数 只要在允许的范围内都能准确无误的表示 B C 程序由主函数组成 C C 程序由函数组成 精品文档 2欢迎下载 D C 程序由函数和过程组成 答案 C 2 11 TURBO C 中 int 类型变量所占字节数是 A 1 B 2 C 3 D 4 答案 B 2 12 不合法的八进制数是 A 0 B 028 C 077 D 01 答案 B 2 13 不合法的十六进制数是 A oxff B 0Xabc C 0 x11 D 0 x19 答案 A 二 填空题 2 14 若 k 为 int 整型变量且赋值 11 请写出运算 k 后表达式的值 A 和变量的值 B 答案 11 12 2 15 若 x 为 double 型变量 请写出运算 x 3 2 x 后表达式的值 A 和变量的值 B 答案 4 2 4 2 2 16 函数体由符号 开始 用符号 结束 函数体的前面是 部分 其后是 部分 答案 定义 执行 2 17 C 语言中的标识符可分为 和预定义标识符三类 答案 关键字 用户标识符 2 18 在 C 语言程序中 用关键字 定义基本整型量 用关键字 定义单精度实型变量 用关键字 定义双 精度实型变量 答案 int float double 2 19 把 a1 a2 定义成单精度实型变量 并赋初值 1 的定义语句是 答案 float a1 1 0 a2 1 0 2 20 C 程序中定义的变量 代表内存中的一个 答案 存储单元 2 21 表达式 3 5 1 2 的计算结果是 答案 3 5 2 22 对以下数学式 写出三个等价的 C 语言表达式 a b c 答案 a b c a c b b c a 2 23 表达式 s 10 应当读做 答案 将 10 赋给变量 s 2 24 计算机中内存储器的最小存储单位称 其中能容纳的数是 答案 位 0 或 1 2 25 通常一个字节包含 个二进制位 在一个字节中能存放的最大 十进制 整数是 它的二进制数的形 式是 最小 十进制 整数是 它的二进制数的形式是 答案 8 255 1111 1111 128 1000 0000 2 26 当计算机用两个字节存放一个整数时 其中能存放的最大 十进制 整数是 最小 十进制 整数是 它的二进制数的形式是 答案 65535 32768 1000 0000 0000 0000 2 27 在 C 语言中整数可用 进制数 进制数和 进制数三种数制表示 答案 十 八 十六 三 上机改错题 2 24 分析与解答 第 1 行的错误 1 include 是一个程序行 因此在此行的最后不应当有分号 2 include 程序行中后面的 stdio h 是一个文件名 按规定 文件名应当放在一对双引号 内 或放在 一对尖括号 内 精品文档 3欢迎下载 第 2 行的错误 1 main 是主函数的起始行 不是语句 因此最后不应当有分号 2 在同一行上的 main function 显然是注释 C 语言规定 注释由 开头 由 结束 但在 号和 之间不得插入任何空格 而在此处 和 之间存在空格 因此 main function 的写 法式是错误的 而应写成 main function 第 3 行的错误 1 在主函数的起始行 main 的后面是函数体 函数体由左花括号 开始 但在函数体的第一行 float 的前面 缺少了左花括号 2 在同一行上的 r is radius s is area of circular 显然是注释 C 语言规定 注释由 开头 由 结束 并且开头的 将去找最近的 去配对 因此在 r is radius 中 第一个 与最后的那个 配上了对 结果紧跟在后面的那个逗号 落在了注释的外面 而构成了一个多余符号 为此 在编译时将报告 语法错 第 6 行的错误 1 printf f KG 3 n s 应当是一条输出语句 但在最后缺少了一个分号 2 printf f KG 3 n s 是程序的最后一条语句 程序应当结束 但缺少了程序体结束所需的右花括 号 此右花括号可以放在 printf f KG 3 n s 的后面 也可以放在 printf f KG 3 n s 的 下一行上 2 25 分析与解答 第 1 行的错误 在 include 行中的文件名应该是 stdio h 而不是 stdio a 第 2 行的错误 在 main 的后面缺少一对圆括号 第 4 行的错误 在 c 4 0 的后面缺少分号 第 6 行的错误 在 printf f KG 3 n v 的后面缺少分号 第三章 顺序结构 一 选择题 3 1 若 a b c d 都是 int 类型变量且初值为 0 以下选项中不正确的赋值语句是 A a b c 100 B d C c b D d c 22 b 答案 C 3 2 以下选项中不是 C 语句的是 A int i i printf d n i B C a 5 c 10 D 答案 C 3 3 以下合法的 C 语言赋值语句是 A A B 58 B k int a b C a 58 b 58 D i 答案 D 3 4 以下程序的输出结果是 A 0 B 1 C 3 D 不确定的值 main int x 10 y 3 printf d n y x y 答案 C 3 5 若变量已正确说明为 int 类型 要给 a b c 输入数据 以下不正确的输入语句是 A read a b c B scanf d d d a b c C scanf D D D D scanf d d d 精品文档 4欢迎下载 答案 D 3 6 若变量已正确说明为 float 类型 要通过以下赋值语句给 a 赋予 10 b 赋予 22 c 赋予 33 以下不正确的输 入形式是 A 10 22 33 B 10 0 22 0 33 0 C 10 0 22 0 33 0 D 10 22 33 scanf f f f 答案 B 3 7 若变量以正确定义 要将 a 和 b 中的数进行交换 下面不正确的语句组是 A a a b b a b a a b B t a a b b t C a t t b b a D t b b a a t 答案 C 3 8 若变量已正确定义 以下程序段的输出结果是 A 输出格式说明与输出项不匹配 输出无定值 B 5 17000 C 5 168000 D 5 169000 x 5 16894 printf f n int x 1000 0 5 float 1000 答案 D 3 9 若有以下程序段 c3 中的值是 A 0 B 1 2 C 0 5 D 1 int c1 1 c2 2 c3 c3 c1 c2 答案 A 3 10 若有以下程序段 其输出结果是 A 0 0 10 B 0 0 5 C 10 3 10 D 3 3 10 int a 0 b 0 c 0 c a a 5 a b b 3 printf d d d n a b c 答案 B 3 11 当运行以下程序时 在键盘上从第一列开始输入 9876543210 此处代表 Enter 则程序的输出结 果是 A a 98 b 765 c 4321 B a 10 b 432 c 8765 C a 98 b 765 000000 c 4321 000000 D a 98 b 765 c 4321 0 main int a float b c scanf 2d 3f 4f printf na d b f c f n a b c 答案 C 3 12 以下程序的输出结果是 A a 2 b 5 B a 2 b 5 C a d b d D a d b d main int a 2 b 5 printf a d b d n a b 精品文档 5欢迎下载 答案 D 3 13 若 int 类型占两个字节 则以下程序段的输出是 A 1 1 B 1 32767 C 1 32768 D 1 65535 int a 1 printf d u n a a 答案 D 3 14 以下程序段的输出是 A 496 B 496 C 000496 D 输出格式符不合法 int x 496 printf 06d n x 答案 A 3 15 以下程序段的输出是 A 3 1415 B 3 0 C 3 D 3 float a 3 1415 printf 6 0f n a 答案 C 3 16 以下程序段的输出是 A 2345 67800 B 12345 6780 C 12345 67800 D 12345 678 printf 10 5f n 12345 678 答案 C 3 17 以下程序段的输出是 A 0000057 66 B 57 66 C 0000057 67 D 57 67 float a 57 666 printf 010 2f n a 答案 C 3 18 若从终端输入以下数据 要给变量 C 赋以 283 19 则正确的输入语句是 A scanf f c B scanf 8 4f C scanf 6 2f D scanf 8 283 1900 表示 Enter 键 答案 由于印刷错误 本题没有正确答案 改正意见 把选项 A 改为 scanf f 或者把选项 D 改为 scanf 8f 则可分别选择 A 或者 D 为正确答案 3 19 若变量已正确说明 要求用以下语句给 a 赋予 3 12 给 b 赋予 9 0 则正确的输入形式是 代表空格 A 3 12 9 0 B a 3 12b 9 C a 3 12 b 9 D a 3 12 b 9 scanf a f b f 表示 Enter 键 答案 C 3 20 以下程序的输出结果是 A 9 8 B 8 9 C 6 6 D 以上三个都不对 include math h main double a 3 0 b 2 printf 3 0f 3 0f n pow b fabs a pow fabs a b 答案 B 精品文档 6欢迎下载 二 填空题 3 21 若有以下定义 请写出以下程序段中输出语句执行后的输出结果 1 2 3 int i 200 j 2500 printf 1 d d i j printf 2 i d j d n i j printf 3 i d n j d n i j 答案 200 2500 i 200 j 2500 i 200 j 2500 3 22 变量 i j k 已定义为 int 类型并有初值 0 用以下语句进行输入时 scanf d scanf d scanf d 当执行第一个输入语句 从键盘输入 12 3 表示 Enter 键 则变量 i j k 的值分别是 答案 12 0 0 3 23 复合语句在语法上被认为是 空语句的形式是 答案 一条语句 3 24 C 语句的最后用 结束 答案 3 25 以下程序段 要求通过 scanf 语句给变量赋值 然后输出变量的值 写出运行时给 k 输入 100 给 a 输入 25 8 1 给 x 输入 1 89234 时的三种可能的输入形式 int k float a double x scanf d f lf printf k d a f x f n k a x 答案 1 100 25 81 1 89234 2 100 25 811 89234 3 100 25 81 1 89234 3 26 以下程序段的输出结果是 int x 0177 printf x 3d x 6d x 6o x 6x x 6u n x x x x x 答案 x 127 x 127 x 177 x 7f x 127 3 27 以下程序段的输出结果是 int x 0177 printf x 3d x 6d x 06d x 06d x 06d n x x x x x 答案 27 x 127 x 127 x 127 x 000127 x 06d 3 28 以下程序段的输出结果是 double a 513 789215 printf a 8 6f a 8 2f a 14 8f a 14 8lf n a a a a 答案 a 513 789215 a 513 79 a 513 78921500 a 513 78921500 三 编程题和改错题 3 16 分析与解答 1 主函数名 main 后应有一对圆括号 2 变量定义语句中 v 的前面缺逗号 3 第三行的 printf 语句用以提示输入 但是原样输出的字符串没有用双引号括起来 另外 从输入的形式看 精品文档 7欢迎下载 输入的数据紧跟在提示之后 因此 printf 格式串中最后不应该有换行符 n 4 因为输入项 a b c 从定义和计算结果来看都是 double 类型 因此 第四行 scanf 语句格式串中的格式说明 不应当用 d 而应当用 lf 且每一个变量之前应该加地址运算符 求 余数可用求余运算符 560 60 其值放入变量 m 中的语句是 m 560 60 4 设计输出格式 若输出的形式定 为 小时 分钟 则按此形式设计输出语句 5 把以上内容放在主函数的一对花括号中 6 编写程序如下 main int h m h 560 60 m 560 60 printf The result 3d 3d n h m 运行结果是 The result 9 20 3 18 分析与解答 1 确定变量的名字和定义变量的类型 若用 a 存放 1500 用 b 存放 350 用 q 存放商数 用 r 存放余数 所有 变量应定义成 int 类型 2 设计输入语句从终端输入 1500 和 350 在输入语句之前 应当设计一个输出语句 用以提示输入 3 可用整除求商数 结果放在变量 q 中 可用求余运算符 求两数之余数 结果放在变量 r 中 4 设计输出语句 输出 a b q r 5 把以上内容放在主函数的一对花括号中 本题的程序与 3 30 相似 请读者参考上题并根据本题的解释自己编程 并上机调试 3 19 分析与解答 1 定义 4 个双精度变量 a b c 和 ave 变量 a b c 分别存放读入的 3 个双精度数 ave 存放它们的平均值 2 设计输入语句 以及在此之前用于提示输入的 printf 语句 3 设计求平均值的算法 把所求得的平均值放入变量 ave 中 4 设计把变量 ave 中的数 从小数点后第二位数进行四舍五入的算法 现举例说明 若 ave 中的数为 123 4644 为了保留此值小数点后一位 可用表达式 int 123 4644 10 10 0 依次推算 为了保留此值小数点后二位 可用表达式 int 123 4644 100 100 0 其他依此类推 5 若要求对小数点后第二位数进行四舍五入 则可对原数加 0 05 后再进行以上运算 如要求保留 123 4644 小 数点后一位且对第二位数进行四舍五入 可用表达式 int 123 467 0 05 10 10 0 注意 分母一定要用实 数 10 0 而不能用整数 10 否则就变成整除了 若要求保留 123 4644 小数点后两位且对第三位数进行四舍五入 可用表达式 int 123 467 0 005 100 100 0 其他依此类推 6 设计输出语句 输出 a b c 和 ave 7 把以上内容放在主函数的一对花括号中 8 编写程序如下 main double a b c ave printf Enter a b c scanf lf lf lf ave a b c 3 精品文档 8欢迎下载 printf ave f n ave 用以比较四舍五入前后的数据 ave int ave 0 05 10 10 0 printf a f b f c f ave f n a b c ave 3 20 分析与解答 1 关于对变量中的数进行交换的算法请参考 3 7 题中的解释和 教程 中有关的例题 2 定义 4 个整型变量 a b c 和 t 变量 a b c 分别存放读入的 3 个整数 t 用作临时存储单元 3 设计输入语句 以及在此之前用于提示输入的 printf 语句 4 输出 a b c 中的值 以便于比较 5 交换的步骤如下 把 c 中的值赋给 t 把 b 中的值赋给 c 把 a 中的值赋给 b 把 t 中的值赋给 a 经过以上步骤 已按要求进行了交换 6 输出 a b c 中的值 7 编写程序如下 main int a b c t printf Enter a b c n scanf d d d printf 1 a d b d c d n a b c t c c b b a a t printf 2 a d b d c d n a b c 第四章 选择结构 一 选择题 4 1 下列运算符中优先级最高的运算符是 A B C D 则以下的表达式中 值为 0 的表达式是 A a if a b if b 0 c 0 else c 1 printf d n c 精品文档 9欢迎下载 答案 C 4 6 以下程序的输出结果是 A 1 B 2 C 3 D 4 main int w 4 x 3 y 2 z 1 printf d n w x w z y z x 答案 A 4 7 若执行以下程序时从键盘上输入 3 和 4 则输出结果是 A 14 B 16 C 18 D 20 main int a b s scanf d d s a if a b s b s s printf d n s 答案 B 4 8 下面的程序片段所表示的数学函数关系是 1 x0 1 x0 0 x0 1 x0 y 1 if x 0 y 1 if x 0 y 1 else y 0 答案 A 4 9 运行以下程序后 输出 A B if k 4 13 C 语言中的逻辑运算符按优先级别是 答案 else printf d n a0 B 0 答案 A xc b a a c c b 答案 3 2 2 4 20 若变量已正确定义 以下语句段的输出结果是 x 0 y 2 z 3 switch x case 0 switch y 2 case 1 printf break case 2 printf break case 1 switch z case 1 printf case 2 printf break default printf 答案 三 编程题 4 21 分析与解答 相关内容请参考 教程 4 2 节和 4 4 节 1 改写如下 switch a 10 default m 5 break case 0 case 1 case 2 m 1 break case 3 m 2 break case 4 m 3 break case 5 m 4 break 2 本题中对 a 的判断条件有一定的规律可寻 关键是 在 switch 语句后的表达式中利用了 a 10 从而简化了 c ase 标号 4 22 分析与解答 编写本题的程序 首先要解决如何计算学生当前的年龄 设存放实足年龄的变量是 age 1 如果当前的月份大于生日的月份 则学生的实足年龄 age y1 y0 2 如果当前的月份等于生日的月份 就要看日数 当前的日数大于或等于生日的日数 则学生的实足年龄 age y1 y0 3 如果不满足以上的条件 就可断定当前的日期没有超过生日日期 就是说学生的年龄应当是 age y1 y0 1 以上 3 条 用 C 语言可以描述如下 if m1 m0 JB 1 JB 1 m1 m0 else age y1 y0 1 读者可以参考以上语句写出程序 也可以根据分析写出与此形式不同的语句和程序 4 23 分析与解答 1 若输入的整数 a 是奇数 输出 dd number 是偶数输出 even number 2 若一个 a 是偶数 它就能被 2 除尽 即 a 2 0 输出 even number 若是奇数 它就不能被 2 除尽 即 a 2 KG 2 0 输出 odd number 读者可以参考以上给出的算法 写出相应的 C 语句 并编写出完整的程序 4 24 分析与解答 本题的主要算法是从 3 个数中找出最大的那个数 假定始终把最大的数放在变量 max 中 1 假定 a 中的数最大 把 a 赋给 max 2 用 b 去和 max 比较 若 b 大于 max 则把 b 赋给 max 若不大于 max 则什么也不做 3 用 c 去和 max 比较 若 c 大于 max 则把 c 赋给 max 若不大于 max 则什么也不做 精品文档 12欢迎下载 4 经过以上操作 max 中已放入了 a b c 三个数中的最大数 输出 max 即可 读者可以参考以上给出的算法 写出相应的 C 语句 并编写出完整的程序 4 25 分析与解答 1 本题已给出了非常明确的条件 只要写出正确的条件判断语句就可基本完成程序的编写 2 由给出的函数可知 只有 x 的值在规定的范围内时 才求出 y 的值 因此程序应当对输入的 x 进行判断 若 超过范围就不求 y 的值 3 现以使用 if CD 2 else 语句为例写出程序供参考 main int x y printf Enter x scanf d if x 5 else if x0 y x 1 else if x 5 y x printf x d y d n x y printf END n n 第五章 循环结构 一 选择题 5 1 以下程序段的输出结果是 A 9 B 1 C 11 D 10 int k j s for k 2 k 6 k k s 1 for j k j 6 j s j printf d n s 答案 D 5 2 以下程序段的输出结果是 A 12 B 15 C 20 D 25 int i j m 0 for i 1 i 15 i 4 for j 3 j7 n printf d n n 答案 B 5 4 以下程序段的输出结果是 A 1 B 3 0 C 1 2 D 死循环 int x 3 do printf 3d x 2 while x 答案 C 5 5 以下程序段的输出结果是 A 15 B 14 C 不确定 D 0 main int i sum for i 1 i0 y if y 3 0 printf d y continue 答案 B 5 7 若 x 是 int 型变量 以下程序段的输出结果是 A 3 4 5 B 3 4 5 C 3 4 5 D 3 4 5 精品文档 14欢迎下载 for x 3 x 6 x printf x 2 d d n x 答案 D 5 8 以下程序的输出结果是 A B C D main int i for i 1 i 5 i if i 2 printf else contionue printf printf n 答案 A 5 9 以下叙述正确的是 A do while 语句构成的循环不能用其它语句构成的循环来代替 B do while 语句构成的循环只能用 break 语句退出 C 用 do while 语句构成循环时 只有在 while 后的表达式为非零时结束循环 D 用 do while 语句构成循环时 只有在 while 后的表达式为零时结束循环 答案 D 5 10 以下程序的输出结果是 A 39 81 B 42 84 C 26 68 D 28 70 main int x i for i 1 ib b i while a c j do k while a d 答案 5 4 6 5 12 以下程序段的输出结果是 int k n m n 10 m 1 k 1 精品文档 15欢迎下载 while k n m 2 printf d n m 答案 死循环 5 13 以下程序的输出结果是 main int x 2 while x printf d n x 答案 1 5 14 以下程序段的输出结果是 int i 0 sum 1 do sum i while i 5 printf d n sum 答案 11 5 15 有以下程序段 s 1 0 for k 1 k n k s s 1 0 k k 1 printf f n s 请填空 使下面的程序段的功能完全与之等同 s 0 0 k 0 do s s d d 1 0 k k 1 while printf f n s 答案 d 1 0 k kamax amax x if amin x scanf f printf namax f namin f n amax amin 答案 x 0 x amin 三 编程题 5 17 分析与解答 1 本题的基本算法是求累加值 累加项的值有规律的递增 每一项的绝对值比前一项增 2 因此可以利用循环 精品文档 16欢迎下载 的控制变量的递增来得到累加项的绝对值 例如 for i 1 i 1e 4 t t i e t i 6 请读者自己对变量做出正确的定义 设计输出语句 完善程序 也可以参考此程序段 按照自己的思路独立地完成程序 7 e 的值应当是 2 71828 8 根据以上分析 读者已不难用 for 循环来实现求 e 值的计算 9 注意 在完成此程序时 不要对分母中的阶乘值进行单独计算 因为 17 的值已超过 long 类型的最大值 更 无法求到 50 5 19 分析与解答 1 从 1880 年至 2000 年的年数可用一个 for 循环来取得 2 对每一年 用以上指定的条件来进行判断 若满足条件即为闰年 进行输出 3 按输出的要求 需要设一个变量用于统计一行中输出的个数 若在一行上已连续输出了 5 个年数 就需输出 一个换行符 使下一个输出项在新的一行上开始 若用变量 n 来做此统计 则当表达式 n 5 0 时就应输出一个换 行符 同时使 n 重新置 0 值 4 若变量 y 代表年数 if 语句的逻辑表达式可以写成如下 y 4 0 y1 JB 1 y 400 0 printf d y n if n 5 0 printf n n 0 6 请读者自己对变量做出正确的定义并赋初值 完善程序 也可以参考此程序段 按照自己的思路独立地完成 程序 从 1880 年至 2000 年有 30 个闰年 5 20 分析与解答 1 不难理解利用以下的 for 循环可以在一行上连续输出 n 个 号 for i 1 i n i printf printf n 若 n 的值是 6 则连续输出 6 个 号 2 以上图形是在各行上输出数目不等的 号 只是 号的数目依次有规律地变化 在上半部分各行依次是 1 3 精品文档 17欢迎下载 5 7 个 因此可以用以下的程序段来实现这样的输出 for k 1 k 7 k k for i 1 i 1 k k for i 1 i k i printf printf n 以上程序段从第一列起输出的结果如下 现在我们已完成了在每行输出指定数目的 号 3 输出结果与题目要求不同 它们的区别是 按题目每一行之前有不同的空格 而这里则是所有的行都在第一 列上开始输出 号 所以接着就应当解决这一问题 4 分析题目要求 每行第一个 号位置的缩进是有规律的 假定中间这一行第一个 号位置是在第一列 则可看 出 第一至第三行的缩进分别是 3 2 1 个空格 而图形下半部的缩进数则刚好相反 这可在以上循环中添加输 出连续空格的 for 循环来实现 对于上半部程序如下 b 3 for k 1 k 7 k k for j 1 j b j printf b for i 1 i k i printf printf n 5 请读者在理解以上给出的示例的基础上 自己添加下半部空格的输出 第六章 字符型数据 一 选择题 6 1 C 语言中的简单数据类型有 A 整型 实型 逻辑型 B 整型 实型 字符型 C 整型 字符型 逻辑型 D 整型 实型 逻辑型 字符型 答案 B 6 2 C 语言中 字符 char 型数据在微机内存中的存储形式是 A 反码 B 补码 C EBCDIC 码 D ASCII 码 答案 D 6 3 设有语句 char a 72 则变量 a A 包含 1 个字符 B 包含 2 个字符 C 包含 3 个字符 D 说明不合法 答案 A 6 4 C 语言中不合法的字符常量是 A 0 xff B 65 C printf c n x 答案 B 6 9 以下程序的输出结果是 A 67 C B B C C C D D 不确定的值 main char ch1 ch2 ch1 A 5 3 ch2 A 5 3 printf d c n ch1 ch2 答案 A 6 10 对以下程序 从第一列开始输入数据 2473 代表 Enter 程序的输出结果是 A 668977 B 668966 C 66778777 D 6688766 include stdio h main int c while c getchar n switch c 2 case 0 case 1 putchar c 4 case 2 putchar c 4 break case 3 putchar c 3 default putchar c 2 break printf n 答案 A 6 11 若变量已正确说明 要求用以下语句给 c1 赋予字符 给 c2 赋予字符 给 a 赋予 2 0 给 b 赋予 4 0 则 正确的输入形式是 代表空格 A 2 0 4 0 B 2 0 4 0 C 2 4 D 2 4 精品文档 19欢迎下载 scanf f c f c 代表 Enter 键 答案 B 二 填空题 6 12 EOF 的十进制值是 答案 1 6 13 C 语言中 字符占内存 个字节 答案 1 6 14 调用 C 语言对字符处理的库函数时 在 include 命令行中应包括的头文件是 答案 string h 6 15 若输入字符 A 在以下 while 语句执行后 ch 的值是 while ch getchar A 答案 1 6 16 若要通过以下语句给 a b c d 分别输入字符 A B C D 给 w x y z 分别输入 10 20 30 40 正 确的输入形式是 请用代表 Enter 键 scanf d c d c d c d c 答案 10A20B30C40D 6 17 若有以下说明和输入语句 要求给 c1 c2 输入字符 A 和 B 给 a1 a2 输入 7 29 和 101 298 从键盘正确输 入数据的形式是 char c1 c2 float a1 a2 scanf f f scanf c c 答案 7 29101 298AB 6 18 若有以下说明和输入语句 要求给 c1 c2 输入字符 A 和 B 给 a1 a2 输入 7 29 和 101 298 从键盘正确输 入数据的形式是 char c1 c2 float a1 a2 scanf c f c f 答案 A7 29B101 298 6 19 若有以下说明和输入语句 要求给 c1 c2 c3 输入字符 A B 和 C 请写出各种从键盘正确输入数据的形式 char c1 c2 c scanf 4c scanf 4c scanf 4c 答案 A B C 三 编程题 6 20 分析与解答 1 在进行字符输入时 即使一次输入了一行字符 最后用回车结束输入 字符也只能一个一个地读入 若 ch 已 定义为 char 型变量 可以用以下的程序段来完成操作 ch getchar while ch KG 2 n ch getchar 当读入的是一个回车符时 循环就结束 循环体内的 符号表示需要在循环体内完成的其他操作 2 在循环内要求进行的操作之一是 输出每个字符以及与之对应的 ASCII 代码值 因此可用以下语句来实现 printf c d ch ch 3 在循环内要求进行的另一个操作是 每行只能输出 3 对字符和与之对应的 ASCII 代码值 若 n 已定义为 int 型变量 则可用来作计数器 使 n 的初值为 0 每输出一次 n 的值增 1 当 n 的值为 3 的整数倍时 额外输出一 个换行符 例如 n if n 3 0 putchar n 4 把 2 和 3 中给出的语句放在循环体内 并按要求给出正确的定义和初值 就可完成题目所要求的操作 精品文档 20欢迎下载 5 也可以在 while 后的一对括号中来完成字符的读入 如 while ch getchar KG 2 n 这时 循环内 外的 ch getchar 语句应当去掉 6 21 分析与解答 1 一行字符的读入 请参照题 6 20 1 和 5 中的解释 循环体内的 符号表示需要在循环体内完成的其 他操作 ch getchar while ch KG 2 n ch getchar 2 在本题中循环体内需要把读入的所有数字字符转换成一个整数 若用变量 n 来存放这个整数 为了保证有效 的存放 应当把它定义成 long 类型 3 要把输入的一串数字字符转换成一个整数 首先需要判断当前读入的字符是否是数字字符 若不是则什么也 不做 若是 则进行以下操作 把当前读入的一个字符转换成一个一位整数 这可由语句 d ch 0 来实现 在这里 d 是一个整型变量 把 d 中的一位数归并到 n 的低位中 这可用语句 n n 10 d 来实现 这里所述的操作可由以下语句来完成 if ch 0 3 在退出循环后 输出 n 的值 4 请自己完善程序 6 24 分析与解答 1 若图案的行数输入到变量 L 中 2 按要求 L 决定了图形的行数 因此可通过循环来实现 L 行的输出 for i 1 i L i 循环体中的 号 代表输出 L 行的操作 3 假定 ch 中存放了一个字符 我们知道 通过以下循环可以在一行上输出 n 个字符 for j 1 j n j putchar ch 精品文档 21欢迎下载 putchar n 注意 在循环后 putchar n 语句不可少 它用以换行 4 现在应当解决如何按要求给出每行输出的字符 由图分析 行数 或行号 为 1 时输出字符 A 行数为 2 时输 出字母 B 若输出的字母放在变量 ch 中 行号取决于外循环的控制变量 i 则输出的字母和行号的关系可用表 达式 ch A i 1 来表示 当 i 为 1 时 ch 中被赋予字母 A 当 i 为 2 时 ch 中被赋予了字母 B 其他依此类推 因此 在此表达式后 利用 3 中的循环就解决了各行上输出的字母 5 按要求每行输出的字母的个数不同 第二行输出 3 个字母 第三行输出 5 个字母 第四行输出 7 个字母 3 中 for 循环体的执行次数取决于 n 的值 也就是说 n 的值决定了每行输出字母的个数 其实 n 的值与行号有 着密切的关系 n 2 i 1 当 i 为 1 时 n 的值是 1 当 i 的 2 时 n 的值是 3 当 i 的 3 时 n 的值是 5 当 i 的 4 时 n 的值是 7 因此在 3 中 for 循环之前可用此表达式求出 n 的值 6 总结以上分析 我们可得到以下的程序段 for i 1 i L i ch A i 1 n 2 i 1 for j 1 j i k putchar 把此循环放在 i 控制的循环体内 输出每行字符的循环之前即可 8 请读者自己补充有关的 include 行 语句和变量的定义 以完成整个程序 注意 如果有能力可在某些地方 作些简化 第七章 函数 一 选择题 7 1 以下说法中正确的是 A C 语言程序总是从第一个定义的函数开始执行 B 在 C 语言程序中 要调用的函数必须在 main 函数中定义 C C 语言程序总是从 main 函数开始执行 D C 语言程序中的 main 函数必须放在程序的开始部分 答案 C 7 2 以下函数的类型是 A 与参数 x 的类型相同 B void 类型 C int 类型 D 无法确定 fff float x printf d n x x 答案 C 7 3 以下函数调用语句中 含有的实参个数是 A 1 B 2 C 4 D 5 func exp1 exp2 exp3 exp4 exp5 精品文档 22欢迎下载 答案 B 7 4 以下程序的输出结果是 A 11 B 20 C 21 D 31 fun int a int b int c c a b return c main int x 6 y 7 z 8 r r func x y x y z printf d n r 答案 C 7 5 以下程序的输出结果是 A 1 B 0 C 1 D 2 main int i 2 p p f i i 1 printf d p int f int a int b int c c a if a b c 1 else if a b c 0 else c 1 return c 答案 A 7 6 以下程序的输出结果是 A 0 B 1 C 6 D 无定值 fun int a int b int c c a b main int c fun 2 3 c printf d n c 答案 D 7 7 以下程序的输出结果是 A 5 500000 B 3 000000 C 4 000000 D 8 25 double f int n int i double s s 1 0 for i 1 i n i s 1 0 i return s main int i m 3 float a 0 0 精品文档 23欢迎下载 for i 0 ieps n s t t n t 2 n 1 return 2 0 答案 n 1 s 7 12 以下函数用以求 x 的 y 次方 请填空 double fun double x int y int i double z for i 1 i i z return z 答案 y z x 7 13 以下程序的功能是计算 s 0 1 2 3 n 请填空 long f int n int i long s s for i 1 i n i s return s main long s int k n scanf d s for k 0 k n k s s printf ld n s 答案 1L s i 0 f k 三 程序调试和编程题 7 14 分析与解答 1 fun 函数判断传给形参 n 的数是否为素数 若是函数返回 1 否则返回 0 2 函数的原意是用变量 yes 作为判断 n 是否为素数的标志 是素数 其值为 1 否则为 0 而所给函数的实际流 程却不能实现这一功能 例如 若 n 的值为 15 明显不是素数 时 在 for 循环中 当 k 的值为 3 时 就会执行 if 子句 yes 得 0 但 for 循环并没有终止 接着 k 为 4 时就会执行 else 子句 又使 yes 得 1 由此可见此程序段 并不能准确地判断一个数是否为素数 最后确定 yes 为何值的是 for 循环的终止值 n 2 当 n 为 15 时 k 的值为 n 2 等于 7 在循环体内将又一次执行 else 子句 使 yes 得 1 这时循环结束 函数返回 1 由此可见所给 fun 函 数不能起到预想的作用 3 由上分析可知 对于 n 的值为 15 时而言 问题是在一旦 yes 的值为 0 已判断 n 中的值不是素数时 没有及 时退出循环 返回 0 因此 若在 if 子句中添加一条语句 break 就能解决这一问题 把 if 语句改写如下 if n k 0 yes 0 break else yes 1 4 在所给 fun 函数中 当 n 的值为 2 3 时 都是素数 因为 n 2 的值为 1 大于 k 中的 2 所以不会进入 for 循环 而直接执行 return 语句 细心的读者应该可以发现 这时 yes 没有赋过值 也就是说 返回的是一个不确 定的值 这将会导致错误 因此 应当在定义语句中给 yes 赋初值 1 int k yes 1 精品文档 25欢迎下载 至此 fun 函数能正确运行 5 总结 因为一旦 if 语句中的表达式 n k 0 的值为 1 即可被某数整除 则可以确定 n 不是素数 因此即可 返回 不必再执行函数其他部分 if 子句可改成 if n k 0 yes 0 return yes else yes 1 也可简化成 if n k 0 return 0 else yes 1 又可进一步不用变量 yes 并去掉 else 简化成 请参考例 7 4 for k 2 k n 2 k if n k 0 return 0 return 1 7 15 分析与解答 1 若用整型变量 c 存放余数 则求 a 被 b 除后的余数可用表达式 c a b 2 本题要求编写函数 mymod 用以求 a 被 b 除后的余数即 c mymod a b 3 只要把 a b 作为函数值返回即可完成操作 请参考例 7 1 int mymod int a int b return a b 4 总结 本题在算法上十分简单 只是要求读者能够掌握编写函数的基本知识 7 16 分析与解答 1 本题所要采
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技助力下的学校图书馆现代化建设
- 西安开放大学《地域文化(专)》形考作业1-4答案
- 老房子翻新实现高质量家庭影院的步骤解析
- 科技展会中的创新型目标客户挖掘
- 2025年成都如何考货运从业资格证
- 科技在教室日常清洁中的应用
- 2025年度绩效评价与激励合同编制标准
- 野外地质实践在科学研究中的作用与意义
- 2025年度饮品店饮品店市场营销策划简易劳动合同
- 2025年度赠与房屋赠与及装修合同纠纷解决协议
- 2024年湖南高速铁路职业技术学院高职单招数学历年参考题库含答案解析
- 上海铁路局招聘笔试冲刺题2025
- 国旗班指挥刀训练动作要领
- 春季安全开学第一课
- 植物芳香油的提取 植物有效成分的提取教学课件
- 肖像绘画市场发展现状调查及供需格局分析预测报告
- 2021-2022学年辽宁省重点高中协作校高一上学期期末语文试题
- 同等学力英语申硕考试词汇(第六版大纲)电子版
- 墓地个人协议合同模板
- 2024年部编版初中语文各年级教师用书七年级(上册)
- 中日合同范本
评论
0/150
提交评论