已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文由s y f y y l f y f 贡献 d o c 文档可能在WAP端浏览体验不佳 建议您优先选择TXT 或下载源文件到本机 查看 语言程序设计 C 语言程序设计 习题集 第 1 章 C 语言概述 1 1 c 语言程序的总体结构是怎样的 解 一个完整的 c 语言程序 是由一 个 且只能由一个 m a i n 函数 又称主函数 和若 干个其他函数结合而成的 或仅由 一个 m a i n 函数构成 1 2 c 语言程序的基本单位是什么 它的结构又如 何 解 函数是 c 语言程序的基本模块单元 任何函数 包括主函数 m a i n 都是由函数说明 和函数体 两部分组成 其一般结构如下 函数类型 函数名 函数参数表 说明 语句部分 执行语句部分 1 3 主函数 m a i n 在程序中的地位如何 程序总 是 从哪个函数开始执行 到哪个函数执行完后结束 解 m a i n 函数的作用相当于其他 高级语言中的主程序 其他函数的作用相当于子程序 一个 c 语言程序 总是从 m a i n 函数开始执行 而不论 其在程序中的位置 当主函数执 行完毕时 亦即程序 执行完毕 习惯上 将主函数 m a i n 放在最前头 1 4 c 语言的语句分为哪几 类 解 按照语句功能或构成的不同 可将 c 语言的语句分 为五类 控制语句 函 数调用语句 表达式语句 空语句和复合 语句 1 5 执行一个 c 语言程序的一般 过程是什么 解 运行一个 c 语言程序的一般过程 如下图所示 逻 辑 错 5 运行 通过观察程序运行结果 验证程序的正确性 6 退出 Tc 集成环境 结束本次程序运行 1 6 在 Tc 集成环境下 下列操作的快捷键分别是什么 解 存 盘 F2 编译与连接 F9 运行 n F9 查看 运行结果 Al t F5 第 2 章 数据类型 运算符与表达式 2 1 指出下列变量名中 哪些是合法的 哪些是非 法的 如果非法 为什么 In t c h a r 345 ABd f c l o n g i n t u 51274 n 128765 f l o a t x 1 2 y 2 4 z 3 6 c h a r c 1 a c 2 b p r i n t f a 2d b 2d c 2d n a b c p r i n t f x f y f z f n x y z p r i n t f x y 5 2f y z 5 2f z x 5 2f n x y y z z x p r i n t f u 6l d n 9l d n u n p r i n t f s s d s n c 1 a o r c 1 ASCII p r i n t p a g e 1 f s s d s n c 2 a o r c 2 ASCII 3 2 用 s c a n f 下面的函数输 入数据 使 a 3 b 7 x 8 5 y 71 82 c 1 A c 2 a 问在键盘上如 何 输入 m a i n i n t a b f l o a t x y c h a r c 1c 2 s c a n f a d b d s c a n f f f C1 2 3 14 r Sa 3 14 r r Sb 4 Sa Va 4 3 14 r r r 3 Vb Sa h p r i n t f C1 2f n C1 p r i n t f Sa 2f n Sb 2f n Va 2f n Vb 2f n Sa Sb Va Vb 3 3 输入一个华氏温度 要求输出摄氏温度 公式 为 c 5 F 32 9 输出要求有文 字说明 取位 2 小数 参考源程序如下 2 m a i n f l o a t F c s c a n f f c 5 F 32 9 p r i n t f 输入的华氏温 度为 2f 则摄氏温度 为 2f f c 3 4 已知三角形的三边长 求其面积 解 假设输入的三边能构成三角形 三角形的面积 公式为 Ar e a s s a s b s c 其中 S a b c 2 参考源程序如下 i n c l u d e m a t h h Ma i n Fl o a t a b c s a r e a Pr i n t f 请输入三角形的三边 Sc a n f f f f S a b c 2 0 Ar e a s q r t s s a s b s c Pr i n t f 三角形 的三边 为 7 2f 7 2f 7 2f n a b c Pr i n f t 三角形的面积 为 7 2f n a r e a 第 4 章 选择结构程序设计 4 1 写出下面表达式的值 设 a 1 b 2 c 3 x 4 y 3 1 a b c s c a n f d d d i f a b i f a c t a e l s e t c e l s e i f b c t b e l s e t c p r i n t f d n t 4 3 给出一百分制成绩 要求输出成绩等 级 A B C D E 90 分以上为 A 80 89 分为 B 70 79 分为 C 60 69 分为 D 60 分以下为 E 参考源程序 m a i n i n t n u m b e r m d c h a r c 1 s c a n f d m d n u m b e r 10 s w i t c h m d c a s e 10 c a s e 9 c 1 A b r e a k c a s e 8 c 1 B b r e a k c a s e 7 c 1 C b r e a k c a s e 6 c 1 D b r e a k c a s e 5 c a s e 4 c a s e 3 c a s e 2 c a s e 1 c a s e 0 c 1 E b r e a k p r i n t f c n c 1 4 4 给一个不多于 5 位的正整数 要求 求出它 是几位数 分别 打印出每一位数字 按逆顺序打印 出各位数字 例如原来为 321 应输出 123 参考源程序 m a i n i n t a b c d e n l o n g m s c a n f l d a 0 0001 m b 10 0 0001 m a c 100 0 0001 m a 0 1 b d 1000 0 0001 m a 0 1 b 0 01 c e m 10000 a 1000 b 100 c 10 d 3 i f a 0 n 5 p r i n t f d d d d d d d d d d d n n a b c d e e d c b a e l s e i f b 0 n 4 p r i n t f d d d d d d d d d n n b c d e e d c b e l s e i f c 0 n 3 p r i n t f d d d d d d d n n c d e e d c e l s e i f d 0 n 2 p r i n t f d d d d d n n d e e d e l s e n 1 p r i n t f d d d n n e e 4 5 企业发放的奖金根据利润提成 利润 I 低于或 等于 10 万元 的 奖金可提 10 利润高于 10 万元 低 20 万元 10000010000000 时 超过 100 万元的部分按 1 提成 从键盘 输入当月利润 I 求应发奖金总数 要求 用 i f 语句编程序 用 s w i t c h 语句编程序 用 i f 语句编程序 m a i n i n t a b c d e f l o a t d 1 0 01 d 2 0 015 d 3 0 03 d 4 0 05 d 5 0 075 d 6 0 1 0 d o u b l e j j k l o n g i s c a n f l d k 0 00001 i a k 10 b k 6 c k 4 d k 2 e k 0 i f a 0 a 0 i f b 0 b 0 i f c 0 c 0 i f d 20 即求 1 2 3 4 5 20 参考源程序 m a i n i n t n i 1 l o n g s u m 0 s 1 s c a n f d w h i l e i n s s i s u m s u m s i p r i n t f s u m l d n s u m 5 2 输入两个正 整数 m 和 n 求其最大公约数和最小 公倍数 m a i n l o n g m n i 1 j s s c a n f l d l d f o r i m e l s e j n f o r j m 0j p r i n t f s l d j l d n s j 5 3 输入一行字符 分别统计出其中英文字母 空 格 数字和其他字符的个数 参考源程序 i n c l u d e s t d i o h m a i n c h a r c i n t i 0 j 0 k 0 l 0 w h i l e c g e t c h a r n i f c 65 e l s e i f c 32 k e l s e l p r i n t f i d j d k d l d n i j k l 5 4 求 Sn a a a a a a a a a a a 有 n 个 a 之值 其中 a 是一个 数字 例如 2 22 222 2222 22222 n 5 n 由键盘输入 参考源程序 i n c l u d e m a t h h m a i n 4 i n t n s u m 0 i 1 s 2 s c a n f d w h i l e i 100b 10 0 01 x a c x 100 a 10 b i f x p o w a 3 p o w b 3 p o w c 3 p r i n t f 5d x x 5 6 一个数如 果恰好等于它的因子之和 这个数就 称为 完数 例如 6 的因子为 1 2 3 而 6 1 2 3 因此 6 是 完数 编程序找出 1000 之内的所有完数 并 按下面格式输 出其因子 6 i t s f a c t o r s a r e 1 2 3 参考源程序 m a i n i n t m i j s f o r m 6 m 10000 m s 1 f o r i 2 i m i i f m i 0 s s i i f m s 0 p r i n t f 5d i t s f a s t o r s a r e 1 m f o r j 2 j m j i f m j 0 p r i n t f d j p r i n t f n 或 m a i n i n t m i j s f o r m 6 m 1000 m s m 1 5 f o r i 2 i m i i f m i 0 s s i i f s 0 p r i n t f 5d i t s f a s t o r s a r e 1 m f o r j 2 j m j i f m j 0 p r i n t f d j p r i n t f n 5 7 有一分数序列 2 1 3 2 5 3 8 5 13 8 21 13 求出这个数列的前 20 项 之和 参考源程序 m a i n i n t i 1 n d o u b l e t x 1 y 2 s s u m 0 s c a n f l d w h i l e i n s y x s u m s u m s t y y y x x t i p r i n t f f n s u m 5 8 一球从 100 米高度自由下落 每次落地后返回 原高度的一半 再落下 求 它在第 10 次落地时共经过多 少米 第 10 次反弹多高 参考源程序 m a i n i n t i n d o u b l e h 100 s 100 s c a n f d f o r i 1 i n i h 0 5 i f i 1 c o n t i n u e s 2 h s p r i n t f h f s f n h s 5 9 猴子吃桃问题 猴 子第一天摘下若干个桃子 当即吃了一半 还不过瘾 又多吃了一个 第二天早上 又将剩下的桃子吃掉一半 又多吃一个 以后每天早上 都吃了前一天剩下的一半零一 个 到第 10 天早上想再吃 时 见只剩下一个桃子了 求第一天共摘多少桃子 参 考源程序 m a i n i n t i 1 s u m 0 f o r i 0 00001 p r i n t f 3f n x 1 5 11 用二分法求方程在 10 10 之间的根 3 2 2x 4x 3x 6 0 参考源程序 m a i n d o u b l e x 1 x 2 y 1 y 2 x 1 p a g e 3 10 x 2 10 d o y 1 2 x 1 x 1 x 1 4 x 1 x 1 3 x 1 6 x 1 x 1 y 1 6 x 1 x 1 8 x 1 3 w h i l e y 1 0 d o y 2 2 x 2 x 2 x 2 4 x 2 x 2 3 x 2 6 x 2 x 2 y 2 6 x 2 x 2 8 x 2 3 w h i l e y 2 0 p r i n t f x 1 3f x 2 3f n x 1 x 2 5 12 打印以下图案 参考源程序 i n c l u d e m a t h h m a i n i n t i 1 k l m f o r i 49 i k i 7 l 3 f a b s i 1 7 3 m f a b s i 4 7 i 1 7 i f k 1 p r i n t f n i f m l p r i n t f 6 e l s e p r i n t f p r i n t f n 第 6 章 数组 6 1 用筛选法求 100 以内的素数 参考源程序 m a i n i n t i j a 100 f o r i 2 i 100 i a i i f o r j 2 j i j i f j i i f a i j 0 b r e a k i f a i j 0 p r i n t f 5d a i p r i n t f n 或 i n c l u d e m a t h h m a i n s t a t i c i n t i j k a 98 f o r i 2 i 100 i a i i k s q r t i f o r j 2 j a i j i f j k 1 p r i n t f 5d a i p r i n t f n 6 2 求一个矩阵对角线元素之和 解 以 3 3 矩阵为例 参 考源程序如下 m a i n i n t i 0 j 0 a 3 3 s 1 s 2 f o r i 0 i 3 i f o r j 0 j 0 i i f a i 1 i p r i n t f 5d b i p r i n t f n 6 5 打印出以下杨辉三角形 要求打印出 10 行 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 参考源程序 m a i n s t a t i c i n t m n k b 15 15 b 0 1 1 f o r m 1 m 15 m f o r n 1 n m n b m n b m 1 n 1 b m 1 n p r i n t f 5d b m n p r i n t f n 6 6 找出一个二位数组中的鞍点 即该位置上的元 素在该行上最大 在该列上 最小 也可能没有鞍点 参考源程序 d e f i n e N 10 d e f i n e M 10 m a i n i n t I j m n f l a g 1 f l a g 2 a N M m a x m a x j 输入二维数组 a r r a y 1 p r i n t f 输 入二维数组的行数 s c a n f d p r i n t f 输入二维数组的列数 s c a n f d p r i n t f 输入二维数组 n f o r i 0 i n i f o r j 0 j m j p r i n f 请输入 a 2d 2d I j s c a n f d p r i n t f n 输出数组 p r i n f 二维数组为 n f o r i 0 i n i f o r j 0 j m j p r i n t f d t a i j p r i n t f n 寻找鞍点 f l a g 2 0 f l a g 2 作为数组中是否有鞍点的标 志 f o r i 0 i n i m a x a i 0 f o r j 0 j m a x m a x a i j m a x j j f o r k 0 f l a g 1 1 k a k m a x j j 判断行中的最大值是否 也是列中的是大值 f l a g 1 0 i f f l a g 1 p r i n t f n 第 d 行第 d 列的 d 是鞍点 7 n j m a x j m a x f l a g 2 0 i f f l a g 2 p r i n t f n 无鞍点 n 6 7 从键盘上输入多个字符 编程统计其中字母 空格 数字及其他字符的个数 参考源程序 i n c l u d e s t d i o h Ma i n c h a r s t r 40 i n t a l p h a b e t 0 d i g i t 0 s p a c e 0 o t h e r 0 i 0 p r i n t f 请输入一串字符 n g e t s s t r w h i l e s t r i o i f A s t r i e l s e i f s t r i s p a c e e l s e i f s t r i 0 d i g i t e l s e o t h e r Pr i n t f 其中有 d 个字母 d 个空格 d 个数字 d 个其他字 符 a l p h a b e t s p a c e d i g i t o t h e r 输入学生的学号和各门课程的成绩 p r i n t f 请输入学生数 n 和课程数 m s c a n f d d f o r i 1 i n i p r i n t f 请输入第 d 位学 生的学号 i s c a n f s a i p r i n t f 请按课程顺序输入成绩 f o r p a g e 4 j 1 j m j s c a n f f 找出每门课程最高的学生学号 课程代号和成 绩并输出 Fo r j 1 j m j s t u d i d 1 m a x s c o r e s c o r e 1 j f o r i 1 i m a x s c o r e m a x s c o r e s c o r e i j s t u d i d i Pr i n t f 第 d 门课程最高分的学生学号是 s 成绩为 2f n j a s t u d i d m a x s c o r e 第 7 章 函数 7 1 写出函数定义的一般形式 并说明各部分的意 义 解 略 7 2 函数调 用有哪几种形式 各自有什么特点 解 在 C 语言中 可以用以下几种方式调用函 数 1 函数表达式 函数作为表达式的一项 出现 在表达式中 以函数返回值参 与表达式的运 算 这种方式要求函数是有返回值的 2 函数语句 C 语言中的函 数可以只进行某些 操作而不返回函数值 这时的函数调用作为 一各独立的语句 3 函数实参 函数作为另一个函数调用的实际 参数出现 这种情况是把该函数的 返回值作 为实参进行传送 因此要求该函数必须是有 返回值的 7 3 写两个函数 分别求两个整数的最大公约数和 最小公倍数 用主函数调用这两个函数 并输出结 果两 8 6 8 有 n 个学生 学习 m 门课程 已知所有学生全 部课程的成绩 要求输出 每门课程最高分的学生学号 课程代号和成绩 参考源程序 d e f i n e N 50 d e f i n e m 20 m a i n c h a r a N 10 f l o a t s c o r e N M m a x s c o r e i n t n m i j s t u d i d 个整数由键盘输入 解 参考源程序 i n t m a x y u e s h u i n t m i n t n i n t m n i n t i 1 t f o r i m e l s e j n f o r j m 0j r e t u r n j m a i n i n t a b m a x m i n p r i n t f e n t e r t w o n u m b e r i s s c a n f d d m a x m a x y u e s h u a b m i n m i n b e i s h u a b p r i n t f m a x d m i n d n m a x m i n 7 4 求方程 a x b x c 0 的根 用 三个函数分别求 2 2 当 b 4a c 0 4a c 0 和 b 4a c 0 时的根 f l o a t y i s h i g e n f l o a t m f l o a t n f l o a t k f l o a t m n k f l o a t x 1 x 2 x 1 n s q r t k 2 m x 2 n s q r t k 2 m p r i n t f t w o s h i g e n i s x 1 3f a n d x 2 3f n x 1 x 2 2 求 b 4a c 0 时的根 f l o a t d e n g g e n f l o a t m f o l a t n f l o a t m n f l o a t x x 1 x 2 n 2 m p r i n t f d e n g g e n i s x 3f n x 2 2 2 求 b 4a c 0 y i s h i g e n a b q e l s e i f q 0 d e n g g e n a b e l s e x u g e n a b q 7 5 写一个判断素数的函数 在主函数输入一个整 数 输出是否是素数的消息 解 参考源程序 是素数返回 1 否则返回 0 i n t s u s h u i s i n t m i n t m i n t i 2 t f o r i m i i f m i 0 i f m i 0 t 1 e l s e t 0 r e t u r n t m a i n i n t a s p r i n t f e n t e r n u m b e r i s n s c a n f d s s u s h u i s a i f s 1 p r i n t f a 是素数 n e l s e p r i n t f a 不是素数 n p r i n t f 5d y i p r i n t f n 9 7 6 编一个函数 f u n c h a r s 把字符串中的内容逆 置 例如 字符串中原有的 内容为 g f e d c b a 则调用该 函数后 串中的内容为 a b c d e f g 解 程序分析 该 题的算法是先分别找出字符串的 两头 然后同时逐一往中间移动 每移动一次都进行 两 字符的位置对换 直到中间字符 用 s i i n c l u d e d e f i n e N 81 f u n c h a r s i n t i 0 t n s t r l e n s f o r s i i n c l u d e v o i d f u n c h a r p 1 c h a r p 2 i n t i j f o r i 0 p 1 i i p a g e 5 10 f o r j 0 p 2 j j p 1 i p 2 j p 1 i 0 m a i n c h a r s 1 80 s 2 80 c l r s c r p r i n t f En t e r s 1 a n d s 2 n s c a n f s s s 1 s 2 p r i n t f s 1 s n s 1 p r i n t f s 2 s n s 2 p r i n t f In v o k e f u n s 1 s 2 n f u n s 1 s 2 p r i n t f Af t e r i n v o k i n g n p r i n t f s n s 1 7 8 自定义函数求 3 3 矩阵的转置矩阵 解 程序分析 这题的关键在于进行行列下标转换的算法 由 矩阵 的对称性我们不难看出在进行行列互换时 a j 在好是与 a j i 互换 因而只 要我位让程序走完矩阵的左上角即 可 用 f o r i 0 i 2 i 再套 f o r j i 1 j 3 j 来完 成左上角的走动 参考源程序 i n c l u d e i n t f u n i n t a r r a y 3 3 i n t i j t f o r i 0 i 2 i f o r j i 1 j 3 j t a r r a y i j a r r a y i j a r r a y j i a r r a y j i t m a i n i n t i j i n t a r r a y 3 3 100 200 300 400 500 600 700 80 0 900 c l r s c r f o r i 0 i 3 i f o r j 0 j 3 j p r i n t f 7d a r r a y i j p r i n t f n f u n a r r a y p r i n t f 转置矩阵是 n f o r i 0 i 3 i f o r j 0 j 3 j p r i n t f 7d a r r a y i j p r i n t f n 7 9 用函数实现牛顿迭代法求一元三次方程 的根 解 牛顿迭代法的公式是 x x 0 f x f x 设 5 迭代误差小于 10 时结 束 参考源程序 i n c l u d e f l o a t s o l u t f l o a t a f l o a t b f l o a t c f l o a t d f l o a t x 1 x 0 f f 1 d o x 0 x f a x 0 b x 0 c x 0 d f 1 3 a x 0 2 b x 0 c x x 0 f f 1 w h i l e f a b s x x 0 1e 5 r e t u r n x m a i n f l o a t a b c d p r i n t f 请输入一元三次方程的系数 a b c c n s c a n f f f f f p r i n t f 一元三次方程 为 5 2f x 3 5 2f x 2 5 2f x 5 2f 0 n a b c d p r i n t f 该方程的根为 x 7 2f n s o l u t a b c d CHANGE c d s p r i n t f c d d d n c d 8 2 输入两个整数 求他们相 除的余数 用带参的 宏来实现 编程序 d e f i n e Q a b a b m a i n i n t c d t s c a n f d d t Q c d p r i n t f t d n t 8 3 三角形面积为 三角形的面积公式为 Ar e a s s a s b s c 其中 S a b c 2 定义两个带参的宏 S 一个用来求 a r e a 另一个宏 用来求 写程序 在程序中用带 实参的宏名来求面积 a r e a i n c l u d e m a t h h d e f i n e SSS m n k m n k 2 d e f i n e AQRT m n k s q r t SSS m n k SSS m n k m SSS m n k n S SS m n k k m a i n f l o a t a b c s a r e a s c a n f f f f s SSS a b c a r e a AQRT a b c p r i n t f s 3f a r e a 3f n s a r e a 第8章 编译预处理 8 1 定义一个带参的宏 使两个参数的值互换 并 写出程序 输入两个数作为 使用宏时的实参 输出已交 换后的两个值 解 参考源程序 d e f i n e CHANGE a b t t a a b b a m a i n i n t c d s s c a n f d d 11 8 4 给年份 y e a r 定义一个宏 以判别该年份是否闰 年 提示 宏名可以定义 为 LEAP YEAR 形参为 y 解 参考源程序 d e f i n e LEAPYEAR y y 4 0 s c a n f d i f LEAPYEAR y p r i n t f d i s a n o t l e a p y e a r n y e l s e p r i n t f d i s a l e a r y e a r n y 第9章 指针 9 1 输入三个整数 按由小到大的顺序输出 解 参考源程序 m a i n i n t a b c p 1 p 2 p 3 t s c a n f d d d p 1 p 2 p 3 i f p 1 p 2 t p 1 p 1 p 2 p 2 t i f p 1 p 3 t p 1 p 1 p 3 p 3 t i f p 2 p 3 t p 2 p 2 p 3 p 3 t p r i n t f d d d n p 1 p 2 p 3 或 m a i n i n t a b c p 1 p 2 p 3 t s c a n f d d d p 1 p 2 p 3 i f a b t p 1 p 1 p 2 p 2 t i f a c t p 1 p 1 p 3 p 3 t i f b c t p 2 p 2 p 3 p 3 t p r i n t f d d d n a b c 9 2 输入三个字符串 按由小到大的顺序输出 d e f i n e N 3 d e f i n e M 20 m a i n c h a r s t r 0 N M s t r 1 M p q i n t i l m n q s t r 0 f o r p 0 s t r c p y s t r 1 p a g e 6 q s t r c p y q q 1 s t r c p y q 1 s t r 1 m s t r c m p q q 2 i f m 0 s t r c p y s t r 1 q s t r c p y q q 2 s t r c p y q 2 s t r 1 n s t r c m p q 1 q 2 i f n 0 s t r c p y s t r 1 q s t r c p y q 1 q 2 s t r c p y q 2 q 1 12 f o r p q p q N p p u t s p 9 3 输入 10 个整数 将其中最小的数与第 一个数对 换 把最大的数与最后一个数对换 写三个函数 输 入 10 个数 进 行处理 输出 10 个数 解 参考源程序 v o i d f x n i n t x n i n t p 0 p 1 i j t y i j x 0 p 0 p 1 x f o r y 0 y i i x y p 0 e l s e i f x y j j x y p 1 t p 0 p 0 x n 1 x n 1 t t p 1 p 1 x 0 x 0 t r e t u r n m a i n i n t a 10 u r f o r u 0 u 10 u s c a n f d f a 10 f o r u 0 r a u 10 u r p r i n t f d a u p r i n t f n 9 4 有 n 人围成一圈 顺序排号 从第 1 个人开始 报数 从 1 到 3 报数 凡报到 3 的人退出圈子 问最后 留下的是原来的第几号的那位 d e f i n e N 5 m a i n i n t i j k a N 1 p f o r i 0 p a p a N p a 1 i f p 0 i i f i 3 0 p 0 i 0 k p f o r i 1 i 1 e l s e p r i n t f 输入错误 i n t d a y s 13 0 31 28 31 30 31 30 31 31 30 31 30 31 s t r u c t d a t e d a t a i n t m o n t h s u m 输入日期 Pr i n t f 请输入日期 年月日间用逗号隔开 n Sc a n f d d d 计算天数 Fo r m o n t h 1 s u m 0 m o n t h 2 s u m l e a p d a t a y e a r 输出结果 Pr i n t f d 年 d 月 d 日是 d 年的第 d 天 d a t a y e a r d a t a m o n t h d a t a d a y d a t a y e a r s u m 10 2 某学习小组有 5 个人 每个人的信息包括 学号 姓名 和成绩 要求从键盘上输入他们的信息 并 求出平均成绩以及最高成绩者的信息 解 参考源程序 d e f i n e NUM 5 i n c l u d e c o n i o h 定义学生信息结构类型 s t r u c t s t u d e n t s c h a r n o 7 n a m e 9 i n t s c o r e 主函数 m a i n s t r u c t s t u d e n t s t u NUM i n t c o u n t m a x 0 s u m 0 输入学生信息 f o r c o u n t 0 c o u n t s t u m a x s c o r e 13 第10章 结构与链表 10 1 定义一个日期结构变量 由年 月 日 3 个整 形数据组成 计算该日期 是本年度的第几日 解 参考源程序 定义日期结构类型 s t r u c t d a t e i n t y e a r m o n t h d a y 自定义函数 l e a p 判断是否闰年 i n t l e a p i n t y e a r i n t y f l a g 0 i f y 4 0 r e t u r n f l a g 主函数 m a i n m a x c o u n t 输出平均成绩和最高成绩学生的信息 p r i n t f n a v e r a g e 2f n f l o a t s u m NUM p r i n t f 最高成绩者信息 n p r i n t f 学号 s n s t u m a x n o p r i n t f 姓名 s n s t u m a x n a m e p r i n t f 分数 s n s t u m a x s c o r e g e t c h 10 3 编写一个程序 使用单链表作数据结构 p a g e 7 解 决 Jo s e p h u s 问题 Jo s e p h u s 问题描述如下 设有 n 个 人围坐一圈 现从第 s 个人开始报数 数到 m 的人出列 然后从出列的下一个人重新开始报数 数到 m 的人出 列 如此反复 直至所有的人都出列 Jo s e p h u s 问 题是 对于任意给 定的 n s 和 m s n m n o i f n e w n o 1 f r e e n e w b r e a k c o u n t 2 将新结点插入到链表尾 并设置 新的尾 指针 n e w n e x t NULL i f c o u n t 1 h e a d n e w 是第一个 结点则置头指针 14 e l s e t a i l n e x t n e w t a i l n e w r e t u r n h e a d 求出列顺序 返回出 列单链表的头指针 s t r u c t n o d e j o s e p h u s s t r u c t n o d e h e a d i n t n i n t s i n t m s t r u c t n o d e p p r i o r h e a d o u t t a i l o u t i n t c o u n t n u m 0 查找 开始位置 p h e a d p r i o r NULL f o r c o u n t 1 c o u n t n e x t 报数出列 w h i l e n u m n 1 从 S 开始报数 报到 m 的人出列 c o u n t 1 f o r c o u n t n e x t NULL p r i o r NULL p h e a d e l s e p r i o r p p p n e x t 出列处 理 p r i o r n e x t p n e x t n u m 将出列结点插入到出列链表中 i f n u m 1 h e a o u t t a i l o u t p e l s e t a i l o u t n e x t p t a i l o u t p i f p h e a d h e a d h e a d n e x t i f p n e x t NULL p h e a d e l s e p p n e x t 将最后出列的结点插入 到出列链表中 t a i l o u t n e x t p p n e x t NULL r e t u r n h e a d o u t v o i d m a i n s t r u c t n o d e h e a d h e a d o u t h e a d c r e a t e h e a d o u t j o s p h u s h e a d 7 2 5 p r i n t f o u t o f t h e q u e u e n w h i l e h e a d o u t NULL p r i n t f d h e a d o u t n o h e a d o u t h e a d o u t n e x t g e t c h 第 11 章 文件 11 1 从键盘输入一个字符串 将小写字母全部转换成大 写字母 然后输出到一 个磁盘文件 t e s t 中保存 输入的字符串以 结束 1 程序分析 2 程序源代码 i n c l u d e s t d i o h m a i n FILE f p c h a r s t r 100 f i l e n a m e 10 i n t i 0 i f f p f o p e n t e s t w NULL p r i n t f c a n n o t o p e n t h e f i l e n e x i t 0 p r i n t f p l e a s e i n p u t a s t r i n g n g e t s s t r w h i l e s t r i i f s t r i a f p u t c s t r i f p i f c l o s e f p f p f o p e n t e s t r f g e t s s t r s t r l e n s t r 1 f p p r i n t f s n s t r f c l o s e f p s t u 5 m a i n i n t i j s u m FILE f p i n p u t f o r i 0 i 5 i p r i n t f n p l e a s e i n p u t No d s c o r e n i p r i n t f s t u No s c a n f s s t u i n u m p r i n t f n a m e s c a n f s s t u i n a m e s u m 0 f o r j 0 j 3 j p r i n t f s c o r e d j 1 s c a n f d s u m s t u i s c o r e j s t u i a v r s u m 3 0 f p f o p e n s t u d w f o r i 0 i c s c a n f d d d i f a b i f a c t a e l s e t c e l s e i f b c t b e l s e t c p r i n t f d n t 4 3 给出一百分制成绩 要求输出成绩等 级 A B C D E 90 分以上为 A 80 89 分为 B 70 79 分为 C 60 69 分为 D 60 分以下为 E 参考源程序 m a i n i n t n u m b e r m d c h a r c 1 s c a n f d m d n u m b e r 10 s w i t c h m d c a s e 10 c a s e 9 c 1 A b r e a k c a s e 8 c 1 B b r e a k c a s e 7 c 1 C b r e a k c a s e 6 c 1 D b r e a k c a s e 5 c a s e 4 c a s e 3 c a s e 2 c a s e 1 c a s e 0 c 1 E b r e a k p r i n t f c n c 1 4 4 给一个不多于 5 位的正整数 要求 求出它 是几位数 分别 打印出每一位数字 按逆顺序打印 出各位数字 例如原来为 321 应输出 123 参考源程序 m a i n i n t a b c d e n l o n g m s c a n f l d a 0 0001 m b 10 0 0001 m a c 100 0 0001 m a 0 1 b d 1000 0 0001 m a 0 1 b 0 01 c e m 10000 a 1000 b 100 c 10 d 3 i f a 0 n 5 p r i n t f d d d d d d d d d d d n n a b c d e e d c b a e l s e i f b 0 n 4 p r i n t f d d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026ibm 前端 面试题及答案
- 2026java的高级面试题及答案
- 2026linux简答面试题及答案
- 2026年涂料环保检测技工试题及答案
- 小学五年级科学“铁生锈的条件”专题探究知识清单
- 2026年竞业限制管理专员试题及答案
- 高中二年级物理 闭合电路欧姆定律知识清单
- 2026年教师资格证教育知识及能力试题及答案
- 2026年基金从业资格(证券投资基金)试题及答案
- 初中道德与法治七年级上册“友谊的层次与边界”教学设计
- 湖北省武汉市江汉区北湖小学2025年数学三下期末质量检测模拟试题含解析
- 2026年注册安全工程师考试《安全管理》冲刺押题试卷(含解析)
- 2026-2030中国碳化硅(SiC)半导体器件市场发展现状及未来供需平衡预测报告
- (2026年)手术安全核查与风险评估课件
- 2025北京市朝阳区太阳宫乡社区工作者招聘考试真题及答案
- 2026年国家电投招聘笔试参考题库含答案解析
- 防范银狐木马病毒与补贴诈骗信息课件
- 2026版中央安全生产考核巡查明查暗访应知应会
- 肥西反邪教协会工作制度
- 六化建设培训
- TSG08-2026《特种设备使用管理规则》全面解读课件
评论
0/150
提交评论