UVA - 1586 Molar Mass
2016-08-08 23:05
162 查看
题目大意:计算相对分子质量。
解题思路:读入分子式存入数组,遍历数组,当一个数组的一个元素是字母时判断之后的两个元素是 ① 数字 ② 字母 ③ \0 并作出相应的加法处理。
写到这题的时候心里还是感慨颇多呢。高考完一门心思的想学化学,阴差阳错读了软件。才过去一年,好多基础知识都忘了。嗯,软件的一大作用就是辅助传统工业优化,也许以后还有机会和真爱在一起的吧~
解题思路:读入分子式存入数组,遍历数组,当一个数组的一个元素是字母时判断之后的两个元素是 ① 数字 ② 字母 ③ \0 并作出相应的加法处理。
#include<stdio.h> #include<string.h> int main() { int t , i ; double qua; char s[85]; scanf("%d",&t); while( t--) { scanf("%s",s); qua = 0.0; for ( i = 0 ; i < strlen(s) ; i++) { if( s[i] > 64 ){ if(s[i+1] > 64 || s[i+1] == '\0'){ if( s[i] =='C' ) qua += 12.01; else if( s[i] == 'H') qua += 1.008; else if( s[i] == 'O') qua += 16.00; else if( s[i] == 'N') qua += 14.01; } else if( s[i+1] < 65 && s[i+2] < 65 && s[i+2] != '\0') { if( s[i] =='C' ) qua +=(( int(s[i+1]) - 48 )*10 + (int(s[i+2]) - 48) )*12.01; else if( s[i] == 'H') qua += ( (int(s[i+1]) - 48)*10 + (int(s[i+2])-48) )*1.008; else if( s[i] == 'O') qua += ( (int(s[i+1]) - 48)*10 + (int(s[i+2])-48) )*16.00; else if( s[i] == 'N') qua += ( (int(s[i+1]) - 48)*10 + (int(s[i+2])-48) )*14.01; i += 2; } else if( s[i+1] < 65 && s[i+1] != '\0') { if( s[i] =='C' ) {qua += (int(s[i+1]) - 48) * 12.01;} else if( s[i] == 'H') qua += (int(s[i+1]) - 48) * 1.008; else if( s[i] == 'O') qua += (int(s[i+1]) - 48) * 16.00; else if( s[i] == 'N') qua += (int(s[i+1]) - 48) * 14.01; i ++; } } } printf("%.3f\n",qua);// cout << qua << endl; } }
写到这题的时候心里还是感慨颇多呢。高考完一门心思的想学化学,阴差阳错读了软件。才过去一年,好多基础知识都忘了。嗯,软件的一大作用就是辅助传统工业优化,也许以后还有机会和真爱在一起的吧~
相关文章推荐
- 简单的四则运算
- 数的奇偶性
- ACMer博客瀑布流分析
- ACM程序设计大赛题目分类
- 2015年acm国内排名
- 计算字符串最后一个单词长度
- ACM网址
- 1272 小希的迷宫
- 1272 小希的迷宫
- hdu 1250 大数相加并用数组储存
- 矩阵的乘法操作
- 蚂蚁爬行问题
- 蚂蚁爬行问题
- 求两个数的最大公约数【ACM基础题】
- 打印出二进制中所有1的位置
- 杭电题目---一只小蜜蜂
- HDOJ 1002 A + B Problem II (Big Numbers Addition)
- 初学ACM - 半数集(Half Set)问题 NOJ 1010 / FOJ 1207
- 初学ACM - 组合数学基础题目PKU 1833
- POJ ACM 1002