一、题目
二、分析
题意要求计算原子总重量。
定义value数组来存放四个原子的数量。
value数组大小开到100,应为存放的是大写字母,C,H,O,N,他们的ASCII码大于65。
定义w字符,表示等待的字符,如果该原子正在等待中,需要先计算后面的数字是多少,数字不一个是一位的数字,所以定义num来临时存放w原子的个数。
读取到字母或读取结束是num确定完成的标志,此时将num存入w的value中。
最后就可以依照题意相乘累加输出结果。
#include <iostream>
#include<cstring>
#include <algorithm>
#include <ctype.h>
using namespace std;
int main()
{
int n;
cin>>n;
double C=12.01,H=1.008,O=16.00,N=14.01;
while(n--)
{
double value[100]={0};
string s;
cin>>s;
char w;
double count=0;
for(int i=0;i<s.length();i++)
{
if(isalpha(s[i]))、、如果是字母
{
if(isalpha(s[i+1])||i==s.length()-1)//下一位读取到字母或读取结束
{
value[s[i]]++;
}
else w=s[i];
}
else{、、如果是数字
count=count*10+s[i]-'0';
if(isalpha(s[i+1])||i==s.length()-1){//下一位读取到字母或读取结束
value[w]+=count;
count=0;
}
}
}
double ans=value['C']*C+value['H']*H+value['O']*O+value['N']*N;
printf("%.3lf\n",ans);
}
}