1、C 语言经典算法整理 【 程 序 1 】 题 目 : 有 1 、 2 、 3 、 4 个 数 字 , 能 组 成 多 少 个 互 不 相 同 且 无 重 复 数 字 的 三 位 数 ? 都 是 多 少 ? 1 . 程 序 分 析 : 可 填 在 百 位 、 十 位 、 个 位 的 数 字 都 是 1 、 2 、 3 、 4 。 组 成 所 有 的 排 列 后 再 去 掉 不 满 足 条 件 的 排 列 。 2 . 程 序 源 代 码 : m a i n ( ) i n t i , j , k ; p r i n t f ( “ n “ ) ; f o r ( i = 1 ; i 5 ; i +
2、 + ) * 以 下 为 三 重 循 环 * / f o r ( j = 1 ; j 5 ; j + + ) f o r ( k = 1 ; k 5 ; k + + ) i f ( i ! = k = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 2 】 题 目 : 企 业 发 放 的 奖 金 根 据 利 润 提 成 。 利 润 ( I ) 低 于 或 等 于 1 0 万 元 时 , 奖
3、 金 可 提 1 0 % ; 利 润 高 于 1 0 万 元 , 低 于 2 0 万 元 时 , 低 于 1 0 万 元 的 部 分 按 1 0 % 提 成 , 高 于 1 0 万 元 的 部 分 , 可 可 提 成 7 . 5 % ; 2 0 万 到 4 0 万 之 间 时 , 高 于 2 0 万 元 的 部 分 , 可 提 成 5 % ; 4 0 万 到 6 0 万 之 间 时 高 于 4 0 万 元 的 部 分 , 可 提 成 3 % ; 6 0 万 到 1 0 0 万 之 间 时 , 高 于 6 0 万 元 的 部 分 , 可 提 成 1 . 5 % , 高 于 1 0 0 万 元 时
4、 , 超 过 1 0 0 万 元 的 部 分 按 1 % 提 成 , 从 键 盘 输 入 当 月 利 润 I , 求 应 发 放 奖 金 总 数 ? 1 . 程 序 分 析 : 请 利 用 数 轴 来 分 界 , 定 位 。 注 意 定 义 时 需 把 奖 金 定 义 成 长 整 型 。 2 . 程 序 源 代 码 : m a i n ( ) l o n g i n t i ; i n t b o n u s 1 , b o n u s 2 , b o n u s 4 , b o n u s 6 , b o n u s 1 0 , b o n u s ; s c a n f ( “ % l d
5、 “ , b o n u s 1 = 1 0 0 0 0 0 * 0 . 1 ; b o n u s 2 = b o n u s 1 + 1 0 0 0 0 0 * 0 . 7 5 ; b o n u s 4 = b o n u s 2 + 2 0 0 0 0 0 * 0 . 5 ; b o n u s 6 = b o n u s 4 + 2 0 0 0 0 0 * 0 . 3 ; b o n u s 1 0 = b o n u s 6 + 4 0 0 0 0 0 * 0 . 1 5 ; i f ( i = 1 0 0 0 0 0 ) b o n u s = i * 0 . 1 ; e l s
6、 e i f ( i = 2 0 0 0 0 0 ) b o n u s = b o n u s 1 + ( i - 1 0 0 0 0 0 ) * 0 . 0 7 5 ; e l s e i f ( i = 4 0 0 0 0 0 ) b o n u s = b o n u s 2 + ( i - 2 0 0 0 0 0 ) * 0 . 0 5 ; e l s e i f ( i = 6 0 0 0 0 0 ) b o n u s = b o n u s 4 + ( i - 4 0 0 0 0 0 ) * 0 . 0 3 ; e l s e i f ( i = 1 0 0 0 0 0 0 )
7、 b o n u s = b o n u s 6 + ( i - 6 0 0 0 0 0 ) * 0 . 0 1 5 ; e l s eb o n u s = b o n u s 1 0 + ( i - 1 0 0 0 0 0 0 ) * 0 . 0 1 ; p r i n t f ( “ b o n u s = % d “ , b o n u s ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
8、= = 【 程 序 3 】 题 目 : 一 个 整 数 , 它 加 上 1 0 0 后 是 一 个 完 全 平 方 数 , 再 加 上 1 6 8 又 是 一 个 完 全 平 方 数 , 请 问 该 数 是 多 少 ? 1 . 程 序 分 析 : 在 1 0 万 以 内 判 断 , 先 将 该 数 加 上 1 0 0 后 再 开 方 , 再 将 该 数 加 上 2 6 8 后 再 开 方 , 如 果 开 方 后 的 结 果 满 足 如 下 条 件 , 即 是 结 果 。 请 看 具 体 分 析 : 2 . 程 序 源 代 码 : # i n c l u d e “ m a t h . h “
9、m a i n ( ) l o n g i n t i , x , y , z ; f o r ( i = 1 ; i 1 0 0 0 0 0 ; i + + ) x = s q r t ( i + 1 0 0 ) ; / * x 为 加 上 1 0 0 后 开 方 后 的 结 果 * / y = s q r t ( i + 2 6 8 ) ; / * y 为 再 加 上 1 6 8 后 开 方 后 的 结 果 * / i f ( x * x = = i + 1 0 0 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
10、= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 4 】 题 目 : 输 入 某 年 某 月 某 日 , 判 断 这 一 天 是 这 一 年 的 第 几 天 ? 1 . 程 序 分 析 : 以 3 月 5 日 为 例 , 应 该 先 把 前 两 个 月 的 加 起 来 , 然 后 再 加 上 5 天 即 本 年 的 第 几 天 , 特 殊 情 况 , 闰 年 且 输 入 月 份 大 于 3 时 需 考 虑 多 加 一 天 。 2 . 程 序 源 代 码 : m a i n ( ) i n t d a y ,
11、m o n t h , y e a r , s u m , l e a p ; p r i n t f ( “ n p l e a s e i n p u t y e a r , m o n t h , d a y n “ ) ; s c a n f ( “ % d , % d , % d “ , s w i t c h ( m o n t h ) / * 先 计 算 某 月 以 前 月 份 的 总 天 数 * / c a s e 1 : s u m = 0 ; b r e a k ; c a s e 2 : s u m = 3 1 ; b r e a k ; c a s e 3 : s u
12、m = 5 9 ; b r e a k ; c a s e 4 : s u m = 9 0 ; b r e a k ; c a s e 5 : s u m = 1 2 0 ; b r e a k ; c a s e 6 : s u m = 1 5 1 ; b r e a k ; c a s e 7 : s u m = 1 8 1 ; b r e a k ; c a s e 8 : s u m = 2 1 2 ; b r e a k ; c a s e 9 : s u m = 2 4 3 ; b r e a k ; c a s e 1 0 : s u m = 2 7 3 ; b r e a k
13、; c a s e 1 1 : s u m = 3 0 4 ; b r e a k ; c a s e 1 2 : s u m = 3 3 4 ; b r e a k ; d e f a u l t : p r i n t f ( “ d a t a e r r o r “ ) ; b r e a k ; s u m = s u m + d a y ; / * 再 加 上 某 天 的 天 数 * / i f ( y e a r % 4 0 0 = = 0 | | ( y e a r % 4 = = 0 e l s e l e a p = 0 ; i f ( l e a p = = 1 p r
14、i n t f ( “ I t i s t h e % d t h d a y . “ , s u m ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 5 】 题 目 : 输 入 三 个 整 数 x , y , z , 请 把 这 三 个 数 由 小 到 大 输 出 。 1 . 程 序 分 析 : 我 们 想 办 法 把 最 小 的 数 放 到 x 上 , 先 将 x 与 y
15、进 行 比 较 , 如 果 x y 则 将 x 与 y 的 值 进 行 交 换 , 然 后 再 用 x 与 z 进 行 比 较 , 如 果 x z 则 将 x 与 z 的 值 进 行 交 换 , 这 样 能 使 x 最 小 。 2 . 程 序 源 代 码 : m a i n ( ) i n t x , y , z , t ; s c a n f ( “ % d % d % d “ , i f ( x y ) t = x ; x = y ; y = t ; / * 交 换 x , y 的 值 * / i f ( x z ) t = z ; z = x ; x = t ; / * 交 换 x ,
16、z 的 值 * / i f ( y z ) t = y ; y = z ; z = t ; / * 交 换 z , y 的 值 * / p r i n t f ( “ s m a l l t o b i g : % d % d % d n “ , x , y , z ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 6 】 题 目 : 用 * 号 输 出 字 母 C 的 图 案
17、。 1 . 程 序 分 析 : 可 先 用 * 号 在 纸 上 写 出 字 母 C , 再 分 行 输 出 。 2 . 程 序 源 代 码 : # i n c l u d e “ s t d i o . h “ m a i n ( ) p r i n t f ( “ H e l l o C - w o r l d ! n “ ) ; p r i n t f ( “ * * * * n “ ) ; p r i n t f ( “ * n “ ) ; p r i n t f ( “ * n “ ) ; p r i n t f ( “ * * * * n “ ) ; = = = = = = = =
18、= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 7 】 题 目 : 输 出 特 殊 图 案 , 请 在 c 环 境 中 运 行 , 看 一 看 , V e r y B e a u t i f u l ! 1 . 程 序 分 析 : 字 符 共 有 2 5 6 个 。 不 同 字 符 , 图 形 不 一 样 。 2 . 程 序 源 代 码 : # i n c l u d e “ s t d i o . h “ m a
19、i n ( ) c h a r a = 1 7 6 , b = 2 1 9 ;p r i n t f ( “ % c % c % c % c % c n “ , b , a , a , a , b ) ; p r i n t f ( “ % c % c % c % c % c n “ , a , b , a , b , a ) ; p r i n t f ( “ % c % c % c % c % c n “ , a , a , b , a , a ) ; p r i n t f ( “ % c % c % c % c % c n “ , a , b , a , b , a ) ; p r i
20、 n t f ( “ % c % c % c % c % c n “ , b , a , a , a , b ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 8 】 题 目 : 输 出 9 * 9 口 诀 。 1 . 程 序 分 析 : 分 行 与 列 考 虑 , 共 9 行 9 列 , i 控 制 行 , j 控 制 列 。 2 . 程 序 源 代 码 : # i n c l
21、 u d e “ s t d i o . h “ m a i n ( ) i n t i , j , r e s u l t ; p r i n t f ( “ n “ ) ; f o r ( i = 1 ; i 1 0 ; i + + ) f o r ( j = 1 ; j 1 0 ; j + + ) r e s u l t = i * j ; p r i n t f ( “ % d * % d = % - 3 d “ , i , j , r e s u l t ) ; / * - 3 d 表 示 左 对 齐 , 占 3 位 * / p r i n t f ( “ n “ ) ; / * 每
22、 一 行 后 换 行 * / = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 9 】 题 目 : 要 求 输 出 国 际 象 棋 棋 盘 。 1 . 程 序 分 析 : 用 i 控 制 行 , j 来 控 制 列 , 根 据 i + j 的 和 的 变 化 来 控 制 输 出 黑 方 格 , 还 是 白 方 格 。 2 . 程 序 源 代 码 : # i n c l u d e “ s
23、 t d i o . h “ m a i n ( ) i n t i , j ; f o r ( i = 0 ; i 8 ; i + + ) f o r ( j = 0 ; j 8 ; j + + ) i f ( ( i + j ) % 2 = = 0 ) p r i n t f ( “ % c % c “ , 2 1 9 , 2 1 9 ) ; e l s e p r i n t f ( “ “ ) ; p r i n t f ( “ n “ ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
24、 = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 1 0 】 题 目 : 打 印 楼 梯 , 同 时 在 楼 梯 上 方 打 印 两 个 笑 脸 。 1 . 程 序 分 析 : 用 i 控 制 行 , j 来 控 制 列 , j 根 据 i 的 变 化 来 控 制 输 出 黑 方 格 的 个 数 。 2 . 程 序 源 代 码 : # i n c l u d e “ s t d i o . h “ m a i n ( ) i n t i , j ; p r i n t f ( “ 1 1 n “ ) ; / * 输 出 两 个
25、 笑 脸 * / f o r ( i = 1 ; i 1 1 ; i + + ) f o r ( j = 1 ; j = i ; j + + ) p r i n t f ( “ % c % c “ , 2 1 9 , 2 1 9 ) ; p r i n t f ( “ n “ ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 1 1 】 题 目 : 古 典 问 题 : 有 一 对
26、 兔 子 , 从 出 生 后 第 3 个 月 起 每 个 月 都 生 一 对 兔 子 , 小 兔 子 长 到 第 三 个 月 后 每 个 月 又 生 一 对 兔 子 , 假 如 兔 子 都 不 死 , 问 每 个 月 的 兔 子 总 数 为 多 少 ? 1 . 程 序 分 析 : 兔 子 的 规 律 为 数 列 1 , 1 , 2 , 3 , 5 , 8 , 1 3 , 2 1 . . . . 2 . 程 序 源 代 码 : m a i n ( ) l o n g f 1 , f 2 ; i n t i ; f 1 = f 2 = 1 ; f o r ( i = 1 ; i = 2 0 ; i
27、 + + ) p r i n t f ( “ % 1 2 l d % 1 2 l d “ , f 1 , f 2 ) ; i f ( i % 2 = = 0 ) p r i n t f ( “ n “ ) ; / * 控 制 输 出 , 每 行 四 个 * / f 1 = f 1 + f 2 ; / * 前 两 个 月 加 起 来 赋 值 给 第 三 个 月 * / f 2 = f 1 + f 2 ; / * 前 两 个 月 加 起 来 赋 值 给 第 三 个 月 * / = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
28、 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 1 2 】 题 目 : 判 断 1 0 1 - 2 0 0 之 间 有 多 少 个 素 数 , 并 输 出 所 有 素 数 。 1 . 程 序 分 析 : 判 断 素 数 的 方 法 : 用 一 个 数 分 别 去 除 2 到 s q r t ( 这 个 数 ) , 如 果 能 被 整 除 , 则 表 明 此 数 不 是 素 数 , 反 之 是 素 数 。 2 . 程 序 源 代 码 : # i n c l u d e “ m a t h . h “ m a
29、 i n ( ) i n t m , i , k , h = 0 , l e a p = 1 ; p r i n t f ( “ n “ ) ; f o r ( m = 1 0 1 ; m k , 但 n 能 被 k 整 除 , 则 应 打 印 出 k 的 值 , 并 用 n 除 以 k 的 商 , 作 为 新 的 正 整 数你 n , 重 复 执 行 第 一 步 。 ( 3 ) 如 果 n 不 能 被 k 整 除 , 则 用 k + 1 作 为 k 的 值 , 重 复 执 行 第 一 步 。 2 . 程 序 源 代 码 : / * z h e n g i n t i s d i v i d
30、e d y i n s h u * / m a i n ( ) i n t n , i ; p r i n t f ( “ n p l e a s e i n p u t a n u m b e r : n “ ) ; s c a n f ( “ % d “ , p r i n t f ( “ % d = “ , n ) ; f o r ( i = 2 ; i = 9 0 分 的 同 学 用 A 表 示 , 6 0 - 8 9 分 之 间 的 用 B 表 示 , 6 0 分 以 下 的 用 C 表 示 。 1 . 程 序 分 析 : ( a b ) ? a : b 这 是 条 件 运 算 符
31、的 基 本 例 子 。 2 . 程 序 源 代 码 : m a i n ( ) i n t s c o r e ; c h a r g r a d e ; p r i n t f ( “ p l e a s e i n p u t a s c o r e n “ ) ; s c a n f ( “ % d “ , g r a d e = s c o r e = 9 0 ? A : ( s c o r e = 6 0 ? B : C ) ; p r i n t f ( “ % d b e l o n g s t o % c “ , s c o r e , g r a d e ) ; = = =
32、= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 1 6 】 题 目 : 输 入 两 个 正 整 数 m 和 n , 求 其 最 大 公 约 数 和 最 小 公 倍 数 。 1 . 程 序 分 析 : 利 用 辗 除 法 。2 . 程 序 源 代 码 : m a i n ( ) i n t a , b , n u m 1 , n u m 2 , t e m p ; p r i n t f ( “ p
33、 l e a s e i n p u t t w o n u m b e r s : n “ ) ; s c a n f ( “ % d , % d “ , i f ( n u m 1 t e m p = n u m 1 ; n u m 1 = n u m 2 ; n u m 2 = t e m p ; a = n u m 1 ; b = n u m 2 ; w h i l e ( b ! = 0 ) / * 利 用 辗 除 法 , 直 到 b 为 0 为 止 * / t e m p = a % b ; a = b ; b = t e m p ; p r i n t f ( “ g o n g
34、 y u e s h u : % d n “ , a ) ; p r i n t f ( “ g o n g b e i s h u : % d n “ , n u m 1 * n u m 2 / a ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 1 7 】 题 目 : 输 入 一 行 字 符 , 分 别 统 计 出 其 中 英 文 字 母 、 空 格 、 数 字 和 其 它
35、 字 符 的 个 数 。 1 . 程 序 分 析 : 利 用 w h i l e 语 句 , 条 件 为 输 入 的 字 符 不 为 n . 2 . 程 序 源 代 码 : # 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 l e t t e r s = 0 , s p a c e = 0 , d i g i t = 0 , o t h e r s = 0 ; p r i n t f ( “ p l e a s e i n p u t s o m e c h a r a c t e r s n “ ) ; w h i
36、 l e ( ( c = g e t c h a r ( ) ) ! = n ) i f ( c = a e l s e o t h e r s + + ; p r i n t f ( “ a l l i n a l l : c h a r = % d s p a c e = % d d i g i t = % d o t h e r s = % d n “ , l e t t e r s , s p a c e , d i g i t , o t h e r s ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
37、 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 1 8 】 题 目 : 求 s = a + a a + a a a + a a a a + a a . . . a 的 值 , 其 中 a 是 一 个 数 字 。 例 如 2 + 2 2 + 2 2 2 + 2 2 2 2 + 2 2 2 2 2 ( 此 时 共 有 5 个 数 相 加 ) , 几 个 数 相 加 有 键 盘 控 制 。 1 . 程 序 分 析 : 关 键 是 计 算 出 每 一 项 的 值 。 2 . 程 序 源 代 码 : m a i n
38、 ( ) i n t a , n , c o u n t = 1 ; l o n g i n t s n = 0 , t n = 0 ; p r i n t f ( “ p l e a s e i n p u t a a n d n n “ ) ; s c a n f ( “ % d , % d “ , p r i n t f ( “ a = % d , n = % d n “ , a , n ) ; w h i l e ( c o u n t = n ) t n = t n + a ; s n = s n + t n ; a = a * 1 0 ; + + c o u n t ; p r i
39、 n t f ( “ a + a a + . . . = % l d n “ , s n ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 1 9 】 题 目 : 一 个 数 如 果 恰 好 等 于 它 的 因 子 之 和 , 这 个 数 就 称 为 “ 完 数 ” 。 例 如 6 = 1 2 3 . 编 程 找 出 1 0 0 0 以 内 的 所 有 完 数 。 1 . 程 序
40、 分 析 : 请 参 照 程 序 - - 上 页 程 序 1 4 . 2 . 程 序 源 代 码 : m a i n ( ) s t a t i c i n t k 1 0 ; i n t i , j , n , s ; f o r ( j = 2 ; j 1 0 0 0 ; j + + ) n = - 1 ; s = j ; f o r ( i = 1 ; i i f ( ( j % i ) = = 0 ) n + + ; s = s - i ; k n = i ; i f ( s = = 0 ) p r i n t f ( “ % d i s a w a n s h u “ , j ) ;
41、 f o r ( i = 0 ; i p r i n t f ( “ % d , “ , k i ) ; p r i n t f ( “ % d n “ , k n ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 2 0 】 题 目 : 一 球 从 1 0 0 米 高 度 自 由 落 下 , 每 次 落 地 后 反 跳 回 原 高 度 的 一 半 ; 再 落 下 , 求 它 在
42、 第 1 0 次 落 地 时 , 共 经 过 多 少 米 ? 第 1 0 次 反 弹 多 高 ? 1 . 程 序 分 析 : 见 下 面 注 释 2 . 程 序 源 代 码 : m a i n ( ) f l o a t s n = 1 0 0 . 0 , h n = s n / 2 ; i n t n ; f o r ( n = 2 ; n 0 ) x 1 = ( x 2 + 1 ) * 2 ; / * 第 一 天 的 桃 子 数 是 第 2 天 桃 子 数 加 1 后 的 2 倍 * / x 2 = x 1 ; d a y - - ; p r i n t f ( “ t h e t o t
43、 a l i s % d n “ , x 1 ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =【 程 序 2 2 】 题 目 : 两 个 乒 乓 球 队 进 行 比 赛 , 各 出 三 人 。 甲 队 为 a , b , c 三 人 , 乙 队 为 x , y , z 三 人 。 已 抽 签 决 定 比 赛 名 单 。 有 人 向 队 员 打 听 比 赛 的 名 单 。 a 说 他 不 和
44、x 比 , c 说 他 不 和 x , z 比 , 请 编 程 序 找 出 三 队 赛 手 的 名 单 。 1 . 程 序 分 析 : 判 断 素 数 的 方 法 : 用 一 个 数 分 别 去 除 2 到 s q r t ( 这 个 数 ) , 如 果 能 被 整 除 , 则 表 明 此 数 不 是 素 数 , 反 之 是 素 数 。 2 . 程 序 源 代 码 : m a i n ( ) c h a r i , j , k ; / * i 是 a 的 对 手 , j 是 b 的 对 手 , k 是 c 的 对 手 * / f o r ( i = x ; i = z ; i + + ) f
45、o r ( j = x ; j = z ; j + + ) i f ( i ! = j ) f o r ( k = x ; k = z ; k + + ) i f ( i ! = k = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 2 3 】 题 目 : 打 印 出 如 下 图 案 ( 菱 形 ) * * * * * * * * * * * * * * * * * * * * * *
46、* * * * * * 1 . 程 序 分 析 : 先 把 图 形 分 成 两 部 分 来 看 待 , 前 四 行 一 个 规 律 , 后 三 行 一 个 规 律 , 利 用 双 重 f o r 循 环 , 第 一 层 控 制 行 , 第 二 层 控 制 列 。 2 . 程 序 源 代 码 : m a i n ( ) i n t i , j , k ; f o r ( i = 0 ; i = 3 ; i + + ) f o r ( j = 0 ; j = 2 - i ; j + + ) p r i n t f ( “ “ ) ; f o r ( k = 0 ; k = 2 * i ; k +
47、+ ) p r i n t f ( “ * “ ) ;p r i n t f ( “ n “ ) ; f o r ( i = 0 ; i = 2 ; i + + ) f o r ( j = 0 ; j = i ; j + + ) p r i n t f ( “ “ ) ; f o r ( k = 0 ; k = 4 - 2 * i ; k + + ) p r i n t f ( “ * “ ) ; p r i n t f ( “ n “ ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
48、 = = = = = = = = = = = = = = = = = = = = = = = = 【 程 序 2 4 】 题 目 : 有 一 分 数 序 列 : 2 / 1 , 3 / 2 , 5 / 3 , 8 / 5 , 1 3 / 8 , 2 1 / 1 3 . . . 求 出 这 个 数 列 的 前 2 0 项 之 和 。 1 . 程 序 分 析 : 请 抓 住 分 子 与 分 母 的 变 化 规 律 。 2 . 程 序 源 代 码 : m a i n ( ) i n t n , t , n u m b e r = 2 0 ; f l o a t a = 2 , b = 1 , s = 0 ; f o r ( n = 1 ; n = n u m b e r ; n + + ) s = s + a / b ; t = a ; a = a + b ; b = t ; / * 这 部 分 是 程 序 的 关 键 , 请 读 者 猜 猜 t 的 作 用 * / p r i n t f ( “ s u m i s % 9 . 6 f n “ , s ) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =