zoukankan      html  css  js  c++  java
  • UVa1586 分子量

    题目描述:根据分子式来计算其摩尔质量

    思路:

    字母后面的数字表示了它的系数,读入整个字符串,因此需要判断每个字符是字母还是数字。

    题意很明确,就是根据这个分子式来计算摩尔质量,需要注意的地方是:

    1.若一个字母后面跟着的是字母或者该字母后面没有更多的字符,那么其系数为1,直接加上就OK

    2. 如果字母后面是数字,那么就一直读取这个数字的各个位数,然后将这个字符表示的数转换为十进制的数,即为当前字母的系数,乘上单个分子质量后加在总的上就行。

    代码:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <ctype.h>
     4 float CharToWeight(char ch)
     5 {
     6     float Weight;
     7     switch(ch){
     8         case 'C': 
     9             Weight = 12.01;
    10             break;
    11         case 'N':
    12             Weight = 14.01;
    13             break;
    14         case 'O':
    15             Weight = 16.00;
    16             break;
    17         case 'H':
    18             Weight = 1.008;
    19             break;
    20     }
    21     return Weight;
    22 }
    23 
    24 int StringToNum(char s[])
    25 {
    26     int num = 0, xishu = 1;
    27     for(int i = strlen(s) - 1; i >= 0; --i){
    28         //printf("%c
    ", s[i]);
    29         num += (s[i]-'0') * xishu;
    30         xishu *= 10;
    31     }
    32     return num;
    33 }
    34 
    35 int main()
    36 {
    37     int n;
    38     char s[100];
    39     scanf("%d", &n);
    40     while(n > 0){
    41         scanf("%s", s);
    42         float tmpWeight = 0.0, Weight = 0.0;
    43         int xishu = 1, i = 1, j, k;
    44         char num[100];
    45         for(i = 0; i < strlen(s); ++i){
    46             if(i + 1 == strlen(s) || isalpha(s[i+1])){  //如果后面是字母或者到达最后 
    47                 Weight += CharToWeight(s[i]);
    48             }else{   //如果后面是数字 
    49                 for(k = 0, j = i+1; j < strlen(s) && isdigit(s[j]); ++j,++k){  //把连续的数字都找出来 
    50                     num[k] = s[j];
    51                 //    printf("%c
    ", num[k]);
    52                 }
    53                 num[k] = '';
    54                 xishu = StringToNum(num);    
    55                 Weight += CharToWeight(s[i]) * xishu;
    56                 i = j-1;
    57             }
    58         }
    59         printf("%.3f
    ", Weight);
    60         --n;
    61     }
    62 }
  • 相关阅读:
    日报10.11
    日报10.9
    日报10.8
    日报10.7
    换马甲啦
    CSP2019知识点整理
    字符logo存档
    QHDYZ模拟赛20191027 提前透题
    数竞大佬jhc的三角函数复习题
    IO流
  • 原文地址:https://www.cnblogs.com/patrolli/p/11170835.html
Copyright © 2011-2022 走看看