给出一种物质的分子式(不带括号),求其分子量。本题分子式中只包含四种原子,分别为C、H、O、N,原子量分别为12.01,1.008,16.00,14.01。例如,C6H5OH的分子量为94.108g/mol。
//习题3-2 分子量
#include
#include
using std::cout;
using std::cin;
using std::endl;
int main()
{
char arr[10000];
double sum(0);
cin >> arr;
cout << strlen(arr) << endl;
for (int i = 0; i < strlen(arr); i++)
{
if (arr[i] = 'C')
{
sum += 12.01;
if (isdigit(arr[i + 1]))
{
double a=(arr[i+1]-1)*12.01;
sum+= a;
}
}
if (arr[i] = 'H')
{
sum += 1.008;
if (isdigit(arr[i + 1]))
{
double a = (arr[i + 1]-1) * 1.008;
sum += a;
}
}
if (arr[i] = 'O')
{
sum += 16.00;
if (isdigit(arr[i + 1]))
{
double a = (arr[i + 1] - 1) * 16.00;
sum += a;
}
}
if (arr[i] = 'N')
{
sum += 14.01;
if (isdigit(arr[i + 1]))
{
double a = (arr[i + 1] - 1) * 14.01;
sum += a;
}
}
}
cout << sum << "g/mol";
}
只是简单测试一下就发现不对想请教一下各位
读取a[i+1]的时候需要判断是否超出字符串长度,因为arr没有初始化,超出字符串长度的部分是随机值。