#include"stdio.h"
#include"math.h"
int main()
{
int sb(int ,int);
char a[20];
float num=0,C=12.01,s,aha,sum=0;
int j,k,i,t;
gets(a);
for(i=0;a[i]!='\0';i++)
{
if(a[i]=='C')
{
for(k=i+1;a[k]>='0'&&a[k]<='9';k++)
;
t=k-(i+1);
for(s=t,j=i+1;s>0,j<=k;t--,j++)
{
aha=sb(10,t-1);
num=num+(a[j]-48)*aha;
}
sum=num*C;
}
printf("%f",sum);
return 0;
}
}
int sb(int a,int b)
{
int i,t=1;
for(i=1;i<=b;i++)
t=a*t;
return t;
}
我不懂哪错了 大神指出错误感激不尽
讲讲你的算法,怎样计算分子量?
看上去有一处错误:
for(s=t,j=i+1;s>0 && j<=k;t--,j++)//修改
我都没有看到H和O的原子量在你程序中,你是怎么计算的。
分子量无非就是原子量x原子数,加起来。当然复杂一些的还有括号。这和表达式计算是一个道理。