zoukankan      html  css  js  c++  java
  • UVA 1586

    在这里插入图片描述在这里插入图片描述

    题目大意:

    输入一个n表示有n组数据,对于每一组数据输入一串化学式,求分子质量,这里只有4分子:C N O H 对应的:12.01 1.008 16.00 14.01 最后输出分子质量。

    解题思路:

    遇到分子就把他后面的数字字符串转换为数字和分子质量相乘,如果没有数字则默认为1个,这里用字符流转换一下string和double即可。我这里用map映射了一下分子质量,用数组也是可以的。AC代码:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <sstream>
    #include <map>
    using namespace std;
    int main()
    {
    	map<char,double > mp;
    	mp['C']=12.01,mp['H']=1.008,mp['O']=16,mp['N']=14.01;
    	int n;
    	cin>>n;
    	while(n--)
    	{
    		string s;
    		cin>>s;
    		double ans=0;
    		for(int i=0;i<s.length();i++)
    		{
    			if(isalpha(s[i]))//如果遇到字母把后面的数字字符变为数字
    			{
    				string t;
    				for(int j=i+1;isdigit(s[j]);j++)//是数字就++
    				  t+=s[j];
    				double num;
    				if(isdigit(t[0]))//防止后面没有数字的情况
    				{
    				  stringstream ss;//字符流转换一下两种变量
    				  ss<<t;
    				  ss>>num;
    				}
    				else
    				  num=1;
    				ans+=num*mp[s[i]];//分子质量*个数
    			}
    		}
    		printf("%.3lf
    ",ans);
    	}
    	return 0;
    }
    
  • 相关阅读:
    数组塌陷现象
    深浅拷贝的区别
    冒泡排序,选择排序的应用
    JavaScript双重循环的嵌套
    Css Grid网格布局
    css3动画详细介绍
    Python tkinter Label Widget relief upload image
    XXXFD
    XXX1
    Python爬取一个简单网页的HTML代码
  • 原文地址:https://www.cnblogs.com/Hayasaka/p/14294236.html
Copyright © 2011-2022 走看看