📄 h.cpp
字号:
#include<stdio.h>
#include<string.h>
#define N 30
#define MAXLEN 64
#define MAXNUM 8
const char *name[N] =
{ "zero", "one", "two", "three", "four", "five", "six",
"seven", "eight", "nine", "ten", "eleven", "twelve",
"thirteen", "fourteen", "fifteen", "sixteen", "seventeen",
"eighteen", "nineteen", "twenty", "thirty", "forty",
"fifty", "sixty", "seventy","eighty", "ninety", "hundred",
"thousand" };
const int value[N] =
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 30, 40, 50, 60, 70, 80, 90, -2, -3 };
char *word[MAXNUM];
char st[MAXLEN];
int num;
void read_dat()
{
int pre = -1;
char *ch;
gets( st );
num = 0;
for( ch = st; *ch; ++ch )
{
if( *ch == ' ' )
{
*ch = '\0';
pre = -1;
}
else if( pre == -1 )
{
word[ num++ ] = ch;
pre = 0;
}
}
}
int find_value( char *ch )
{
int i;
for( i = 0; i < N; ++i )
if( strcmp( ch, name[i] ) == 0 )
return value[i];
return -1;
}
void make_it()
{
int i, s = 0, p, now = 0;
for( i = 0; i < num; ++i )
{
p = find_value( word[i] );
switch( p )
{
case -3:
s += now * 1000;
now = 0;
break;
case -2:
s += now * 100;
now = 0;
break;
case -1:
break;
default:
now += p;
}
}
s += now;
printf( "%d\n", s );
}
int main()
{
int i, dataCase;
scanf( "%d", &dataCase );
getchar();
for( i = 0; i < dataCase; ++i )
{
read_dat();
make_it();
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -