题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=830&page=show_problem&problem=4461

C++11代码如下:

 #include<iostream>
#include<string.h>
#include<iomanip>
using namespace std;
#define maxn 85
char s[maxn]; int main() {
int T;
cin >> T;
while (T--) {
int num_c = , num_h = , num_o = , num_n = ; //分别记录各个化学元素的个数
float sum = 0.0;
cin >> s;
int n = strlen(s);
s[n] = ;
for (int i = ; i < n; i++) {
if (isalpha(s[i])) { //判断是否是字母
switch (s[i]) {
case 'C':if (isdigit(s[i + ])) { //判断字母后面2位是否为数字
if (isdigit(s[i + ])) num_c += (s[i + ] - '') * + (s[i + ] - '');
else num_c += (s[i + ] - '');
}
else num_c++; break;
case 'H':if (isdigit(s[i + ])) {
if (isdigit(s[i + ])) num_h += (s[i + ] - '') * + (s[i + ] - '');
else num_h += (s[i + ] - '');
}
else num_h++; break;
case 'O':if (isdigit(s[i + ])) {
if (isdigit(s[i + ])) num_o += (s[i + ] - '') * + (s[i + ] - '');
else num_o += (s[i + ] - '');
}
else num_o++; break;
case 'N':if (isdigit(s[i + ])) {
if (isdigit(s[i + ])) num_n += (s[i + ] - '') * + (s[i + ] - '');
else num_n += (s[i + ] - '');
}
else num_n++; break;
default:break;
}
}
else continue; //当前数组元素为数字,则直接进入下次循环
}
sum = 12.01*num_c + 1.008*num_h + 16.00*num_o + 14.01*num_n;
cout << fixed<<setprecision()<<sum << endl; //小数点后面保留三位数字
} return ;
}

分子量(UVa1586)的更多相关文章

  1. 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586)

    习题 3-3 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586) 给出一种物质的分子式(不带括号),求分子量.本题中的分子式只包含4种原子,分别为C,H,O,N, ...

  2. 习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)

    #include<stdio.h> #include<string.h> #include<ctype.h> double getweight(char x) { ...

  3. [刷题]算法竞赛入门经典 3-1/UVa1585 3-2/UVa1586 3-3/UVa1225

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO(我也是在网上找到的pdf,但不记得是从哪里搜刮到的了,就重新上传了一遍) PS:第一次写博客分享我的代码,不知道我对c ...

  4. 【OI】计算分子量 Molar mass UVa 1586 题解

    题目:(由于UVa注册不了,还是用vjudge) https://vjudge.net/problem/UVA-1586 详细说明放在了注释里面.原创. 破题点在于对于一个元素的组合(元素+个数),只 ...

  5. 分子量 (Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)

    解题思路: 1.将分子量用double 数组记录下来 2.将字符串存储在字符数组中,从头向后扫描,一直记住“字母”,对下一个字符进行判断,是否是数字,如果是数字:用一个整数记录,本代码中用的sum,同 ...

  6. 课后题--------求分子量-----Molar mass------

    简单的化学式  求分子量问题 下面附上  代码和解析. #include<stdio.h> #include<algorithm> #include<string.h&g ...

  7. 分子量(JAVA语言)

    package 第三章习题; /*  * 给出一种物质的分子式(不带括号)求分子量.  * 本题分子只包含4种原子,分别为C,H,O,N   * 分子量为分别为12.01,1.008,16.00,14 ...

  8. 【C/C++】习题3-2 分子量/算法竞赛入门经典/字符串

    给出一种物质的分子式,求分子量.只包含4种原子,分别为C,H,O,N. [知识点] 1.ASCII码 [阿拉伯数字]48~57 [大写字母]65~90 [小写字母]97~122 2.输入循环到n-1的 ...

  9. UVA1586

    #include<stdio.h> #include<string.h> #include<ctype.h> int main(){ int n; ]; int n ...

随机推荐

  1. Linux基础--------centos7 安装python3(yum安装)

    #安装sqlite-devel yum -y install sqlite-devel #安装依赖 yum -y install make zlib zlib-devel gcc-c++ libtoo ...

  2. 【DP】【CF9D】 How many trees?

    传送门 Description 给你两个正整数\(n,h\),求由\(n\)个点组成的高度大于等于\(h\)的二叉树有多少个 Input 一行两个整数\(n,h\) Output 一个整数代表答案. ...

  3. atom插件安装引发的nodejs和npm安装血案

    最近在写前端网页,学习就要从高大上的地方开始,于是我打算装一个atom编辑器. 本来就是由github客户端的,再装个atom也算是配套了吧,其实本白也是蛮费心思的,技术不怎么地,什么神器都再努力地使 ...

  4. 【目标检测】Faster RCNN算法详解

    Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...

  5. hihocoder #1584 : Bounce

    题意; 有一个n*m的网格阵,球从左上角开始在网格中碰撞,碰到边界就直角反弹,到达格子的角落结束,求途中经过一次的格子数. 代码: //神马规律啊,设x表示球与垂直面的撞击次数,y为球与水平墙面的撞击 ...

  6. source 导入文件

    有时候,phpmyadmin 导入  是有大小限制的: 只可以用sql命令的source来导入文件

  7. socket--接受大数据

    一.简单ssh功能 1.1 实现功能 在前面的一篇博客中,我们已经实现了一个简单的类似Linux服务器ssh功能的小程序,可以输入系统命令来返回命令运行结果,今天我们也以此开始,看看socket如何来 ...

  8. dalao&话

    最大权闭合子图 正负点权之间连边,容量为无穷大,代表正负之间有联系,跑最小割,要么舍弃正的要么舍弃负的,就是把图割开

  9. oracle实用的sqlplus命令

    有时候难免没有工具,得自己手动输入sqlplus命令 执行SQL文件:@sql文件,例如:@/home/myuser/sql/test.sql查看数据库存在的存储过程:Select object_na ...

  10. centos7 nginx开启启动

    centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度.关 ...