日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[ACM] hdu 1228 A+B (字符串处理)

發布時間:2025/4/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [ACM] hdu 1228 A+B (字符串处理) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

A + B

Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 11543????Accepted Submission(s): 6699


Problem Description

?

讀入兩個小于100的正整數A和B,計算A+B.
須要注意的是:A和B的每一位數字由相應的英文單詞給出.


?

Input

?

測試輸入包括若干測試用例,每一個測試用例占一行,格式為"A + B =",相鄰兩字符串有一個空格間隔.當A和B同一時候為0時輸入結束,對應的結果不要輸出.


?

Output

?

對每一個測試用例輸出1行,即A+B的值.


?

Sample Input

?

one + two = three four + five six = zero seven + eight nine = zero + zero =


?

Sample Output

?

3 90 96


?

Source

?

浙大計算機研究生復試上機考試-2005年

?

解題思路:

以加號為界限,左右兩個加數分別存到一個字符串里面,再在每一個字符串中提取出來加數。

代碼:

方法1:使用substr函數,手動推斷空格

#include <iostream> #include <string.h> using namespace std;int change(string str)//字符串轉換成數字 {int d;if(str=="zero")d=0;else if(str=="one")d=1;else if(str=="two")d=2;else if(str=="three")d=3;else if(str=="four")d=4;else if(str=="five")d=5;else if(str=="six")d=6;else if(str=="seven")d=7;else if(str=="eight")d=8;else if(str=="nine")d=9;return d; } int main() {string exp;//輸入的一行string A,B;int a,b;//A,B分別代表加號左,右的數的字符串,a,b分別為兩個加數的值while(getline(cin,exp)){int len=exp.length();int j;int tap1,tap2;for(j=0;j<len;j++){if(exp[j]==' '&&exp[j+1]=='+')tap1=j;//tap1為第一個數右邊的空格if(exp[j]==' '&&exp[j+1]=='=')tap2=j;//tap2為第二個數右邊的空格}A=exp.substr(0,tap1);//提取,開始位置為0,提取長度為tap1B=exp.substr(tap1+3,tap2-tap1-3);int lenA=A.length();int lenB=B.length();a=b=0;int pre=-1;for(int i=0;i<lenA;i++){if(A[i]==' '){a=a*10+change(A.substr(pre+1,i-pre-1));pre=i;}if(i==lenA-1)//和空格的情況不太一樣,要多讀取一位a=a*10+change(A.substr(pre+1,i-pre));}pre=-1;for(int i=0;i<lenB;i++){if(B[i]==' '){b=b*10+change(B.substr(pre+1,i-pre-1));pre=i;}if(i==lenB-1)b=b*10+change(B.substr(pre+1,i-pre));}if(a==0&&b==0)break;cout<<a+b<<endl;}return 0; }

方法2,3:(輸入時,自己主動忽略空格,把每一個單詞放入到一個字符數組中)

代碼1:

#include <iostream> #include <stdio.h> #include <string.h> using namespace std; char s[100][100];int change(char str[]) {int d;if(str[0]=='z')//不能str=="zero"d=0;else if(str[0]=='o')d=1;else if(str[0]=='t'&&str[1]=='w')d=2;else if(str[0]=='t'&&str[1]=='h')d=3;else if(str[0]=='f'&&str[1]=='o')d=4;else if(str[0]=='f'&&str[1]=='i')d=5;else if(str[0]=='s'&&str[1]=='i')d=6;else if(str[0]=='s'&&str[1]=='e')d=7;else if(str[0]=='e')d=8;else if(str[0]=='n')d=9;return d; } int main() {int a,b;int c = 0;while(~scanf("%s", s[c])){//先輸入第一個單詞c = 1;char ch;while(scanf("%s%c",s[c], &ch)){//以空格為界限。讀入每一個單詞,字符數組不讀空格if(ch == '\n')//退出條件break;c++;}int ok=0;a=b=0;for(int i=0;i<c;i++){if(s[i][0]=='+'){ok=1;continue;}if(ok==0)a=a*10+change(s[i]);else if(ok==1)b=b*10+change(s[i]);}if(a==0&&b==0)break;cout<<a+b<<endl;c = 0;}return 0; }


代碼2:

#include <iostream> #include <stdio.h> #include <string.h> using namespace std; char s[100][100];int change(char str[]) {int d;if(str[0]=='z')//不能str=="zero"d=0;else if(str[0]=='o')d=1;else if(str[0]=='t'&&str[1]=='w')d=2;else if(str[0]=='t'&&str[1]=='h')d=3;else if(str[0]=='f'&&str[1]=='o')d=4;else if(str[0]=='f'&&str[1]=='i')d=5;else if(str[0]=='s'&&str[1]=='i')d=6;else if(str[0]=='s'&&str[1]=='e')d=7;else if(str[0]=='e')d=8;else if(str[0]=='n')d=9;return d; } int main() {while(1){char ch;int a,b;int c=0;while(scanf("%s%c",s[c],&ch))//輸入每一個單詞{if(ch=='\n')break;c++;}int ok=0;a=b=0;for(int i=0;i<c;i++)//s[c]里面在該題存的是”=“,沒用{if(s[i][0]=='+'){ok=1;continue;}if(ok==0)a=a*10+change(s[i]);else if(ok==1)b=b*10+change(s[i]);}if(a==0&&b==0)break;cout<<a+b<<endl;}return 0; }



?

轉載于:https://www.cnblogs.com/jzdwajue/p/7261333.html

總結

以上是生活随笔為你收集整理的[ACM] hdu 1228 A+B (字符串处理)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。