UVA_1586 Molar mass 算法竞赛入门经典

本文介绍了一个使用C++实现的分子式质量计算器,该程序能够解析输入的化学分子式,如C6H5OH、NH2CH2COOH等,并计算出其对应的摩尔质量。通过解析分子式中的元素和相应的原子数,程序可以准确地计算出各种复杂分子的质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:
https://cn.vjudge.net/problem/UVA-1586

Sample Input
4
C
C6H5OH
NH2CH2COOH
C12H22O11
Sample Output
12.010
94.108
75.070
342.296
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cctype>
using namespace std;
char A[81];
double sum;

double res(char A)
{
	if(A=='C')	return 12.01;
	if(A=='H')	return 1.008;
	if(A=='O')	return 16.00;
	if(A=='N')	return 14.01;
}

int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		sum=0.000;
		scanf("%s",A);
		int len=strlen(A);
		for(int i=0; i<len; i++)
		{
			if((isalpha(A[i])&&isalpha(A[i+1]))||(isalpha(A[i])&&i==len-1))
			{
				sum+=res(A[i]);
			}
			else if(isalpha(A[i])&&isdigit(A[i+1]))
			{
				int  cnt=0, j=i+1;
				for(; j<len&&isdigit(A[j]); j++)
				{
					cnt=cnt*10+A[j]-'0';
				}
				sum+=res(A[i])*cnt;
			}
			else if(isdigit(A[i]))	continue;
			/*cout<<sum<<endl;*/
		}
		printf("%.3lf\n",sum);
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值