给出一个物质的分子式(不带括号),求分质量。分子式包含4种原子,分别为C,H,O,N.原子量分别为12.01,、1.008、16.00、14.01。(单位:g/mol),这个计算分子量的算法就是之前我改编的进制转换的算法(所以学习有时候也需要脑洞的,当然大佬请无视)。以下是AC代码:
#include <stdio.h>
#include <string.h>int main()
{
int testcase;
char s[1024];
double gmol[128];
gmol['C'] = 12.01;
gmol['H'] = 1.008;
gmol['O'] = 16.00;
gmol['N'] = 14.01;
scanf("%d", &testcase);
while (testcase--)
{
scanf("%s", s);
double ret = 0;
int n = strlen(s);
for (int i = 0; i < n; )
{
int ele = s[i], num = 0;//字符与整型可以直接赋值?ele是字符的ascll值,s[i]是字符或者对应的ascll值
i++;
while (s[i] >= '0' && s[i] <= '9')
num = num * 10 + s[i] - '0', i++;//在竞赛入门书中的P84有2进制换十进制的算法,与此类似!十进制乘10,2进制乘二!
if (num == 0)
num = 1;
ret += gmol[ele] * num;//gmol[72]=gmol['H']
}
printf("%.3lf\n", ret);
}
return 0;
}
另外多个文件的值传递问题我还没搞清楚,一个文件里是原函数,另一个是主程序,还有一个头文件。那他们之间怎么传递和调用呢?以前做毕设是用到的stm32的程序里就是这个形式,可惜不明白。留待以后解决吧!