我的任務是創建一個程式,該程式將要求輸入整數,并使用 if-else 陳述句將輸入的整數轉換為相應的英文單詞格式。現在,我必須改用 switch 來修改它。這是我到目前為止的進展。
#include<stdio.h>
#include<conio.h>
main()
{
int num,thousands,hundreds,tens,ones;
printf("Enter number (1-9999): ");
scanf("%d",&num);
if (num < 1 || num > 9999)
printf("Invalid number.");
else
{
thousands = num / 1000;
hundreds = num % 1000 / 100;
tens = num % 1000 % 100 / 10;
ones = num % 1000 % 100 % 10;
switch(thousands) {
case 1: printf("one thousand"); break;
case 2: printf("two thousand"); break;
case 3: printf("three thousand"); break;
case 4: printf("four thousand"); break;
case 5: printf("five thousand"); break;
case 6: printf("six thousand"); break;
case 7: printf("seven thousand"); break;
case 8: printf("eight thousand"); break;
case 9: printf("nine thousand"); break;
}
switch(hundreds) {
case 0: break;
case 1: printf(" one hundred"); break;
case 2: printf(" two hundred"); break;
case 3: printf(" three hundred"); break;
case 4: printf(" four hundred"); break;
case 5: printf(" five hundred"); break;
case 6: printf(" six hundred"); break;
case 7: printf(" seven hundred"); break;
case 8: printf(" eight hundred"); break;
case 9: printf(" nine hundred"); break;
}
switch(tens) {
{
case 1:
{
switch(ones) {
case 0: printf(" ten");break;
case 1: printf(" eleven"); break;
case 2: printf(" twelve"); break;
case 3: printf(" thirteen"); break;
case 4: printf(" fourteen"); break;
case 5: printf(" fifteen"); break;
case 6: printf(" sixteen"); break;
case 7: printf(" seventeen"); break;
case 8: printf(" eighteen"); break;
case 9: printf(" nineteen"); break;
}
break;
}
break;
}
case 2: printf(" twenty"); break;
case 3: printf(" thirty"); break;
case 4: printf(" forty"); break;
case 5: printf(" fifty"); break;
case 6: printf(" sixty"); break;
case 7: printf(" seventy"); break;
case 8: printf(" eighty"); break;
case 9: printf(" ninety"); break;
}
if (tens != 1)
{
switch(ones) {
case 0: break;
case 1: printf(" one"); break;
case 2: printf(" two"); break;
case 3: printf(" three"); break;
case 4: printf(" four"); break;
case 5: printf(" five"); break;
case 6: printf(" six"); break;
case 7: printf(" seven"); break;
case 8: printf(" eight"); break;
case 9: printf(" nine"); break;
}
}
}
getch();
}
它作業正常,但是否可以將那個 if 陳述句(if (tens != 1))改為 switch 陳述句?非常感謝任何反饋,謝謝!
uj5u.com熱心網友回復:
很簡單,真的:
/* Finished thousands and hundreds */
switch(tens) {
case 1: ones = ones 10; break;
case 2: printf(" twenty"); break;
case 3: printf(" thirty"); break;
case 4: printf(" forty"); break;
case 5: printf(" fifty"); break;
case 6: printf(" sixty"); break;
case 7: printf(" seventy"); break;
case 8: printf(" eighty"); break;
case 9: printf(" ninety"); break;
}
switch(ones) {
case 0: break;
case 1: printf(" one"); break;
case 2: printf(" two"); break;
case 3: printf(" three"); break;
case 4: printf(" four"); break;
case 5: printf(" five"); break;
case 6: printf(" six"); break;
case 7: printf(" seven"); break;
case 8: printf(" eight"); break;
case 9: printf(" nine"); break;
case 10: printf(" ten");break;
case 11: printf(" eleven"); break;
case 12: printf(" twelve"); break;
case 13: printf(" thirteen"); break;
case 14: printf(" fourteen"); break;
case 15: printf(" fifteen"); break;
case 16: printf(" sixteen"); break;
case 17: printf(" seventeen"); break;
case 18: printf(" eighteen"); break;
case 19: printf(" nineteen"); break;
}
有時,不要過度思考事情,不要試圖操縱每一個微小的邏輯途徑,這是值得的。停下來想一想——真正想一想——關于這項任務。
編輯
也許,看看這段代碼,你會發現將“列印”移動到它自己的函式中的想法。然后,用千位呼叫它并列印“千”字,然后用“百”號呼叫它并列印“百”字……學習使用函式以便能夠重用代碼。非常寶貴的一課!!
PS:如果您遵循此建議,您可以將可接受的輸入范圍擴大到列印,甚至是“16942”(16942),甚至超過 99,999。(而且,即使在上面,如果您注意到用分隔符書寫時逗號之間如何出現數字作為單詞的“三元組”......)
uj5u.com熱心網友回復:
是的!你可以這樣做。將 final 實作if為 aswitch可能如下所示:
switch(tens)
{
case 1:
break;
default:
switch(ones) {
case 0: break;
case 1: printf(" one"); break;
case 2: printf(" two"); break;
case 3: printf(" three"); break;
case 4: printf(" four"); break;
case 5: printf(" five"); break;
case 6: printf(" six"); break;
case 7: printf(" seven"); break;
case 8: printf(" eight"); break;
case 9: printf(" nine"); break;
}
break;
}
switch 默認值就像 if 的 else 陳述句;如果沒有其他條件為真,則其中的代碼運行。
uj5u.com熱心網友回復:
你可以試試
switch(tens)
{
case 2 ... 9:
{
switch(ones) {
case 0: break;
case 1: printf(" one"); break;
case 2: printf(" two"); break;
case 3: printf(" three"); break;
case 4: printf(" four"); break;
case 5: printf(" five"); break;
case 6: printf(" six"); break;
case 7: printf(" seven"); break;
case 8: printf(" eight"); break;
case 9: printf(" nine"); break;
}
break;
}
case 1:
default:
break;
}
where2 ... 9表示 iftens位于2 到 9范圍內,包括 9 和 2,因為 thetens始終是 0 到 9 之間的數字
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/512716.html
標籤:C
上一篇:在c中添加陣列元素
