解题思路:

1.将分子量用double 数组记录下来

2.将字符串存储在字符数组中,从头向后扫描,一直记住“字母”,对下一个字符进行判断,是否是数字,如果是数字:用一个整数记录,本代码中用的sum,同时下标++。

  进行判断,查看是否对数字进行了记录,即查看sum是否进入了while循环并被赋值,如果没有被赋值,说明下一个字符不是数字,直接对W(总记录)值进行赋值,为当前字符的权值(分子量),即double数组的中的值。如果被赋值,说明字符后面是一个数字,sum中存放了该“数字”,也是对w赋值,不过此时是赋sum倍的当前字符的权值(分子量)。

3.最后整个字符串循环完毕,输出总记录W即可。

#include <stdio.h>
int main(void)
{
double darr[200];
int n,sum,p;
double w;
char c,carr[1000];
darr['C']=12.01;
darr['H']=1.008;
darr['O']=16.00;
darr['N']=14.01;
scanf("%d",&n);
while(n--)
{
p=0;
w=0;
scanf("%s",carr);
while(carr[p]!='\0')
{
sum=0;
c=carr[p];
p++;
while(carr[p]>='0' && carr[p]<='9')
{
sum=sum*10+carr[p]-'0';
p++;
}
if(sum)
w=w+sum*(darr[c]);
else
w+=(darr[c]);
}
printf("%.3f\n",w);
}
return 0;
}

  

最新文章

  1. JAVA设计模式之3-抽象工厂模式
  2. Caffe源码解析4: Data_layer
  3. Mysql更换MyISAM存储引擎为Innodb的操作记录
  4. Scalaz(31)- Free :自由数据结构-算式和算法的关注分离
  5. Android笔记:获取屏幕信息
  6. Redis常用命令速查 02_转
  7. ABAP屏幕基础
  8. ecshop订单中配送方式报错
  9. Android类库常用类库一览
  10. CDN技术详解及实现原理
  11. 微信小程序,前端大梦想(三)
  12. 阿里聚安全&#183;安全周刊】一种秘密窃取数据的新型 Android 木马|iOS 11相机惊现BUG
  13. WebApi一个控制器中定义多个Get方法。
  14. 《Java》第五周学习总结20175301
  15. 浏览器各个版本和系统(chrome/safari/edge/qq/360)
  16. linux中date命令显示
  17. Python3+smtplib+poplib+imaplib实现发送和收取邮件(以qq邮箱为例)
  18. Ambertools15安装(详细)
  19. 同步、异步、回调执行顺序之经典闭包setTimeout分析
  20. DOS中命令的格式

热门文章

  1. Use CLR Profiler
  2. salt-ssh
  3. slatsatck file模块2种写法及系统初始化
  4. python 反模式
  5. python数字图像处理(10):图像简单滤波
  6. [CareerCup] 6.4 Blue Eyes People on Island 岛上的蓝眼人
  7. 解决BeanNotOfRequiredTypeException: Bean named &#39;XXX&#39; must be of type XXX, but was actually of type XXX问题
  8. 微信小程序开发公测,小程序账号申请办法攻略
  9. Bootstrap系列 -- 23. 图片
  10. 制衡技术,从Adblock所想到的