分子量(UVa1586)
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)的更多相关文章
- 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586)
习题 3-3 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586) 给出一种物质的分子式(不带括号),求分子量.本题中的分子式只包含4种原子,分别为C,H,O,N, ...
- 习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
#include<stdio.h> #include<string.h> #include<ctype.h> double getweight(char x) { ...
- [刷题]算法竞赛入门经典 3-1/UVa1585 3-2/UVa1586 3-3/UVa1225
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO(我也是在网上找到的pdf,但不记得是从哪里搜刮到的了,就重新上传了一遍) PS:第一次写博客分享我的代码,不知道我对c ...
- 【OI】计算分子量 Molar mass UVa 1586 题解
题目:(由于UVa注册不了,还是用vjudge) https://vjudge.net/problem/UVA-1586 详细说明放在了注释里面.原创. 破题点在于对于一个元素的组合(元素+个数),只 ...
- 分子量 (Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)
解题思路: 1.将分子量用double 数组记录下来 2.将字符串存储在字符数组中,从头向后扫描,一直记住“字母”,对下一个字符进行判断,是否是数字,如果是数字:用一个整数记录,本代码中用的sum,同 ...
- 课后题--------求分子量-----Molar mass------
简单的化学式 求分子量问题 下面附上 代码和解析. #include<stdio.h> #include<algorithm> #include<string.h&g ...
- 分子量(JAVA语言)
package 第三章习题; /* * 给出一种物质的分子式(不带括号)求分子量. * 本题分子只包含4种原子,分别为C,H,O,N * 分子量为分别为12.01,1.008,16.00,14 ...
- 【C/C++】习题3-2 分子量/算法竞赛入门经典/字符串
给出一种物质的分子式,求分子量.只包含4种原子,分别为C,H,O,N. [知识点] 1.ASCII码 [阿拉伯数字]48~57 [大写字母]65~90 [小写字母]97~122 2.输入循环到n-1的 ...
- UVA1586
#include<stdio.h> #include<string.h> #include<ctype.h> int main(){ int n; ]; int n ...
随机推荐
- Python多线程、进程、协程
本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...
- 找圆算法((HoughCircles)总结与优化
http://www.opencv.org.cn/forum.php?mod=viewthread&tid=34096 Opencv内部提供了一个基于Hough变换理论的找圆算法,Hough ...
- Drivers Dissatisfaction 最小生成树+LCA
题意:给一张n个点m条边的连通图,每条边(ai,bi)有一个权值wi和费用ci, 表示这条边每降低1的权值需要ci的花费.现在一共有S费用可以用来降低某些边的权值 (可以降到负数),求图中的一棵权值和 ...
- Python-- Redis Set
一.无序集合 Set操作,Set集合就是不允许重复的列表 1.1 sadd(name, values) # name对应的集合中添加元素 1.2 smembers(name) # 获取name对应的集 ...
- pasty公式
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- 使用tqdm组件构造程序进度条
使用tqdm组件构造程序进度条 觉得有用的话,欢迎一起讨论相互学习~Follow Me 主要代码 import tqdm # 引用tqdm组件 TRAIN_STEPS = N for i in tqd ...
- python requests https 访问出错
错误提示: /usr/local/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:100: InsecurePla ...
- 2017北京国庆刷题Day5 morning
期望得分:0+60+60=120 实际得分:0+30+60=90 令g=gcd(X11,X12,X13……) 则行列式可能为D的充要条件为g|D 1.g|D为必要条件: 由定义来算行列式的时候,每一项 ...
- Linux高级编程--03.make和makfile
Makefile语法基础 在Linux下,自动化编译工具是通过make命令来完成的(一些工具厂商也提供了它们自己的make命令,如gmake等),make命令的基本格式如下: make [-f mak ...
- H5多媒体
Video <video width="500px" controls="controls"> <source src="test. ...