zoukankan      html  css  js  c++  java
  • C语言编程练习10:计算相对分子质量

    题目描述

    小明最近迷上了化学,几乎天天在实验室做实验,但是很多实验生成的化学产物的相对分子质量令他很困惑,不知如何计算,请你编程帮他计算。

    输入

    输入的第一行是一个正整数n,表示有n组测试数据。
    接下来n行每行输入一个字符串,表示某个分子式,分子式中只包含大写字母和数字。
    注意:
    输入数据只包含8种元素,而这8种元素的相对原子质量如下:
    H(1),C(12),N(14),O(16),F(19),P(31),S(32),K(39)。

    输出

    对于每组输入,输出相对分子质量。

    样例输入 Copy

    4
    H2O
    KOH
    CH4
    SO2

    样例输出 Copy

    18
    56
    16
    64
    #include <stdio.h>
    #include <iostream>
    #include <cstring>
    
    using namespace std;
    
    int zimu(char ch)
    {
    	switch(ch)
    	{
    		case 'H':return 1;break;
            case 'C':return 12;break;
    		case 'N':return 14;break;
    		case 'O':return 16;break;
    		case 'F':return 19;break;
    		case 'P':return 31;break;
    		case 'S':return 32;break;
    		case 'K':return 39;break;
            default:return 0;break;
    	}
    }
    int main()
    {	
    	int n;
    	cin >> n;
    	getchar();
    	while(n--)
    	{
    		char s[100];
    		cin >> s;
    		int l = strlen(s);
    		int t=0,sum=0,flag,c=0;
    		for(int i = 0;i<l;i++)
    		{
    			c=0;
    			flag =0;
    			t=0;
    			while(s[i+1]>='0'&&s[i+1]<='9')
    			{
    				flag=1;
    				t = t*10 + s[i+1]-'0';
    				i++;
    				c++;//记录字母后的数字个数
    			}
    			if(flag)//根据字母后面是否有数字进行求和
    			{
    				sum = sum + zimu(s[i-c])*t;
    			}
    			else
    			{
    				sum = sum + zimu(s[i]);
    			}
    			
    		}
    		cout << sum <<endl;
    
    	}
    	
    	
    	return 0;
    }
    
  • 相关阅读:
    rebar
    namenode ha
    jmx
    doclint in jdk8
    maven source
    avd
    ccw-ide
    ST3使用
    Web worker
    离线web-ApplicationCache
  • 原文地址:https://www.cnblogs.com/FantasticDoubleFish/p/14310945.html
Copyright © 2011-2022 走看看