Jinyanchen 2022-03-05 22:52
浏览 56
已结题

如何计算相对分子质量

在C++或python中,输入一个由1-2个字符的元素符号,由化学计量数(1省略不写,在符号右边,无括号)组成的化学式,想要求其的相对分子质量(保留整数)
现在在C++上只会一个由1个字符的元素符号组成的,想要扩展一下,代码如下:(不是纠错!)

#include<bits/stdc++.h>
using namespace std;
char a[2005];
int f(char shuru);
int main(){
    int i,ci,b,l,x,total;
    scanf("%d",&b);
    for(ci=1;ci<=b;ci++){
    total= 0;
    scanf("%s",&a);
    l=strlen(a);
    for(i = 0; i<l; ++i){
    if(a[i+1]>'0'&&a[i+1]<='9'){
    x=0;
    for(int ci=i+1;ci<l;ci++){
    if(a[ci]>='0'&&a[ci]<='9'){
    x=x*10+(a[ci]-'0');     }
    else{
    break;
    }    }
    total=total+x*f(a[i]);
    }
    else if(a[i]>='0'&&a[i]<='9'){
    continue;
    }    
    else {
    total=total+f(a[i]);
     }    }
    cout<<total<<endl;
    }
    return 0;
    }
int f(char shuru)
{
    switch(shuru)
    {
    case 'U':
        return 238;
        break;
    case 'V':
        return 51;
        break;
    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;
    }
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 3月13日
    • 创建了问题 3月5日

    悬赏问题

    • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
    • ¥15 C语言使用vscode编码错误
    • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
    • ¥20 ensp怎么配置让PC1和PC2通讯上
    • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
    • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
    • ¥15 请各位帮我看看是哪里出了问题
    • ¥15 vs2019的js智能提示
    • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
    • ¥15 uniapp的h5项目写一个抽奖动画