题目大意:给出一种物质的分子式(不带括号),求分子量。只包换4种原子,C,H,O,N,原子量分别为12.01,1.008,16.00,14.01。
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
double d[200] ;//保存原子量
d['C'] = 12.01;//初始化原子量
d['H'] = 1.008;//初始化原子量
d['O'] = 16.00;//初始化原子量
d['N'] = 14.01;//初始化原子量
char s[100];//保存输入数据
int k;
scanf("%d",&k);
while(k-->0){
scanf("%s",s);
double sum = 0.0;//分子量
for(int i=0;i<strlen(s);i++){
char c = s[i];
int t = 1,times=0; //t保存数字 times保存数字位数
while(i+1 != strlen(s) && !isalpha(s[i+1])){//如果第i+1位是数字
t = t*(times*10)+(s[i+1]-48);
i++;
times++;
}
sum+= d[c]*t;
}
printf("%.3f\n",sum);
}
return 0;
}