您的位置:首页 > 其它

习题3-2 UVa1586

2016-09-19 22:01 232 查看
#include <stdio.h>
#include <string.h>
#include <ctype.h>

double ar(char c)
{
if(c == 'C') return 12.01;
if(c == 'H') return 1.008;
if(c == 'O') return 16.;
if(c == 'N') return 14.01;
}

int main()
{
char s[85];
int T;
scanf("%d", &T);
while(T--)
{
scanf("%s", s);
double mr = 0;
int num = 0, latestal;
for(int i = 0; i < strlen(s); ++i)
{
if(isalpha(s[i]))
{
if(isalpha(s[i+1])||!s[i+1]) mr += ar(s[i]);
else latestal = s[i];
}
else
{
num = 10*num + (s[i] - '0');
if(isalpha(s[i+1])||!s[i+1])
{
mr += num * ar(latestal);
num = 0;
}
}
}
printf("%.3f\n", mr);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UVa