UVA1586 分子量 Molar mass

题目描述

PDF

输入格式

输出格式

题意翻译

现给你若干个分子式需要你求分子量。

例如:C6H5OH的分子量为12.01*6+1.008*5+16.00+1.008=94.108g/mol。

(ps:数字为数字前面元素的下标,所有分子式均无括号例如:2OH=2*16.00+1.008)

输入输出格式

输入:

输入n(2<=n<=99)

接下来n行为分子式

输出:

输出每个分子的分子式

输入输出样例

输入

4
C
C6H5OH
NH2CH2COOH
C12H22O11

输出 

12.010
94.108
75.070
342.296
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
	int t;
		cin>>t;
	for(int i=0;i<t;i++){
		string ans;
		int cnt=1;double ia=0;
		cin>>ans;
		for(int j=0;j<ans.size();j++){
			if(ans[j]=='C'||ans[j]=='H'||ans[j]=='O'||ans[j]=='N'){
				if(ans[j+1]>='1'&&ans[j+1]<='9'){
					cnt=ans[j+1]-'0';
					if(ans[j+2]>='1'&&ans[j+2]<='9'){
						cnt=cnt*10+ans[j+2]-'0';
						if(ans[j+3]>='1'&&ans[j+3]<='9'){
						cnt=cnt*10+ans[j+2]-'0';
						
					}
					}
				}	
				if(ans[j]=='C'){
					ia=ia+12.010*cnt;
				}else if(ans[j]=='H'){
					ia=ia+1.008*cnt;
				}else if(ans[j]=='O'){
					ia=ia+16.00*cnt;
				}else {
					ia=ia+14.01*cnt;
				}//cout<<ia<<" "<<cnt<<endl;
				cnt=1;
				
			}
			
		}printf("%.3lf\n",ia);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值