首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算分子数

计算分子数
EN

Code Review用户
提问于 2014-10-11 03:41:59
回答 2查看 371关注 0票数 7

我希望我的计划被审查。我不得不编写一个简单的程序来计算碳氢化合物中的分子数量。

  • 1碳原子有12 AMU。
  • 一个氢原子有一个AMU。
代码语言:javascript
复制
#include <iostream>
using namespace std;



int main()
{
    cout << "Enter mass of hydrocarbon (in grams)\n"
            "followed by the number of carbon atoms\n"
            "followed by the number of hydrogen atoms\n"
            "(e.g. 10.5 2 6): " << flush;

    float mass;
    float carbonAtoms;
    int hydrogenAtoms;
    cin >> mass >> carbonAtoms >> hydrogenAtoms;

    long formulaWght = (carbonAtoms * 12) + (hydrogenAtoms * 1);


    double molecules = (mass / formulaWght) * 6.02e23;



    cout << mass << " grams of hydrocarbon\nwith "
            << carbonAtoms << " carbon atom(s) and "
               << hydrogenAtoms << " hydrogen atom(s)\ncontains "
                  << molecules << " molecules" << endl;

    return 0;
}
EN

回答 2

Code Review用户

回答已采纳

发布于 2014-10-11 03:47:42

  1. 不要使用using namespace std。读取
  2. 而不是在你的程序中使用“魔法数字”。使用符号常量。CARBON_AMUHYDROGEN_AMU应为ints. const int CARBON_AMU= 12;const int HYDROGEN_AMU = 1;const double AVOGADRO =6.022141410704084099072e23;
  3. 利用程序中的函数,而不是用表达式初始化变量: long formulaWeight(int carbonAtoms,int hydrogenAtoms){ mass ((carbonAtoms* CARBON_AMU) + (hydrogenAtoms * HYDROGEN_AMU));} double numMolecules(浮点质量,长formulaWeight) {返回((carbonAtoms/ formulaWeight) * AVOGADRO);
  4. (e.g. 10.5 2 6): " << flush;我看不出使用std::flush有什么好处。你可以把它移走。
  5. 修复你的压痕。这是比较容易理解的: cout <<质量<<“克碳氢\n与”<< carbonAtoms <<“碳原子(S)和”<< hydrogenAtoms <<“氢原子(S)含有”<<分子<<“分子”<< endl;
票数 4
EN

Code Review用户

发布于 2014-10-11 17:25:26

一些小的加号。

这些行上的所有括号都是不必要的,因为在C++ (和大多数语言,如果不是全部)中,乘法比加法具有更高的优先级:

长formulaWght = (carbonAtoms * 12) + (hydrogenAtoms * 1);双分子=(质量/ formulaWght) * 6.02e23;

顺便问一下,为什么要乘以1?

这相当于:

代码语言:javascript
复制
long formulaWght = carbonAtoms * 12 + hydrogenAtoms;
double molecules = mass / formulaWght * 6.02e23;

除了@EngieOP建议重新设置最后一个cout之外,我还建议重新排列行,使嵌入的\n字符出现在代码行的末尾,就像在输出中一样,如下所示:

代码语言:javascript
复制
cout << mass << " grams of hydrocarbon\n"
     << "with " << carbonAtoms << " carbon atom(s) and "
     << hydrogenAtoms << " hydrogen atom(s)\n"
     << "contains " << molecules << " molecules" << endl;

using namespace std不同,如果您希望能够简单地引用coutendl,可以这样做:

代码语言:javascript
复制
using std::cout;
using std::endl;
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/65332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档