分子量 (Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)
2024-08-29 13:50:48
解题思路:
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;
}
最新文章
- JAVA设计模式之3-抽象工厂模式
- Caffe源码解析4: Data_layer
- Mysql更换MyISAM存储引擎为Innodb的操作记录
- Scalaz(31)- Free :自由数据结构-算式和算法的关注分离
- Android笔记:获取屏幕信息
- Redis常用命令速查 02_转
- ABAP屏幕基础
- ecshop订单中配送方式报错
- Android类库常用类库一览
- CDN技术详解及实现原理
- 微信小程序,前端大梦想(三)
- 阿里聚安全&#183;安全周刊】一种秘密窃取数据的新型 Android 木马|iOS 11相机惊现BUG
- WebApi一个控制器中定义多个Get方法。
- 《Java》第五周学习总结20175301
- 浏览器各个版本和系统(chrome/safari/edge/qq/360)
- linux中date命令显示
- Python3+smtplib+poplib+imaplib实现发送和收取邮件(以qq邮箱为例)
- Ambertools15安装(详细)
- 同步、异步、回调执行顺序之经典闭包setTimeout分析
- DOS中命令的格式
热门文章
- Use CLR Profiler
- salt-ssh
- slatsatck file模块2种写法及系统初始化
- python 反模式
- python数字图像处理(10):图像简单滤波
- [CareerCup] 6.4 Blue Eyes People on Island 岛上的蓝眼人
- 解决BeanNotOfRequiredTypeException: Bean named &#39;XXX&#39; must be of type XXX, but was actually of type XXX问题
- 微信小程序开发公测,小程序账号申请办法攻略
- Bootstrap系列 -- 23. 图片
- 制衡技术,从Adblock所想到的