/*
標準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...