乐趣区

关于c++:AZ-相对分子质量基础上机试题

小明最近迷上了化学,简直天天在实验室做试验,然而很多试验生成的化学产物的绝对分子品质令他很困惑,不知如何计算,请你编程帮他计算。
输出
输出的第一行是一个正整数 n,示意有 n 组测试数据。
接下来 n 行每行输出一个字符串,示意某个分子式,分子式中只蕴含大写字母和数字。
留神:
输出数据只蕴含 8 种元素,而这 8 种元素的绝对原子质量如下:
H(1),C(12),N(14),O(16),F(19),P(31),S(32),K(39)。
输入
对于每组输出,输入绝对分子品质。
样例输出 Copy
4
H2O
KOH
CH4
SO2
样例输入 Copy
18
56
16
64

代码示例(本人写的,只能过平台,不完满)

//#include<iostream>
//#include<string>
//#include<string.h>
//using namespace std;
//
//int main(){//    int a[]  = {1,12,14,16,19,31,32,39};
//    char b[] = "HCNOFPSK";
//    int n = 0,sum = 0;
//    char s[100];
//    scanf("%d",&n);
//    getchar();
//    while(n--){//        scanf("%s",s);
//        for(int i = 0; i < strlen(s); i++){
//            int t = 0,c = 0;
//            for(int j = 0; j < 8; j++){//                if(s[i] == b[j]){//                    c = a[j];
//                    break;
//                }
//            }
//            while((s[i + 1]) <= '9' && s[i + 1] >= '0'){// 如果前面跟有字符型数字,计算数字的值 
//                t = t * 10 + s[i + 1] - '0';
//                i++;// 循环增,遍历其后所有数字(若还有) 
//            }
//            if(t == 0){// 证实 s[i]前面的 s[i + 1]不是 0 -9,而是字母元素 
//                sum += c; 
//            }else{
//                sum += c * t; 
//            }
////            printf("%d\n",sum); 
//        }
//        printf("%d\n",sum);
//        sum = 0;
//    } 
//    return 0;
//}

退出移动版