2020物件導向程式設計寒假作業3

2022-09-13 18:24:12 字數 2943 閱讀 1917

這個作業屬於哪個課程

2020物件導向程式設計張棟班

這個作業要求在**

物件導向程式設計寒假作業3

這個作業的目標

繼續完成作業二的程式設計題。

實現二位數和負數的處理。

作業正文

--其他參考文獻

最初**的侷限性:1.不能輸入大於十的漢字。 2.最終輸出的結果範圍仍在0-99內。

上一次優化解決了連續表示式的輸入,這次主要解決輸入二位數以及負數的問題。

參考同學的**後,改用全域性變數的二維陣列儲存漢字,使**更簡潔。

char number[15][5]=;
於是單個漢字轉換成數字的函式可改為

int translate(char

x) }

}

現在要優化的是支援輸入二位數。

二位數要轉換成數字不能直接呼叫上述translate函式,要再定義乙個int型的change函式,把個位數和十位數拆開利用translate轉換再進行運算。在網上了解到了複製字元片段的函式strncpy,現在分幾種情況考慮處理方法。

乙個漢字長度為2,故可用strlen函式判斷輸入的型別。

若輸入的是一位數或十,直接用translate轉換。

若輸入的是「五十」這類的整十數或11-19之間的數,則長度為4,這裡定義乙個變數shi陣列儲存十位數。比如擷取「五十」的「五」賦給shi。

strncpy(shi,x,2

);shi[

2]='\0'

;if(strcmp(shi,"

十")==0) //

11-19之間

return(translate(x+2)+10

);else

//大或等於20的整十數

return(translate(shi)*10);

若輸入的是「五十二」這類一般的二位數,則進行以下處理:

strncpy(shi,x,2

);shi[

2]='\0'

;return(translate(shi)*10+translate(x+4));

完整的change函式,該函式能實現二位數的輸入,返回的是該二位數對應的數字:

int change(char

x)

else

if(strlen(x)==6

)}

對change函式進行測試:

接下來優化輸出函式print_sum,使其能輸出負數。

根據其本身的正負決定要不要加「負」,然後取其絕對值進行後續操作。

分成小或等於十,十到二十之間(中文沒有「一十幾」這種習慣),大或等於二十的整十數(中文沒有「幾十零」這種習慣)和大或等於二十的非整十數四類進行處理

void print_sum(int

a) printf("\n

");

測試print_sum函式:

完整**:

#include#include

#include

char number[15][5]=;

int translate(char

x) }

}int change(char

x)

else

if(strlen(x)==6)}

void print_sum(int

a) printf("\n

");}int

main()

else

if(strcmp(flag,"

看看")==0

)

else

if(strcmp(flag,"

結束")==0) //

這裡改了一下,以「結束」終止程式,輸入「看看」後仍可進行加減

break

;

else

}return0;

}

測試結果如下:

再測試一組時就發現了問題:初始化不能為負數,且增加減少的值也不能為負。

出現這個問題的原因是change函式,中文轉換成數字時沒考慮正負。這個問題暫時還沒想好處理方法= =

因為不知道怎麼將字串中間的一部分擷取出來。

比如「負五十二」,我不知道要怎麼提取出「五」;但如果是「五十二」,我就可以用strncpy函式提取出字串頭部的「五」。

總結

這次優化後程式支援負數的輸出,支援二位數的輸入。但仍有較大的侷限性:比如數值範圍仍在一百以內,不能輸入負數,**很長等。

希望在以後的學習中能夠解決這些問題,提高解決問題的能力。

2020物件導向程式設計寒假作業3

繼續完成程式設計題 發布部落格 讀題,提取出題目的要求。分解需求,把需求分解為幾個你覺得不太相關的模組。思考每個模組怎麼寫,可以從簡單的模組開始寫。對於不會的問題進行查閱資料。對於每乙個模組設計測試用例。詳細記錄下以上每一步,並寫在部落格中。不要求完全做出來,但要求記錄詳細。建議部落格長度不少於10...

2020物件導向程式設計寒假作業3

這個作業屬於哪個課程 2020物件導向程式設計 這個作業要求在 2020物件導向程式設計寒假作業3 這個作業的目標 程式設計題 請使用c語言或者c 完成以下題目 1.繼續完成作業二的程式設計題。2.優化架構,思考 的拓展性,比如我需要增加其他功能,如選擇,迴圈語句怎麼辦 3.思考 可以參考現有的程式...

物件導向程式設計寒假作業3

這個作業屬於哪個課程 物件導向程式設計2020 這個作業要求在 物件導向程式設計寒假作業3 這個作業的目標 1.繼續完成作業二的程式設計題。2.優化架構,思考 的拓展性,比如我需要增加其他功能,如選擇,迴圈語句怎麼辦。3.思考 可以參考現有的程式語言,把這些語言的內容加入。如選擇 迴圈語句 函式 或...