UVA1586 Molar Mass
2016-12-01 01:04
288 查看
描述略
Sample Input
4
C
C6H5OH
NH2CH2COOH
C12H22O11
Sample Output
12.010
94.108
75.070
342.296
此题难在不知道字母后有几位数字
网上看到的处理办法是写一个函数处理数字部分
这里我采用从后往前计算的方法 比较繁琐 但不失为一种好思路
Sample Input
4
C
C6H5OH
NH2CH2COOH
C12H22O11
Sample Output
12.010
94.108
75.070
342.296
此题难在不知道字母后有几位数字
网上看到的处理办法是写一个函数处理数字部分
这里我采用从后往前计算的方法 比较繁琐 但不失为一种好思路
#include <stdio.h> #include<string.h> #include<cctype> int main(int argc, char *argv[]) { char str[100]; int kase; double sum; scanf("%d",&kase); while(kase--) { int num=0,count=1; scanf("%s",str); sum=0; int flag=1;//标记 for(int i=strlen(str)-1;i>=0;i--)//从后往前遍历 { if(isalpha(str[i])) { if(flag==1)//如果字母后没有跟数字 { switch(str[i]) { case 'C':sum+=12.01;break; case 'H':sum+=1.008;break; case 'O':sum+=16.00;break; case 'N':sum+=14.01;break; default:break; } } else //字母后有数字 switch(str[i]) { case 'C':sum+=12.01*num;break; case 'H':sum+=1.008*num;break; case 'O':sum+=16.00*num;break; case 'N':sum+=14.01*num;break; default:break; } num=0; count=1; flag=1;//改变状态 不存在数字 } if(isdigit(str[i])) { num+=count*((str[i]-'0'));//计算数字 count*=10; flag=0;//改变状态 存在数字 } } printf("%.3f\n",sum); } return 0; }
相关文章推荐
- UVA 1586 Molar mass(蛋白质的相对分子质量)
- UVa 1586 - Molar mass
- 小紫书 习题 3-2(UVA 1586) 分子量(Molar mass)
- UVa - 1586 - Molar mass
- UVa 1586, Molar Mass
- UVA-1586 Molar Mass
- UVA - 1586 Molar mass
- Uva - 1586 - Molar mass
- [Molar Mass, ACM/ICPC Seoul 2007, UVA1586]
- UVA 1586 分子量(Molar Mass)
- UVa1586 - Molar mass还是画流程图思路清晰
- Uva1586 - Molar mass
- Uva - 1586 - Molar mass
- UVA 1586 Molar mass
- 习题3-2 UVa 1586 Molar Mass
- UVA-1586 Molar Mass - ACM/ICPC Seoul 2007
- UVa1586-Molar Mass
- b2bf 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
- UVa 1586 - Molar mass
- UVa - 1586 - Molar mass(char s[n];scanf("%s",s);)