算法竞赛入门经典-习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
2017-06-02 09:54
585 查看
给出一种物质的分子式(不带括号),求分子量。 本题中的分子式只包含4种原子,分别为C, H, O, N,原子量分别为12.01,
1.008, 16.00, 14.01(单位:g/mol)。 例如,C6H5OH的分子量为94.108g/mol。
#include<stdio.h>
#include<string.h>
float mC(int i, char* s)
{
if(i == strlen(s) - 1)
return 12.01;
else if(s[i+1] > '1' && s[i+1] <= '9')
return 12.01 * (s[i+1] - '0');
else if(s[i+1] > 'A' && s[i+1] < 'Z')
return 12.01;
}
float mH(int i, char* s)
{
if(i == strlen(s) - 1)
return 1.008;
else if(s[i+1] > '1' && s[i+1] <= '9')
return 1.008 * (s[i+1] - '0');
else if(s[i+1] > 'A' && s[i+1] < 'Z')
return 1.008;
}
float mO(int i, char* s)
{
if(i == strlen(s) - 1)
return 16.00;
else if(s[i+1] > '1' && s[i+1] <= '9')
return 16.00 * (s[i+1] - '0');
else if(s[i+1] > 'A' && s[i+1] < 'Z')
return 16.00;
}
float mN(int i, char* s)
{
if(i == strlen(s) - 1)
return 14.01;
else if(s[i+1] > '1' && s[i+1] <= '9')
return 14.01 * (s[i+1] - '0');
else if(s[i+1] > 'A' && s[i+1] < 'Z')
return 14.01;
}
int main()
{
char s[30];
float m = 0.0;
scanf("%s",s);
for(int i = 0; i < strlen(s); i ++)
{
switch (s[i])
{
case 'C':
m += mC(i, s);
continue;
case 'H':
m += mH(i, s);
continue;
case 'O':
m += mO(i, s);
continue;
case 'N':
m += mN(i, s);
continue;
default:
continue;
}
}
printf("%.3fg/mol\n",m);
return 0;
}
1.008, 16.00, 14.01(单位:g/mol)。 例如,C6H5OH的分子量为94.108g/mol。
#include<stdio.h>
#include<string.h>
float mC(int i, char* s)
{
if(i == strlen(s) - 1)
return 12.01;
else if(s[i+1] > '1' && s[i+1] <= '9')
return 12.01 * (s[i+1] - '0');
else if(s[i+1] > 'A' && s[i+1] < 'Z')
return 12.01;
}
float mH(int i, char* s)
{
if(i == strlen(s) - 1)
return 1.008;
else if(s[i+1] > '1' && s[i+1] <= '9')
return 1.008 * (s[i+1] - '0');
else if(s[i+1] > 'A' && s[i+1] < 'Z')
return 1.008;
}
float mO(int i, char* s)
{
if(i == strlen(s) - 1)
return 16.00;
else if(s[i+1] > '1' && s[i+1] <= '9')
return 16.00 * (s[i+1] - '0');
else if(s[i+1] > 'A' && s[i+1] < 'Z')
return 16.00;
}
float mN(int i, char* s)
{
if(i == strlen(s) - 1)
return 14.01;
else if(s[i+1] > '1' && s[i+1] <= '9')
return 14.01 * (s[i+1] - '0');
else if(s[i+1] > 'A' && s[i+1] < 'Z')
return 14.01;
}
int main()
{
char s[30];
float m = 0.0;
scanf("%s",s);
for(int i = 0; i < strlen(s); i ++)
{
switch (s[i])
{
case 'C':
m += mC(i, s);
continue;
case 'H':
m += mH(i, s);
continue;
case 'O':
m += mO(i, s);
continue;
case 'N':
m += mN(i, s);
continue;
default:
continue;
}
}
printf("%.3fg/mol\n",m);
return 0;
}
相关文章推荐
- 算法竞赛入门竞赛 习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
- 算法竞赛入门经典 习题3-1 得分(Score, ACM/ICPC Seoul 2005, UVa1585)
- 习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
- b2bf 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
- 算法竞赛入门经典-习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994,UVa232)
- 习题 3-2 分子量 (ACM/ICPC Seoul 2007, UVa1586)
- 分子量 (Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
- 分子量 (Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)
- Molar Mass, ACM/ICPC Seoul 2007,Uva1586 给出一种物质的分子式,求分子量
- 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
- UVA-1586 Molar Mass - ACM/ICPC Seoul 2007
- 算法竞赛入门经典3.2 分子量UVa1586
- [Molar Mass, ACM/ICPC Seoul 2007, UVA1586]
- Molar Mass, ACM/ICPC Seoul 2007, UVa 1586
- UVa1586 分子量 算法竞赛入门经典第二版CH-3习题3-2
- UVa 1586 - Molar Mass - ACM/ICPC Seoul 2007 - C语言
- 算法竞赛入门经典习题3-1 得分(Score,ACM/ICPC Seoul2005,UVa1585)
- 算法竞赛入门经典 UVa1586
- 算法竞赛入门经典第四章习题4-9 Data Mining UVA - 1591
- 算法竞赛 例3-5生成元(Digit Generator,ACM/ICPC Seoul 2005,UVa1583)