這個作業屬於哪個課程
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完整的change函式,該函式能實現二位數的輸入,返回的是該二位數對應的數字:);shi[
2]='\0'
;return(translate(shi)*10+translate(x+4));
int change(char對change函式進行測試:x)
else
if(strlen(x)==6
)}
接下來優化輸出函式print_sum,使其能輸出負數。
根據其本身的正負決定要不要加「負」,然後取其絕對值進行後續操作。
分成小或等於十,十到二十之間(中文沒有「一十幾」這種習慣),大或等於二十的整十數(中文沒有「幾十零」這種習慣)和大或等於二十的非整十數四類進行處理
void print_sum(int測試print_sum函式:a) printf("\n
");
完整**:
#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.思考 可以參考現有的程式語言,把這些語言的內容加入。如選擇 迴圈語句 函式 或...