C語(yǔ)言程序設(shè)計(jì)第三版譚浩強(qiáng)課后習(xí)題答案完整版
《C語(yǔ)言程序設(shè)計(jì)第三版譚浩強(qiáng)課后習(xí)題答案完整版》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語(yǔ)言程序設(shè)計(jì)第三版譚浩強(qiáng)課后習(xí)題答案完整版(30頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1 C 語(yǔ)言程序設(shè)計(jì)第三版譚浩強(qiáng) 課后習(xí)題答案完整版 第一章 1 5 請(qǐng)參照本章例題 編寫一個(gè) C 程序 輸出以下信息 Very Good 解 mian printf printf n printf Very Good n printf n printf 1 6 編寫一個(gè)程序 輸入 a b c 三個(gè)值 輸出其中最大 值 解 mian int a b c max printf 請(qǐng)輸入三個(gè)數(shù) a b c n scanf d d d max a if max b max b if max c max c printf 最大數(shù)為 d max 第三章 3 6 寫出以下程序運(yùn)行的結(jié)果 main char c1 a c2 b c3 c c4 101 c5 116 printf a cb c tc c tabc n c1 c2 c3 printf t b c c c4 c5 解 aa bb cc abc A N 3 7 要將 China 譯成密碼 譯碼規(guī)律是 用原來(lái)字母后 面的第 4 個(gè)字母代替原來(lái)的字母 例如 字母 A 后面第 4 個(gè)字母是 E E 代替 A 因此 China 應(yīng)譯為 Glmre 請(qǐng)編一程序 用賦初值的方法使 cl c2 c3 c4 c5 五個(gè)變量的值分別為 C h i n a 經(jīng)過(guò)運(yùn)算 使 c1 c2 c3 c4 c5 分別變 為 G l m r e 并輸出 解 include main char c1 C c2 h c3 i c4 n c5 a c1 4 c2 4 c3 4 c4 4 c5 4 printf 密碼是 c c c c c n c1 c2 c3 c4 c5 運(yùn)行結(jié)果 密碼是 Glmre 3 9 求下面算術(shù)表達(dá)式的值 1 x a 3 int x y 2 4 設(shè) x 2 5 a 7 y 4 7 2 float a b 2 int x int y 設(shè) a 2 b 3 x 3 5 y 2 5 1 2 5 2 3 5 3 10 寫出程序運(yùn)行的結(jié)果 main int i j m n i 8 j 10 m i n j printf d d d d i j m n 解 9 11 9 10 3 12 寫出下面表達(dá)式運(yùn)算后 a 的值 設(shè)原來(lái) a 12 設(shè) a 和 n 都已定義為整型變量 1 a a 2 a 2 3 a 2 3 4 a a a 5 a n 2 n 的值等于 5 6 a a a a 解 1 24 2 10 3 60 4 0 5 0 6 0 第四章 4 4 若 a 3 b 4 c 5 x 1 2 y 2 4 z 3 6 u 51274 n 128765 c1 a c2 b 想得到以 下輸出格式和結(jié)果 請(qǐng)寫出程序 包括定義變量類型和設(shè) 計(jì)輸出 a 3 b 4 c 5 x 1 200000 y 2 400000 z 3 600000 2 x y 3 600 y z 1 20 z x 2 40 c1 a or 97 ASCII c2 b or 98 ASCII main int a 3 b 4 c 5 long int u 51274 n 128765 float x 1 2 y 2 4 z 3 6 char c1 a c2 b printf a 2d b 2d c 2d n a b c printf x f y f z f n x y z printf x y 5 2f y z 5 2f z x 5 2f n x y y z z x printf u 6ld n 9ld n u n printf s s d s n c1 a or c1 ASCII printf s s d s n c2 a or c2 ASCII 4 7 用 scanf 下面的函數(shù)輸入數(shù)據(jù) 使 a 3 b 7 x 8 5 y 71 82 c1 A c2 a 問(wèn)在 鍵盤上如何輸入 main int a b float x y char c1c2 scanf a d b d scanf 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 printf C1 2f n C1 printf Sa 2f nSb 2f nVa 2f nVb 2f n Sa Sb Va Vb 4 9 輸入一個(gè)華氏溫度 要求輸出攝氏溫度 公式為 c 5 F 32 9 輸出要求有文字說(shuō)明 取位 2 小數(shù) main float F c scanf f c 5 F 32 9 printf c 2f c 4 10 編程序 用 getchar 函數(shù)讀入兩個(gè)字符給 c1 c2 然后分別用函數(shù)和函數(shù)輸出這兩個(gè)字符 并思考以下問(wèn)題 變量 c1 c2 應(yīng)定義為字符型或整形 抑二者皆可 要求輸出 c1 和 c2 值的 ASCII 碼 應(yīng)如何處理 用 putchar 函數(shù)還是 printf 函數(shù) 整形變量與字符變 量是否在任何情況下都可以互相代替 如 char c1 c2 與 int c1 c2 是否無(wú)條件的等價(jià) include stdio h main char c1 c2 c1 getchar c2 getchar putchar c1 putchar n putchar c2 putchar n include stdio h main char c1 c2 c1 getchar c2 getchar printf c1 d c2 d n c1 c2 printf c1 c c2 c n c1 c2 第五章 5 1 什么是算術(shù)運(yùn)算 什么是關(guān)系運(yùn)算 什么是邏輯運(yùn)算 解 略 5 2 C 語(yǔ)言中如何表示 真 和 假 系統(tǒng)如何判斷一 個(gè)量的 真 和 假 解 設(shè)有一個(gè)邏輯表達(dá)式 若其結(jié)果為 真 則以 1 表 示 若其結(jié)果為 假 則以 0 表示 但是判斷一個(gè)邏輯 量的值時(shí) 以 0 代表 真 以非 0 代表 假 例如 3 printf 請(qǐng)輸入 3 個(gè)整數(shù) scanf d d d if a b if b c printf max d n c else printf max d n b else if a c printf max d n c else printf max d n a 方法二 使用條件表達(dá)式 可以使程序更加簡(jiǎn)明 清晰 程序如下 include main int a b c temp max printf 請(qǐng)輸入 3 個(gè)整數(shù) scanf d d d temp a b a b 將 a 和 b 中的大者存人 temp 中 max temp c temp c 將 a 和 b 中的大者與 c 比較 取最大者 printf 3 個(gè)整數(shù)的最大數(shù)是 d n max 5 5 有一函數(shù) 寫一程序 輸入 x 值 輸出 y 值 解 include main int x y printf 輸入 x scanf d if x 1 x 1 y x printf x 3d y x d n x y else if x 10 1 x 10 y 2 x 1 printf x 3d y 2 x 1 d n x y else x 10 y 3 x 11 printf x 3d y 3 x 11 d n x y 5 6 給一個(gè)百分制成績(jī) 要求輸出等級(jí) A B C D E 90 分以上為 A 80 90 分為 B 70 79 分為 C 60 分以下為 D 解 程序如下 include main float score char grade printf 請(qǐng)輸入學(xué)生成績(jī) scanf f while score 100 score 0 printf n 輸入有誤 請(qǐng)重新輸入 scanf f switch int score 10 case 10 case 9 grade A break case 8 grade B break case 7 grade C break case 6 grade D break case 5 case 4 case 3 case 2 case 1 4 case 0 grade E printf 成績(jī)是 5 1f 相應(yīng)的等級(jí)是 c n score grade 說(shuō)明 對(duì)輸入的數(shù)據(jù)進(jìn)行檢查 如小于 0 或大于 100 要 求重新輸入 int score 10 的作用是將 score 10 的值進(jìn) 行強(qiáng)制類型轉(zhuǎn)換 得到一個(gè)整型值 5 7 給定一個(gè)不多于 5 位的正整數(shù) 要求 求它是幾位 數(shù) 分別打印出每一位數(shù)字 按逆序打印出各位數(shù) 字 例如原數(shù)為 321 應(yīng)輸出 123 解 include main long int num int indiv ten hundred thousand ten thousand place 分別代表個(gè)位 十位 百位 千位 萬(wàn)位和位數(shù) printf 請(qǐng)輸入一個(gè)整數(shù) 0 99999 scanf ld if num 9999 place 5 else if num 999 place 4 else if num 99 place 3 else if num 9 place 2 else place 1 printf place d n place ten thousand num 10000 thousand num 1000 10 hundred num 100 10 ten num 100 10 indiv num 10 switch place case 5 printf d d d d d ten thousand thousand hundred te n indiv printf n 反序數(shù)字為 printf d d d d d n indiv ten hundred thousand ten tho usand break case 4 printf d d d d thousand hundred ten indiv printf n 反序數(shù)字為 printf d d d d n indiv ten hundred thousand break case 3 printf d d d hundred ten indiv printf n 反序數(shù)字為 printf d d d n indiv ten hundred break case 2 printf d d ten indiv printf n 反序數(shù)字為 printf d d n indiv ten break case 1 printf d indiv printf n 反序數(shù)字為 printf d n indiv break 5 8 企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成 利潤(rùn) I 低于或等于 10 萬(wàn)元時(shí) 獎(jiǎng)金可提成 10 利潤(rùn)高于 10 萬(wàn)元 低于 20 萬(wàn)元 100000 I 200000 時(shí) 其中 10 萬(wàn)元按 10 提成 高于 10 萬(wàn)元的部分 可提成 7 5 200000 I 400000 時(shí) 其中 20 萬(wàn)元仍按上述辦法提成 下同 高于 20 萬(wàn) 元的部分按 5 提成 4000001000000 時(shí) 超過(guò) 100 萬(wàn)元的部分 按 1 提成 從鍵盤輸入當(dāng)月利潤(rùn) I 求應(yīng)發(fā)放獎(jiǎng)金總數(shù) 要求 1 用 if 語(yǔ)句編程序 2 用 switch 語(yǔ)句編程序 解 計(jì)算利潤(rùn)時(shí) 要特別注意不同利潤(rùn)的不同提成比例 例如 利潤(rùn)為 15 萬(wàn)元 其中有 10 萬(wàn)元按 10 的比例提成 另外 5 萬(wàn)元?jiǎng)t按 7 5 提成 1 用 if 語(yǔ)句編程序 include main long i float bonus bon1 bon2 bon4 bon6 bon10 bon1 100000 0 1 利潤(rùn)為 10 萬(wàn)元時(shí)的 獎(jiǎng)金 bon2 bon1 100000 0 075 利潤(rùn)為 20 萬(wàn)元時(shí)的 獎(jiǎng)金 bon4 bon2 200000 0 05 利潤(rùn)為 40 萬(wàn)元時(shí)的 獎(jiǎng)金 bon6 bon4 200000 0 03 利潤(rùn)為 60 萬(wàn)元時(shí)的 獎(jiǎng)金 bon10 bon6 400000 0 015 利潤(rùn)為 100 萬(wàn)元時(shí)的 獎(jiǎng)金 printf 請(qǐng)輸入利潤(rùn) i scanf ld if i 100000 5 bonus i 0 1 利潤(rùn)在 10 萬(wàn)元以內(nèi)按 0 1 提成獎(jiǎng)金 else if i 200000 bonus bon1 i 100000 0 075 利潤(rùn)在 10 萬(wàn)至 20 萬(wàn) 元時(shí)的獎(jiǎng)金 else if i 400000 bonus bon2 i 200000 0 05 利潤(rùn)在 20 萬(wàn)至 40 萬(wàn) 元時(shí)的獎(jiǎng)金 else if i 600000 bonus bon4 i 400000 0 03 利潤(rùn)在 40 萬(wàn)至 60 萬(wàn) 元時(shí)的獎(jiǎng)金 else if i 1000000 bonus bon6 i 600000 0 015 利潤(rùn)在 60 萬(wàn)至 100 萬(wàn) 元時(shí)的獎(jiǎng)金 else bonus bon10 i 1000000 0 01 利潤(rùn)在 100 萬(wàn)元以上 時(shí)的獎(jiǎng)金 printf 獎(jiǎng)金是 10 2f n bonus 此題的關(guān)鍵在于正確寫出每一區(qū)間的獎(jiǎng)金計(jì)算公式 例如 利潤(rùn)在 10 萬(wàn)元至 20 萬(wàn)時(shí) 獎(jiǎng)金應(yīng)由兩部分組成 利潤(rùn) 為 10 萬(wàn)元時(shí)應(yīng)得的獎(jiǎng)金 即 100000 0 1 10 萬(wàn)元以上 部分應(yīng)得的獎(jiǎng)金 即 num 100000 0 075 同理 20 萬(wàn) 40 萬(wàn)這個(gè)區(qū)間的獎(jiǎng)金也應(yīng)由兩部分組成 利潤(rùn)為 20 萬(wàn)元時(shí)應(yīng)得的獎(jiǎng)金 即 100000 0 1 10 萬(wàn) 0 075 20 萬(wàn)元以上部分應(yīng)得的獎(jiǎng)金 即 num 200000 0 05 程序中先把 10 萬(wàn) 20 萬(wàn) 40 萬(wàn) 60 萬(wàn) 100 萬(wàn) 各關(guān)鍵點(diǎn)的獎(jiǎng)金計(jì)算出來(lái) 即 bon1 bon2 bon4 bon6 hon10 然后再加上各區(qū)間附 加部分的獎(jiǎng)金 2 用 switch 語(yǔ)句編程序 輸入利潤(rùn) i 確定相應(yīng)的提成等級(jí) branch 根據(jù) branch 確定獎(jiǎng)金值 0 獎(jiǎng)金 i 0 1 1 獎(jiǎng)金 bon1 i 105 0 075 2 獎(jiǎng)金 bon2 i 2 105 0 05 3 4 獎(jiǎng)金 bon4 i 4 105 0 03 5 6 獎(jiǎng)金 bon6 i 6 105 0 015 7 8 9 10 獎(jiǎng)金 bon10 i 106 0 01 輸出獎(jiǎng)金 include main long i float bonus bon1 bon2 bon4 bon6 bon10 int c bon1 100000 0 1 bon2 bon1 100000 0 075 bon4 bon2 200000 0 05 bon6 bon4 200000 0 03 bon10 bon6 400000 0 015 printf 請(qǐng)輸入利潤(rùn) i scanf ld c i 100000 if c 10 c 10 switch c case 0 bonus 1 0 1 break case 1 bonus bon1 i 100000 0 075 break case 2 case 3 bonus bon2 i 200000 0 05 break case 4 case 5 bonus bon4 i 400000 0 03 break case 6 case 7 case 8 case 9 bonus bon6 i 600000 0 015 break case 10 bonus bon10 i 1000000 0 01 printf 獎(jiǎng)金是 10 2f bonus 5 9 輸入 4 個(gè)整數(shù) 要求按由大到小的順序輸出 解 此題采用依次比較的方法排出其大小順序 在學(xué)習(xí)了 循環(huán)和數(shù)組以后 可以有更多的排序方法 include main int t a b c d printf 請(qǐng)輸入 4 個(gè)整數(shù) scanf d d d d printf n a d b d c d d d n a b c d if a b t a a b b t if a c t a a c c t if a d t a a d d t if b c t a b c c t if b d t b b d d t if c d t c c d d t 6 printf 排序結(jié)果如下 n printf d d d d n a b c d 5 10 有 4 個(gè)圓塔 圓心分別為 2 2 2 2 2 2 2 2 圓半徑為 1 這 4 個(gè)塔的高度分別為 10m 塔以 外無(wú)建筑物 今輸入任一點(diǎn)的坐標(biāo) 求該點(diǎn)的建筑高度 塔 外的高度為零 程序如下 include main int h 10 float x1 2 y1 2 x2 2 y2 2 x3 2 y3 2 x4 2 y4 2 x y d1 d2 d3 d4 printf 請(qǐng)輸入一個(gè)點(diǎn) x y scanf f f d1 x x1 x x1 y y1 y y1 求該點(diǎn)到各中心 點(diǎn)的距離 d2 x x2 x x2 y y2 y y2 d3 x x3 x x3 y y3 y y3 d4 x x4 x x4 y y4 y y4 if d1 1 判斷該點(diǎn) 是否在塔外 printf 該點(diǎn)高度為 d n h 第六章 循環(huán)控制 6 1 輸入兩個(gè)正整數(shù) m 和 n 求其最大公約數(shù)和最小公倍 數(shù) main long m n i 1 j s scanf ld ld for i m else j n for j m 0j printf s ld j ld n s j 6 2 輸入一行字符 分別統(tǒng)計(jì)出其中英文字母 空格 數(shù) 字和其他字符的個(gè)數(shù) include stdio h main char c int i 0 j 0 k 0 l 0 while c getchar n if c 65 else if c 32 k else l printf i d j d k d l d n i j k l 6 3 求 Sn a aa aaa aa aaa 有 n 個(gè) a 之值 其中 a 是一個(gè)數(shù)字 例如 2 22 222 2222 22222 n 5 n 由 鍵盤輸入 include math h main int n sum 0 i 1 s 2 scanf d while i n sum sum s s s 2 pow 10 i i printf sum d n sum 6 4 求 即求 1 2 3 4 5 20 main int n i 1 long sum 0 s 1 scanf d while i n s s i sum sum s i printf sum ld n sum 6 5 求 main double i 1 j 1 k 1 s1 0 s2 0 s3 0 sum for i 100 i s1 s1 i for j 50 j s2 s2 j j for k 100b 10 0 01 x a c x 100 a 10 b if x pow a 3 pow b 3 pow c 3 printf 5d x x 7 6 7 一個(gè)數(shù)如果恰好等于它的因子之和 這個(gè)數(shù)就稱為 完 數(shù) 例如 6 的因子為 1 2 3 而 6 1 2 3 因此 6 是 完數(shù) 編程序找出 1000 之內(nèi)的所有完數(shù) 并按下面格 式輸出其因子 6 its factors are 1 2 3 main int m i j s for m 6 m 10000 m s 1 for i 2 i m i if m i 0 s s i if m s 0 printf 5d its fastors are 1 m for j 2 j m j if m j 0 printf d j printf n 或 main int m i j s for m 6 m 1000 m s m 1 for i 2 i m i if m i 0 s s i if s 0 printf 5d its fastors are 1 m for j 2 j m j if m j 0 printf d j printf n 6 8 有一分?jǐn)?shù)序列 求出這個(gè)數(shù)列的前 20 項(xiàng)之和 main int i 1 n double t x 1 y 2 s sum 0 scanf ld while i n s y x sum sum s t y y y x x t i printf f n sum 6 9 一球從 100 米高度自由下落 每次落地后返回原高度 的一半 再落下 求它在第 10 次落地時(shí)共經(jīng)過(guò)多少米 第 10 次反彈多高 main int i n double h 100 s 100 scanf d for i 1 i n i h 0 5 if i 1 continue s 2 h s printf h f s f n h s 6 10 猴子吃桃問(wèn)題 猴子第一天摘下若干個(gè)桃子 當(dāng)即吃 了一半 還不過(guò)癮 又多吃了一個(gè) 第二天早上又將剩下 的桃子吃掉一半 又多吃一個(gè) 以后每天早上都吃了前一 天剩下的一半零一個(gè) 到第 10 天早上想再吃時(shí) 見(jiàn)只剩 下一個(gè)桃子了 求第一天共摘多少桃子 main int i 1 sum 0 for i 0 00001 printf 3f n x1 6 12 用牛頓迭代法求方程在 1 5 附近的根 main double x y x 1 5 do y 2 x x x 4 x x 3 x 6 x x y 6 x x 8 x 3 while y 0 printf x 3f n x 6 13 用二分法求方程在 10 10 之間的根 main double x1 x2 y1 y2 x1 10 x2 10 do y1 2 x1 x1 x1 4 x1 x1 3 x1 6 x1 x1 y1 6 x1 x1 8 x1 3 while y1 0 do 8 y2 2 x2 x2 x2 4 x2 x2 3 x2 6 x2 x2 y2 6 x2 x2 8 x2 3 while y2 0 printf x1 3f x2 3f n x1 x2 6 14 打印以下圖案 include math h main int i j k for i 0 i 3 i for j 0 j 2 i j printf for k 0 k 2 i k printf printf n for i 0 i 2 i for j 0 j i j printf for k 0 k 4 2 i k printf printf n 第七章 數(shù)組 7 1 用篩法求之內(nèi)的素?cái)?shù) main int i j a 100 for i 2 i 100 i a i i for j 2 j i j if j i if a i j 0 break if a i j 0 printf 5d a i printf n 或 include math h main static int i j k a 98 for i 2 i 100 i a i i k sqrt i for j 2 j a i j if j k 1 printf 5d a i printf n 7 2 用選擇法對(duì) 10 個(gè)整數(shù)從小到大排序 main int i j a 10 t for i 0 i 10 i scanf d for j 1 j 10 j for i 0 ia i 1 t a i 1 a i 1 a i a i t for i 0 i 10 i printf 5d a i 或 main static int a 10 i j k t for i 1 i 11 i scanf d for j 1 j 10 j for i 1 ia i 1 t a i 1 a i 1 a i a i t for i 1 i 11 i printf d a i printf n 7 3 求一個(gè) 3 3 矩陣對(duì)角線元素之和 main int i 0 j 0 a 3 3 s1 s2 for i 0 i 3 i for j 0 j 3 j scanf d s1 a 0 0 a 1 1 a 2 2 9 s2 a 0 2 a 1 1 a 2 0 printf s1 d s2 d n s1 s2 或 main static int i j s1 s2 a 3 3 for i 1 i 3 i for j 1 j0 i if a i a i 1 t a i 1 a i 1 a i a i t for i 0 i 10 i printf 5d a i printf n 或 main static int a 5 1 4 5 6 7 int i t b scanf d for i 0 i 5 i if b a i t a i a i b b t printf d a i printf d b 7 5 將一個(gè)數(shù)組的值按逆序重新存放 例如 原來(lái)順序?yàn)?8 6 5 4 1 要求改為 1 4 5 6 8 main int i b 10 for i 0 i 1 i printf 5d b i printf n 7 6 打印出以下楊輝三角形 要求打印出 10 行 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 main static int m n k b 15 15 b 0 1 1 for m 1 m 15 m for n 1 n m n b m n b m 1 n 1 b m 1 n printf 5d b m n printf n 或 main int i j n k a 10 10 static a 1 1 1 1 1 1 1 1 1 1 1 a 1 1 1 for k 2 k 11 k for i 2 i k i for j 2 j i j a i j a i 1 j 1 a i 1 j for k 1 k 11 k for i 1 i k i for j 1 j i j printf d a i j 7 7 打印 魔方陣 所謂魔方陣是指這樣的方陣 它的 每一行 每一列和對(duì)角線之和均相等 例如 三階魔方陣 為 8 1 6 3 5 7 4 9 2 要求打印出由 1 n2 的自然數(shù)構(gòu)成的魔方陣 解 include main int a 16 16 i i k p m n p 1 while p 1 要求階數(shù) 為 1 15 的商數(shù) 10 printf Enter n n 1 15 scanf d if n 0 for i 1 i n i 初始化 for j 1 j n j a i j 0 j n 2 1 建立魔方 陣 a 1 j 1 for k 2 k n n k i i 1 j j 1 if in i i 2 j j 1 else if in j 1 if a i j 0 a i j k else i i 2 j j 1 a i j k for i 1 i n i 輸出魔方陣 for j 1 j n j printf 4d a i j printf n 7 8 找出一個(gè)二位數(shù)組中的鞍點(diǎn) 即該位置上的元素在該 行上最大 在該列上最小 也可能沒(méi)有鞍點(diǎn) main int a 5 5 b 5 c 5 d 5 5 k 0 l 0 int i j for i 0 i 5 i for j 0 j 5 j scanf d for i 0 i 5 i for j 0 j 5 j a i j d i j for i 0 k 0 i 5 i k for j 0 j a i j 1 b k a i j 1 a i j else b k a i j 1 for j 0 l 0 j 5 j l for i 0 i 4 i if a i j a i 1 j c l a i 1 j a i j else c l a i 1 j for i 0 k 0 i 5 i k for j 0 l 0 j 5 j l if d i j b k 0 if d i j c l 0 printf d d d d n i j d i j else printf d d d d isnot andi n i j d i j 7 9 有個(gè) 15 數(shù)按由小到大順序存放在一個(gè)數(shù)組中 輸入一 個(gè)數(shù) 要求用折半查找法找出該數(shù)組中第幾個(gè)元素的值 如果該數(shù)不在數(shù)組中 則打印出 無(wú)此數(shù) include math h main static int i j m a 15 1 4 9 13 21 34 55 89 144 233 377 570 671 703 81 2 scanf d for j 0 j 15 j printf 4d a j printf n i 7 while fabs i 7 8 if ma 7 if a i m 0 printf it is at d n i 1 break i else printf 8 n if fabs i 7 8 0 printf There is not n 7 10 有一篇文章 共有 3 行文字 每行有個(gè) 80 字符 要 11 求分別統(tǒng)計(jì)出其中英文大寫字母 小寫字母 空格以及其 它字符的個(gè)數(shù) main int i j 0 k 0 l 0 m 0 n 0 char str0 301 str1 100 str2 100 str3 100 gets str1 gets str2 gets str3 strcat str0 str1 strcat str0 str2 strcat str0 str3 for i 0 str0 i 0 i if str0 i 65 else if str0 i 32 m else n printf Daxie Xiaoxie Shuzi Kongge Qita n printf 5d 7d 5d 6d 4d n j k l m n 7 11 打印以下圖案 main int i j k char a 5 5 for i 0 i 5 i for j 0 j 5 j a i j printf c a i j printf n for k 1 kZ a z B Y b y C X c x 即第一個(gè)字母變成第 26 個(gè)字母 第 i 個(gè)字母變成第 26 i 1 個(gè)字母 非字母字符不變 要求編程序?qū)⒚艽a回原文 并打印出密碼和原文 main int i char str1 100 str2 100 gets str1 for i 0 str1 i 0 i if str1 i 65 char s1 100 s2 100 printf n input string1 gets s1 printf n Input string2 gets s2 i 0 while s1 i s2 i if s1 i 0 else resu s1 i s2 i printf n result d n resu 7 15 編寫一個(gè)程序 將字符數(shù)組 s2 中的全部字符拷貝到字 符數(shù)組 s1 中 不用 strcpy 函數(shù) 拷貝時(shí) 0 也要拷貝過(guò) 去 0 后面的字符不拷貝 12 解 include stdio h main char s1 80 s2 80 int i printf Input s2 scanf s s2 for i 0 i strlen s2 i s1 i s2 i printf s1 s n s1 第八章 函數(shù) 1 1 寫兩個(gè)函數(shù) 分別求兩個(gè)整數(shù)的最大公約數(shù)和最小公 倍數(shù) 用主函數(shù)調(diào)用這兩個(gè)函數(shù) 并輸出結(jié)果兩個(gè)整數(shù)由 鍵盤輸入 maxyueshu m n int m n int i 1 t for i m else j n for j m 0j return j main int a b max min printf enter two number is scanf d d max maxyueshu a b min minbeishu a b printf max d min d n max min 8 2 求方程 的根 用三個(gè)函數(shù)分別求當(dāng) b2 4ac 大于 0 等 于 0 和小于 0 時(shí)的根 并輸出結(jié)果 從主函數(shù)輸入 a b c 的值 include math h float yishigen m n k float m n k float x1 x2 x1 n sqrt k 2 m x2 n sqrt k 2 m printf two shigen is x1 3f and x2 3f n x1 x2 float denggen m n float m n float x x n 2 m printf denggen is x 3f n x float xugen m n k float m n k float x y x n 2 m y sqrt k 2 m printf two xugen is x1 3f 3fi and x2 3f 3fi n x y x y main float a b c q printf input a b c is scanf f f f printf n q b b 4 a c if q 0 yishigen a b q else if q 0 denggen a b else xugen a b q 8 2 寫一個(gè)判斷素?cái)?shù)的函數(shù) 在主函數(shù)輸入一個(gè)整數(shù) 輸 出是否是素?cái)?shù)的消息 psushu m int m int i 2 t for i m i if m i 0 if m i 0 t 1 else t 0 return m main int a s printf enter sushu is n scanf d s psushu a if s 1 printf a is sushu n else printf s is not sushu n 13 8 4 寫一個(gè)函數(shù) 使給定的一個(gè)二維數(shù)組 轉(zhuǎn)置 即行列互換 int zhuangzhi b int b 3 3 int i j t for i 0 i ij t b i j b i j b j i b j i t main int a 3 3 int i j for i 0 i 3 i for j 0 j 3 j scanf d for i 0 i 3 i for j 0 j 3 j printf d a i j printf n zhuangzhi a for i 0 i 3 i for j 0 j 1 i j str1 i str2 j 8 6 寫一函數(shù) 將兩個(gè)字符串連接 lianjie a b char a 100 b 100 strcat a b main char str1 100 str2 100 gets str1 gets str2 lianjie str1 str2 puts str1 8 7 寫一函數(shù) 將兩個(gè)字符串中的元音字母復(fù)制到另一個(gè) 字符串 然后輸出 fuzhi a b char a 100 b 100 int i j 0 for i 0 a i 0 i if a i 97 a i 101 a i 105 a i 111 a i 117 a i 65 a i 69 a i 73 a i 85 b j a i j main char str1 100 str2 100 gets str1 fuzhi str1 str2 puts str2 8 8 寫一函數(shù) 輸入一個(gè)四位數(shù)字 要求輸出這四個(gè)數(shù)字 字符 但每?jī)蓚€(gè)數(shù)字間空格 如輸入 1990 應(yīng)輸出 1 9 9 0 char f b char b 4 int i 0 for i 65 else if str0 i 32 b 2 else b 3 main char str1 100 static int i a 4 gets str1 tongji str1 a printf zimu Shuzi Kongge Qita n for i 0 i 97 main char str0 100 longword 15 gets str0 cechang str0 longword puts longword 8 11 寫一函數(shù)用起泡法對(duì)輸入的個(gè)字符按由小到大的順序 排列 int paixu x int x int i j t for j 1 j 10 j for i 0 ix i 1 t x i 1 x i 1 x i x i t main int y 10 int i for i 0 i 10 i scanf d paixu y for i 0 i 10 i printf 5d y i printf n 8 12 用牛頓迭代法求根 方程為 系數(shù) a b c d 由 主函數(shù)輸入 求 X 在 1 附近的一個(gè)實(shí)根 求出后由主函數(shù) 輸出 double qigen s t u v int s t u v double x y x 1 do y s x x x t x x u x v x x y 3 s x x 2 t x u while y 0 return x main int a b c d double x scanf d d d d x qigen a b c d printf x 3f n x 8 13 用遞歸方法求 n 階勒讓德多項(xiàng)式的值遞歸公式為 float p x0 n int n float x0 float y if n 0 n 1 if n 1 y x0 else y 1 else y 2 n 1 x0 p x0 n 1 n 1 p x0 n 2 n return y main float x y0 int a i scanf f d y0 p x a 15 printf y0 3f n y0 8 14 輸入 10 個(gè)學(xué)生 5 門課的成績(jī) 分別用函數(shù)求 每 個(gè)學(xué)生平均分 每門課的平均分 找出最高分所對(duì)應(yīng) 的學(xué)生和課程 求平均分方差 SXi 2 n SXi n 2 為一學(xué)生的平均分 float x1 10 x2 5 float pp cc find xx main char name 10 20 class 5 20 float score 10 5 o k 0 max 5 int a 5 i j for i 0 i 10 i gets name i for j 0 j 5 j gets class j for i 0 i 10 i for j 0 j 5 j scanf f pp score cc score find score max a o xx k for i 0 i 10 i puts name i printf 3f n x1 i for j 0 j 5 j puts class j printf 3f n x2 j for j 0 j 5 j printf 3f n max j puts name a j puts class j printf o 3f n o float pp f float f 10 5 float sum 0 int i j for i 0 sum 0 i 10 i for j 0 j 5 j sum sum f i j x1 i sum 5 float cc y float y 10 5 float sum 0 int i j for j 0 j 5 j for i 0 i 10 i sum sum y i j x1 j sum 10 float find z s t float z 10 5 s 5 int t 5 int i j for j 0 s j z 0 j j 5 j for i 0 i 10 i if s j z i j s j z i j t j i float xx q float q float f 0 e 0 int i for i 0 i 10 i e x1 i x1 i e f f x1 i q e 10 f 10 f 10 return q 8 15 寫幾個(gè)函數(shù) 輸個(gè)職工的姓名和職工號(hào) 按職工 號(hào)由小到大順序排序 姓名順序也隨之調(diào)整 要求輸入 一個(gè)職工號(hào) 用折半法找出該職工的姓名 從主函數(shù)輸入 要查找的職工號(hào) 輸出該職工姓名 define N 10 find a b int a b int i j s t c N 2 for i 0 i N i c i 1 a i c i 1 i for i 0 i N i for j 0 jc i 1 0 t c i 0 c i 0 c i 1 0 c i 1 0 t s c i 1 c i 1 c i 1 1 c i 1 1 s for i 0 i N i b i c i 1 return lookfor h k int h k int i j for i 0 i N i if h i k 0 j i return j main int number N x N i j u p char name N 20 for i 0 i N i gets name i scanf d scanf d 16 find number x u lookfor number p for i 0 i 1 i if if 48 shu i 57 sum sum shu i 48 pow 16 i 1 else if 65 shu i 90 sum sum shu i 55 pow 16 i 1 else if 97 shu i 0 1 j b 10 pf a j 1 for i 0 k j 1 i 1 i j x i int unsigned long m pow 10 j 10 48 return main unsigned long a b int j i scanf ld for j 0 b a b 0 1 j b 10 pf a j puts x printf d n j 或 include math h int x 10 unsigned long m pf n int n int y if n 0 y m 10 x 0 y else y unsigned long m pf n 1 pow 10 n 10 x n y return y main unsigned long a int i j k char c 11 scanf ld for j 0 a m a 0 1 j a 10 pf j 1 for i 0 k j 1 i j i k c i x k 48 c 10 0 puts c 8 18 給出年 月 日 計(jì)算該日是該年的第幾天 int find x y z int x y z int i t s days 0 if x 4 0 t 1 else t 0 for i 1 i b c b c a b c b c main float x y z t scanf f f f t MAX x y z printf 4f n t 9 10 用條件編譯方法實(shí)現(xiàn)以下功能 輸入一行電報(bào)文字 可以任選兩種輸出 一為原文輸出 一為將字母變成其下一字母 如 a 變成 b z 變成 其它字符不變 用命令來(lái)控制是否要譯成 密碼 例如 define CHANGE 1 則輸出密碼 若 define CHANGE 0 則不譯為密碼 按原碼輸出 define CHANGE 1 main char str 80 c int i 0 gets str while str i 0 if CHANGE if str i 90 str i 122 str i str i 25 else if str i 65p1 p2 p2 t if p1 p3 t p1 p1 p3 p3 t if p2 p3 t p2 p2 p3 p3 t printf d d d n p1 p2 p3 或 main int a b c p1 p2 p3 t scanf d d d p1 p2 p3 if a b t p1 p1 p2 p2 t if a c t p1 p1 p3 p3 t if b c t p2 p2 p3 p3 t printf d d d n a b c 10 2 輸入三個(gè)字符串 按由小到大的順序輸出 define N 3 define M 20 main char str0 N M str1 M p q int i l m n q str0 for p0 19 strcpy str1 q strcpy q q 1 strcpy q 1 str1 m strcmp q q 2 if m 0 strcpy str1 q strcpy q q 2 strcpy q 2 str1 n strcmp q 1 q 2 if n 0 strcpy str1 q strcpy q 1 q 2 strcpy q 2 q 1 for p q p q N p puts p 10 3 輸入 10 個(gè)整數(shù) 將其中最小的數(shù)與第一個(gè)數(shù)對(duì)換 把最大的數(shù)與最后一個(gè)數(shù)對(duì)換 寫三個(gè)函數(shù) 輸入 10 個(gè)數(shù) 進(jìn)行處理 輸出 10 個(gè)數(shù) f x n int x n int p0 p1 i j t y i j x 0 p0 p1 x for y 0 yi i x y p0 else if x y j j x y p1 t p0 p0 x n 1 x n 1 t t p1 p1 x 0 x 0 t return main int a 10 u r for u 0 u 10 u scanf d f a 10 for u 0 r a u 10 u r printf d a u printf n 10 4 有 n 個(gè)整數(shù) 使前面各數(shù)順序向后移 m 個(gè)位置 最后 m 個(gè)數(shù)變成前面 m 個(gè)數(shù) 見(jiàn)圖 寫一函數(shù) 實(shí)現(xiàn)以上功能 在主函數(shù)中輸入 n 個(gè)數(shù)和輸出調(diào)整后的 n 個(gè)數(shù) define N 10 void shift p x float p int x float a N q o int i o a q p for i 0 i q p p p x for i 0 i x i q i o i return main float shuzhu N u v int h i u v shuzhu scanf f for u v N u scanf f u shift v h for u v u v N u printf 2f u printf n 10 5 有 n 人圍成一圈 順序排號(hào) 從第 1 個(gè)人開始報(bào)數(shù) 從 1 到 3 報(bào)數(shù) 凡報(bào)到 3 的人退出圈子 問(wèn)最后留下 的是原來(lái)的第幾號(hào)的那位 define N 5 main int i j k a N 1 p for i 0 p a p a N p a 1 if p 0 i if i 3 0 p 0 i 0 k p for i 1 i 3 days 1 printf n d d is the dth day in d date month data day days date year 11 2 寫一個(gè)函數(shù) days 實(shí)現(xiàn)上面的計(jì)算 由主函數(shù)將年 月 日傳遞給 days 函數(shù) 計(jì)算后將日數(shù)傳回主函數(shù)輸出 解 struct y m d int year int month int day date intdays struct y m d date1 int sum switch data month case 1 sum date1 day break case 2 sum date1 day 31 break case 3 sum date1 day 59 break case 4 sum date1 day 90 break case 5 sum date1 day 120 break case 6 sum date1 day 151 break case 7 sum date1 day 181 break case 8 sum date1 day 212 break case 9 sum date1 day 243 break case 10 sum date1 day 243 break case 11 sum date1 day 243 break case 12 sum date1 day 243 break 11 3 編寫一個(gè)函數(shù) print 打印一個(gè)學(xué)生的成績(jī)數(shù) 該數(shù)組 中有 5 個(gè)學(xué)生的數(shù)據(jù)記錄 每個(gè)記錄包括 num name sore 3 用主函數(shù)輸入這些記錄 用- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
15 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語(yǔ)言程序設(shè)計(jì) 第三 版譚浩強(qiáng) 課后 習(xí)題 答案 完整版
鏈接地址:http://weibangfood.com.cn/p-9926577.html