本文共 1650 字,大约阅读时间需要 5 分钟。
为了解决这个问题,我们需要计算给定分子式的摩尔质量。分子式由四种元素组成:碳(C)、氢(H)、氧(O)和氮(N),它们的标准原子权重分别为12.01 g/mol、1.008 g/mol、16.00 g/mol和14.01 g/mol。我们需要将这些元素及其数量结合起来,计算总摩尔质量。
#include#include #define maxn 100char s[maxn];double m(char x) { if(x == 'C') return 12.01; if(x == 'H') return 1.008; if(x == 'O') return 16.00; if(x == 'N') return 14.01;}int main() { int t, i; double ans; scanf("%d", &t); while(t--) { scanf("%s", s); ans = 0; int n = strlen(s); for(i = 0; i < n; i++) { if(s[i] > 'A' && s[i] < 'Z') { char current = s[i]; int current_weight = m(current); int j = i + 1; int found_digits = 0; while(j < n && isdigit(s[j])) { found_digits++; j++; } if(found_digits > 0) { int num = 0; for(int k = 0; k < found_digits; k++) { num = num * 10 + (s[i + 1 + k] - '0'); } ans += current_weight * num; } i = j - 1; } else { i++; } } printf("%.3f\n", ans); } return 0;}
m
:返回对应元素的原子权重。例如,m('C')
返回 12.01。main
:读取输入数据,处理每个测试用例。该方法确保了每个元素及其数字部分被正确识别和处理,能够正确计算分子式的摩尔质量,并且避免了越界错误,确保了代码的稳定性和正确性。
转载地址:http://peufk.baihongyu.com/