C和指標 程式設計練習 第9章

2021-10-08 12:47:41 字數 1632 閱讀 7818

/*

標準i/o庫並沒有提供一種機制, 在列印大整數時用逗號進行分割. 在這個練習中, 你需要編寫乙個程式, 為美元數額列印提供這種功能.

函式把乙個數字字串(代表以美分為單位的金額) 轉換成美元形式, 如下表所示:

輸入: 輸出: 輸入: 輸出:

null $0.00 12345 $123.45

1 $0.01 123456 $1,234.56

12 $0.12 1234567 $12,345.67

123 $1.23 12345678 $123,456.78

1234 $12.34 123456789 $1,234,567.89

下面是函式的原型:

void dollars( char *dst, char const *src );

src 指向需要被格式化的字串(你可以假定它們都是數字).

函式應該像上面例子所示的那樣對字元進行格式化, 並把結果字串儲存在dst 中.

你應該保證你所建立的字串以乙個nul字元結尾, src 的值不能被修改.

你應該使用指標而不是下標.

首先找到第二個引數字串的長度. 這個值有助於判斷逗號應該插入到什麼位置.

同時, 小數點後面的兩位數字應該是唯一需要你進行處理的特殊情況.

*/#include

void

dollars

(char

*dst,

char

const

*src )

/* * 執行到這裡說明n_digit 大於或等於3

** 這個迴圈只處理美元部分(即小數點前面的部分), 美分部分(小數點後面的那兩位), 迴圈結束後再處理

** i 的初始值為美元部分最高位, 每從src 中複製一位數字到dst 後檢查複製下一位之前是否需要新增逗號','

* 新增逗號的規則是從美元部分最低位往上, 每隔三位就加乙個逗號

* 美元部分的最低位不用加逗號, 所以要加入( i != 0 )這個限制條件

*/*dst++

='$'

;for

(int i = n_digit -

2; i >0;

)}/* 執行到這裡, 還剩兩位美分部分沒有處理 */

*dst++

='.'

;*dst++

=*src++

;*dst++

=*src;

*dst =

'\0'

;return;}

#include

intmain

(void

)

程式執行結果:

C和指標 程式設計練習 第9章

這個問題的最後部分就是編寫函式 void decrypt char data,char const key 它接受乙個加密過的字串為引數,它的任務是重現原來的資訊.除了它是用於揭秘之外,它的工作原理應該與encrypt 相同 void decrypt char data,char const key...

C和指標 程式設計練習 第8章

修改問題6 的array offset函式,使它訪問以列為主序的偽陣列,也就是最左邊的下標率先變化.這個新函式array offset2在其他方面與原先的那個函式一樣.例如 假定arrayinfo陣列包含了值3,4,6,1,5,3,3.這些值提示我們所處理的是三維偽陣列.第乙個下標範圍從4 到6 第...

C primer plus第9章程式設計練習答案

程式設計練習答案是我學習過程中所敲,作為乙個學渣,答案是以完成習題和易理解為導向,很少有一些五彩繽紛的演算法。程式僅作為交流,如有錯誤與不足還請指出。9.11.1 include stdio.h double min double x,double y intmain void 片9.11.2 in...