题目:
代码:
#include <iostream>
#include <cctype>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define C 12.01
#define H 1.008
#define O 16.00
#define N 14.01
using namespace std;
int main()
{
double sum,k;
int n,i;
char a[85];
cin >> n;
while(n--)
{
sum=0;
cin >> a;
for(i=0;i<strlen(a);i++)
{
k=0;
if(isalpha(a[i]))
{
k=atoi(a+i+1);
if(a[i]=='C')
{
if(k)
{
sum+=C*k;
}
else
{
sum+=C;
}
continue;
}
if(a[i]=='H')
{
if(k)
{
sum+=H*k;
}
else
{
sum+=H;
}
continue;
}
if(a[i]=='O')
{
if(k)
{
sum+=O*k;
}
else
{
sum+=O;
}
continue;
}
if(a[i]=='N')
{
if(k)
{
sum+=N*k;
}
else
{
sum+=N;
}
continue;
}
}
}
printf("%.3lf\n",sum);
}
return 0;
}
解析:
1、本题将四个元素符定义为常量将有利于后面的计算。
2、isalpha()是用来判断一个字符是不是字母,atoi()是将字符串转化为数字的函数。具体用法自行百度。