hdu 1228-A+B
生活随笔
收集整理的這篇文章主要介紹了
hdu 1228-A+B
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
A + B
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)Problem Description 讀入兩個(gè)小于100的正整數(shù)A和B,計(jì)算A+B.
需要注意的是:A和B的每一位數(shù)字由對(duì)應(yīng)的英文單詞給出.
Input 測(cè)試輸入包含若干測(cè)試用例,每個(gè)測(cè)試用例占一行,格式為"A + B =",相鄰兩字符串有一個(gè)空格間隔.當(dāng)A和B同時(shí)為0時(shí)輸入結(jié)束,相應(yīng)的結(jié)果不要輸出.?
Output 對(duì)每個(gè)測(cè)試用例輸出1行,即A+B的值.
Sample Input one + two = three four + five six = zero seven + eight nine = zero + zero =
Sample Output 3 90 96 解題思路:把要處理的等式當(dāng)做一個(gè)字符串,然后用一個(gè)s1字符數(shù)組記錄出現(xiàn)的小寫字母,當(dāng)遇到空格時(shí)代表一個(gè)單詞結(jié)束,然后用這個(gè)單詞和每個(gè)數(shù)字的單詞進(jìn)行比較,找出這個(gè)單詞代表的數(shù)字是多少,記錄下數(shù)字后將s1中的元素清除,再次從s1[0]開始保存單詞,直到字符串結(jié)束,找出 + 前后兩部分各代表的整數(shù)。 AC代碼: #include<stdio.h> #include<string.h> int main() {char str[30],s1[20];int i,j,len,s,sum1,sum2,flag;while(gets(str)!=NULL){len=strlen(str);sum1=sum2=0; flag=0; for(i=0,j=0;i<len;i++){if(str[i]>='a'&&str[i]<='z') /*如果是小寫字母*/s1[j++]=str[i]; /*保存在s1中*/else if(str[i]==' '&&str[i-1]!='+') /*判斷str[i-1]!='+'是為了避免將 + 當(dāng)做一個(gè)字符串處理*/{s1[j]='\0'; /*千萬(wàn)不能忘記字符串結(jié)束標(biāo)志*/if(!strcmp(s1,"zero")) s=0; else if(!strcmp(s1,"one")) s=1;else if(!strcmp(s1,"two")) s=2;else if(!strcmp(s1,"three")) s=3;else if(!strcmp(s1,"four")) s=4;else if(!strcmp(s1,"five")) s=5;else if(!strcmp(s1,"six")) s=6;else if(!strcmp(s1,"seven")) s=7;else if(!strcmp(s1,"eight")) s=8;else if(!strcmp(s1,"nine")) s=9; /*比較字符串,找出代表的數(shù)字*/j=0; /*記得從零開始*/if(!flag)sum1=sum1*10+s; /*sum1保存 + 前面部分代表的數(shù)字*/else sum2=sum2*10+s; /*sum2保存 + 后面部分代表的數(shù)字*/}else if(str[i]=='+')flag=1; /*標(biāo)記 + 已出現(xiàn)*/}if(sum1==0&&sum2==0) /*兩個(gè)數(shù)都是0時(shí)結(jié)束程序*/break; elseprintf("%d\n",sum1+sum2);}return 0; }
總結(jié)
以上是生活随笔為你收集整理的hdu 1228-A+B的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言课程设计——学生学籍管理系统
- 下一篇: Java 14 发布了,不使用class