UVAOJ1586题解

来源:互联网 发布:python生成一组随机数 编辑:程序博客网 时间:2024/06/06 13:22


题目就是计算分子量。
#include<stdio.h>#include<string.h>int main(){int i,j,t,m;float k,l,n;char a[100];scanf("%d",&t);for(i=0;i<t;i++){l=0;m=0;n=0;scanf("%s",a);for(j=0;j<strlen(a);j++){l=0;if(a[j]=='C')k=12.01;if(a[j]=='H')k=1.008;if(a[j]=='O')k=16.00;if(a[j]=='N')k=14.01;if((a[j]<'0'||a[j]>'9')&&(a[j+1]<'0'||a[j+1]>'9'))l=k;if ((a[j]>='0'&&a[j]<='9')&&(a[j+1]<'0'||a[j+1]>'9')){l=(a[j]-'0')*k;}if((a[j]>='0'&&a[j]<='9')&&(a[j+1]>='0'&&a[j+1]<='9')){l=k*((a[j]-'0')*10+a[j+1]-'0');j++;}n=n+l;}printf("%.3f\n",n);}}
其实给我ac我是拒绝的。
因为看了代码就知道这个只能算后面为两位数的分子量。
这个问题的难点就是如何把字母后面的数字乘上前面的原子量。如代码所示,用了一大堆if',我还会回来改改的。

1 0
原创粉丝点击