给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol)。C++实现
例如:

输入:C6H5OH
输出:94.108g/mol

话不多说,先看代码:

#include <iostream>
#include<ctype.h>
using namespace std;
const double d1 = 12.01;
const double d2 = 1.008;
const double d3 = 16.00;
const double d4 = 14.01;int main()
{char a[20];double s = 0;int m = 0, n = 0, p = 0, q = 0;cout << "输入分子字符串(含C、H、O、N):" << endl;cin.getline(a, 20);  //字符串输入方法for (int i = 0; i < strlen(a); i++){if (a[i] == 'C' && (isdigit(a[i + 1]))){m += int(a[i + 1]-'0');//cout << int(a[i + 1]-'0');}else if (a[i] == 'C' && !(isdigit(a[i + 1])))m += 1;if (a[i] == 'H' && (isdigit(a[i + 1]))){n += int(a[i + 1]-'0');}else if (a[i] == 'H' && !(isdigit(a[i + 1])))n += 1;if (a[i] == 'O' && (isdigit(a[i + 1]))){p += int(a[i + 1]-'0');}else if (a[i] == 'O' && !(isdigit(a[i + 1])))p += 1;if (a[i] == 'N' && (isdigit(a[i + 1]))){q += int(a[i + 1]-'0');}else if (a[i] == 'N' && !(isdigit(a[i + 1])))q += 1;}s = d1 * m + d2 * n + d3 * p + d4 * q;cout << "该分式分子量为:" << s << "g/mol"<<endl;return 0;
}

思路解析:

1.这里使用的是笨方法,但是比较容易理解,先进行一次循环,一次判断每一个字符的个数。
2.这里有坑的是,如何确定什么时候是一次出现就为1?但是可能后面还会出现一次的情况,所以依然要累加+1。
3.最难的是,忘了字符串不能和int型直接相加,需要进行转换为整型才可以,所以在这里一直有bug,这里的方法是实现字符串到数字的转换int()方法与char[i+1]-‘0’的数字转换才能成功。

程序运行结果图:


新手驾到,请多指教!

分子量-算法竞赛习题3-2:给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01。相关推荐

  1. 算法竞赛入门经典 习题3-2 分子量 Molar Mass

    给出一种物质的分子式(不带括号),求其分子量.本题分子式中只包含四种原子,分别为C.H.O.N,原子量分别为12.01,1.008,16.00,14.01.例如,C6H5OH的分子量为94.108g/ ...

  2. 算法竞赛入门竞赛 习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)

    给出一种物质的分子式(不带括号),求分子量.本题中的分子式只包含4种原子,分 别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol).例如,C6 ...

  3. 刘汝佳《算法竞赛入门经典(第二版)》习题(三)

    刘汝佳<算法竞赛入门经典(第二版)>第三章习题(一) 习题3-1 得分(ACM/ICPC Seoul 2005,UVa1585) 给出一个由O和X组成的串(长度为1~80),统计得分.每个 ...

  4. 刘汝佳算法竞赛第二版习题3-2思路

    最近在看刘汝佳编写的紫皮算法书,第三章后面有个习题,尝试写了一下,总感觉能找到更加便利的解题方法,但能力有限没想到. 上网搜索了一下,也没找到能让我眼前一亮的方法,那就暂且把我写的shi山放出来让大伙 ...

  5. 算法竞赛入门经典第3章

    3.1数组 数组较大 比较大的数组尽量声明在main函数外,否则程序可能无法进行. 数组操作 如果要从数组a复制k个元素到数组b,可以这样做:memcpy(b,a,sizeof(int)*k).  如 ...

  6. 【Java】基于分子式求分子量

    题目要求 给出一种至多只含 C.H.O.N 四种元素的有机物的分子式(不带括号),求分子量,要求保留三位小数. 已知:C.H.O.N 的原子量分别为12.01, 1.008, 16.00, 14.01 ...

  7. 算法竞赛入门经典(第二版)第三章习题

    声明:作者水平有限,只是会基础C语言的小菜,C++还未入门.作者仅根据算法竞赛入门经典(第二版)书上第三章习题所述题意而编写,并未严格按照原题的输入输出编写,代码仅经过个人测试(OJ网站太慢了).代码 ...

  8. 算法竞赛入门【码蹄集进阶塔335题】(MT2026-2050)

    算法竞赛入门[码蹄集进阶塔335题](MT2026-2050) 文章目录 算法竞赛入门[码蹄集进阶塔335题](MT2026-2050) 前言 为什么突然想学算法了? 为什么选择码蹄集作为刷题软件? ...

  9. 算法竞赛五冠五亚得主,手把手带你了解算法竞赛

    大家好,我是王贺(鱼遇雨欲语与余),一个工作两年的推荐广告算法工程师,热爱算法竞赛.今天跟大家聊聊我的新书<机器学习算法竞赛实战>,以及我的竞赛经历.明天晚上的直播我会以天池平台开放的二手 ...

  10. 蓝桥杯算法竞赛系列第二章——深入理解重难点之递归(上)

    铁汁们,递归(下)已经更新咯,欢迎铁汁们批评指正. 蓝桥杯算法竞赛系列第二章--深入理解重难点之递归(下)_安然无虞的博客-CSDN博客 目录 一.递归是什么? 二.如何理解"递归" ...

最新文章

  1. Java常见数据结构以及特点、使用场景
  2. 开源史上最成功的8个开源产品
  3. 【Linux网络编程】浅谈 C/S 和 B/S 架构
  4. 【十大经典数据挖掘算法】EM
  5. 报错:Navicat for MySQL 连接MySQL 8.0 出现1130错误
  6. “农业大数据”专题征文通知
  7. Shell——运行Shell脚本
  8. LeetCode 5380. 数组中的字符串匹配
  9. Python之代码性能分析工具(时间+内存)
  10. mysql之分页查询
  11. 【递归,Java从入门到精通第五版pdf百度云
  12. 猿创征文 | 国产数据库之神通数据库详解安装和使用
  13. Win10 安装 JDK1.8 及配置环境变量
  14. web程序设计(9)——编写阅读器(JQuery基础)
  15. Java 中文转拼音/汉字转拼音, 中文转五笔/汉字转五笔, 下载字典!
  16. java解压出来损坏_在Java中解压缩错误
  17. oracle数据库期末上机题,oracle数据库期末考试试题及复习资料
  18. 微信小程序仿照微信拖动缩放图片和截取头像
  19. java实训答辩ppt_实训项目答辩.ppt
  20. 数据库三范式 无重复列 完全依赖主键 属性不依赖非主属性

热门文章

  1. SREng 日志分析方法
  2. 小管家进销存_管钱、管货、管顾客,“北漂”京东便利店主点赞掌柜管家
  3. 《 浩海技术 Ghost XP SP3 快速装机版 V14.0 》 世界杯特别纪念版
  4. Android Studio设置Eclipse快捷键
  5. IDEA MyEclipse Eclipse 快捷键大全(最终版)
  6. APEX 压枪练习记录
  7. 如何不使用输入法打出汉字- 在word中打印出自己的名字
  8. 淘宝技术这十年(淘宝技术大学校长解密淘宝十年)
  9. CMMI 知识扫盲篇
  10. Activiti流程引擎与业务整合方案