九度OJ:題目1010 A+B
阿新 • • 發佈:2019-01-23
- 題目描述:
-
讀入兩個小於100的正整數A和B,計算A+B.
需要注意的是:A和B的每一位數字由對應的英文單詞給出.
- 輸入:
- 測試輸入包含若干測試用例,每個測試用例佔一行,格式為"A + B =",相鄰兩字串有一個空格間隔.當A和B同時為0時輸入結束,相應的結果不要輸出.
- 輸出:
- 對每個測試用例輸出1行,即A+B的值.
- 樣例輸入:
-
one + two = three four + five six = zero seven + eight nine = zero + zero =
- 樣例輸出:
-
3 90
96
-
[解題思路]
-
首先,寫一個函式將英文單詞轉化為數字,如下:
-
int judgeNum(char* num){ if(strcmp(num,"zero")==0) return 0; else if(strcmp(num,"one")==0) return 1; else if(strcmp(num,"two")==0) return 2; else if(strcmp(num,"three")==0) return 3; else if(strcmp(num,"four")==0) return 4; else if(strcmp(num,"five")==0) return 5; else if(strcmp(num,"six")==0) return 6; else if(strcmp(num,"seven")==0) return 7; else if(strcmp(num,"eight")==0) return 8; else if(strcmp(num,"nine")==0) return 9; else return -1; }
該函式將單詞轉化為數字後返回,那麼怎樣處理返回來的數字呢?
然後我們觀察輸入的樣式,前後是由"+"隔開的,所以我們需要分別用兩個整形(假設為a,b)記錄前後的數字;
在數字傳回來之後,因為輸入有兩位數(比如 one two表示12) ,這時候我們應該將a,b初始化為0,可用a=10*a+(傳回來的數)進行確定a,b的值,程式碼如下:
while(ch!='\n'){ scanf("%s",num); if(strcmp(num,"+")==0) sign=1;//標記是否出現"+" if(strcmp(num,"=")==0) break;//一定要加,否則最後可能不會終止程式 if((strcmp(num,"+")!=0)&&(strcmp(num,"=")!=0)){//傳入的不能為符號 if(!sign) a=10*a+judgeNum(num); else b=10*b+judgeNum(num); } ch=getchar(); }
[程式程式碼]
[題目網址]#include<stdio.h> #include<string.h> int judgeNum(char* num){ if(strcmp(num,"zero")==0) return 0; else if(strcmp(num,"one")==0) return 1; else if(strcmp(num,"two")==0) return 2; else if(strcmp(num,"three")==0) return 3; else if(strcmp(num,"four")==0) return 4; else if(strcmp(num,"five")==0) return 5; else if(strcmp(num,"six")==0) return 6; else if(strcmp(num,"seven")==0) return 7; else if(strcmp(num,"eight")==0) return 8; else if(strcmp(num,"nine")==0) return 9; else return -1; } int main(){ char num[40]; while(1){ int a=0,b=0; char ch=' '; int sign=0; while(ch!='\n'){ scanf("%s",num); if(strcmp(num,"+")==0) sign=1;//標記是否出現"+" if(strcmp(num,"=")==0) break;//一定要加,否則最後可能不會終止程式 if((strcmp(num,"+")!=0)&&(strcmp(num,"=")!=0)){//傳入的不能為符號 if(!sign) a=10*a+judgeNum(num); else b=10*b+judgeNum(num); } ch=getchar(); } if(a==0&&b==0) break; else{ printf("%d\n",a+b); } } return 0; } /* one + two = three four + five six = zero seven + eight nine = zero + zero = */
http://ac.jobdu.com/problem.php?pid=1010