本文共 849 字,大约阅读时间需要 2 分钟。
题目、 给出一种物质的分子式, 求分子量.本题只含4种原子, C H O N, 原子量分别为 12.01、 1.008、 16.00、 14.01. 例如 C6H5OH 的分子量为94.108 g/mol。
实现:
#include#include int main() { char str[100]; int t; scanf("%d",&t); double sum = 0.0; double M = 0; int cnt; while(t--){ scanf("%s",str); for(int i = 0; i < strlen(str); i++ ){ int n = 0; if(str[i] <= '9' && str[i] >= '0')//每次从原子(非数字)进入 然后处理完原子后面的所有数字 所以 每次跳过处理完的数字 continue; if(str[i] == 'C') M = 12.01; if(str[i] == 'H') M = 1.008; if(str[i] == 'O') M = 16.00; if(str[i] == 'N') M = 14.01; cnt = i+1; while(str[cnt] >= '0' && str[cnt] <= '9'){//处理分子数大于1位的情况 例如C123H10N55 n = n * 10 + str[cnt]-'0'; //利用多项式 cnt++; } if(str[i+1] > '9' || str[i+1] < '0')//单个原子数 大于 1 个 时 sum += M; else sum += M*n;//单独一个原子只有1个 如 CHOH } printf("%.3f",sum); } return 0; }
转载地址:http://xaimi.baihongyu.com/