您的位置:首页 > 其它

UVa-1586

2015-03-11 21:30 274 查看
#include<stdio.h>
#include<ctype.h>
#include<string.h>
double q(char fz,int c)
{
double d;
switch(fz)
{
case 'C':d=12.01;break;
case 'H':d=1.008;break;
case 'O':d=16.00;break;
case 'N':d=14.01;break;
}
return d*c;
}
int main()
{
long long T;
scanf("%I64d",&T);
char fz[83];
double total;
while(T--)
{

scanf("%s",fz);
total=0;   //之前错在 这儿没有初始化
int c;
for(int i=strlen(fz)-1;i>=0;)  //还错在这儿 i重复递减
{
if(isalpha(fz[i])) {c=1;total+=q(fz[i],c);i--;}
else
{
int j=i,b=1;c=0;    //C6H5OH
while(isdigit(fz[j]) && j>=0)
{
c+=((fz[j]-48)*b);
b*=10;
j--;
}
total+=q(fz[j],c);
i=j-1;
}
}
printf("%.3lf\n",total);  //还有这最后一行也要换行的问题   有的题最后一行不要换行  但是这题要
}
return 0;
}//这题花了五个小时才写出来   我真是快要感动的哭了。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: