码迷,mamicode.com
首页 > 其他好文 > 详细

UVa1586 Molar mass

时间:2015-06-21 00:42:26      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

#include <stdio.h>

int GetQuantity(char* q, char** p)
{
    int quantity = 0;
    while (*q && ‘0‘ <= *q && *q <= ‘9‘)
    {
        quantity = quantity*10 + (*q-‘0‘);
        ++q;
    }
    if (quantity == 0)
        quantity = 1;
    *p = q;
    return quantity;
}

int main()
{
    int T, quantity;
    double mass;
    char str[81], *p;
    scanf("%d", &T);
    while (T--)
    {
        scanf("%s", str);
        mass = 0.0;
        p = str;
        while (*p)
        {
            if (*p == ‘C‘)
            {
                quantity = GetQuantity(p+1, &p);
                mass += (12.01*quantity);
            }
            else if (*p == ‘H‘)
            {
                quantity = GetQuantity(p+1, &p);
                mass += (1.008*quantity);
            }
            else if (*p == ‘O‘)
            {
                quantity = GetQuantity(p+1, &p);
                mass += (16.00*quantity);
            }
            else if (*p == ‘N‘)
            {
                quantity = GetQuantity(p+1, &p);
                mass += (14.01*quantity);
            }
            else
            {
                ++p;
            }
        }
        
        printf("%.3f\n", mass);
    }

    return 0;
}

UVa1586 Molar mass

标签:

原文地址:http://www.cnblogs.com/danny1221/p/4591363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!