前言
好久沒寫九度的acm了,今天晚上興起寫了一個三星的a+b的題目,難點可以在於知道了輸入的格式後如何進行輸入的控制吧,提供一種思路,畢竟c裡沒有php那麼多可供調用的系統函數,寫下題目要求,直接上ac代碼了
題目描述:
讀入兩個小於100的正整數A和B,計算A+B.
需要注意的是:A和B的每一位數字由對應的英文單詞給出.
輸入: www.2cto.com
測試輸入包含若干測試用例,每個測試用例占一行,格式為"A + B =",相鄰兩字符串有一個空格間隔.當A和B同時為0時輸入結束,相應的結果不要輸出.
輸出:
對每個測試用例輸出1行,即A+B的值.
樣例輸入:
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
樣例輸出:
3
90
96
AC代碼
[cpp]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int strToInt(char *);
int main()
{
char str[6];
int a, b, c;
while(scanf("%s",str))
{
a = strToInt(str);
while(scanf("%s",str))
{
if(str[0] != '+' && str[0] != '=')
{
b = strToInt(str);
a = a * 10 + b;
}else if(str[0] == '+')
{
c = a;
a = 0;
}else if(str[0] == '=')
{
break;
}
}
if(!a && !c)
{
break;
}else
{
printf("%d\n", a + c);
}
}
return 0;
}
int strToInt(char *str)
{
int num;
if(strcmp(str, "zero") == 0)
{
num = 0;
}else if(strcmp(str, "one") == 0)
{
num = 1;
}else if(strcmp(str, "two") == 0)
{
num = 2;
}else if(strcmp(str, "three") == 0)
{
num = 3;
}else if(strcmp(str, "four") == 0)
{
num = 4;
}else if(strcmp(str, "five") == 0)
{
num = 5;
}else if(strcmp(str, "six") == 0)
{
num = 6;
}else if(strcmp(str, "seven") == 0)
{
num = 7;
}else if(strcmp(str, "eight") == 0)
{
num = 8;
}else if(strcmp(str, "nine") == 0)
{
num = 9;
}
return num;
}