• UVa 1586 Molar mass


    1586 - Molar mass

    要解决的问题

    • 如何将字母与它代表的数字对应?

      只有4个字母,枚举,用if else。

      python的话可以用字典。c++应该没有字典。

    • 字符转换为数组

      单个数字字符转换为数字,直接-‘0’,ascii中数字是连续的。

    • 判断是数字还是字母

      只有4个字母,直接if。

    mycode

    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
    
    //判断是不是字母
    int isAlp(char ch) 
    {
        if (ch == 'C') return 1;
        if (ch == 'H') return 1;
        if (ch == 'O') return 1;
        if (ch == 'N') return 1;
        return 0;
    }
    
    //单个数字字符转换为数字
    int ch2num(char ch)
    {
        return ch - '0';
    }
    
    int main()
    {
        int T;
        scanf("%d", &T);
        for (int i = 0; i < T; i++)
        {
            char s[81];
            scanf("%s", s);
            int len = strlen(s);
            float mass = 0;
            for (int j = 0; j < len; j++)
            {
                if (s[j] == 'C')//逐个判断
                {
                    if (j + 2 < len && !isAlp(s[j + 1]) && !isAlp(s[j + 2]))//两位数
                    {
                        mass += 12.01 * (ch2num(s[j + 1]) * 10 + ch2num(s[j + 2]));
    
                    }
                    else if (j + 1 < len && !isAlp(s[j + 1]))//一位数
                        mass += 12.01 * ch2num(s[j + 1]);
                    else
                        mass += 12.01;
                }
    
                if (s[j] == 'H')
                {
                    if (j + 2 < len && !isAlp(s[j + 1]) && !isAlp(s[j + 2]))
                        mass += 1.008 * (ch2num(s[j + 1]) * 10 + ch2num(s[j + 2]));
                    else if (j + 1 < len && !isAlp(s[j + 1]))
                        mass += 1.008 * ch2num(s[j + 1]);
                    else
                        mass += 1.008;
                }
    
                if (s[j] == 'O')
                {
                    if (j + 2 < len && !isAlp(s[j + 1]) && !isAlp(s[j + 2]))
                        mass += 16.00 * (ch2num(s[j + 1]) * 10 + ch2num(s[j + 2]));
                    else if (j + 1 < len && !isAlp(s[j + 1]))
                        mass += 16.00 * ch2num(s[j + 1]);
                    else
                        mass += 16.00;
                }
    
                if (s[j] == 'N')
                {
                    if (j + 2 < len && !isAlp(s[j + 1]) && !isAlp(s[j + 2]))
                        mass += 14.01 * (ch2num(s[j + 1]) * 10 + ch2num(s[j + 2]));
                    else if (j + 1 < len && !isAlp(s[j + 1]))
                        mass += 14.01 * ch2num(s[j + 1]);
                    else
                        mass += 14.01;
                }
    
            }
            printf("%.3f
    ", mass);
        }
        return 0;
    }
  • 相关阅读:
    JDBC
    JDBC连接MYSQL
    Servlet学习(1)
    Apache http server和tomcat的区别
    log4j(转)
    《打造Facebook》
    深入浅出Java三大框架SSH与MVC的设计模式
    Python 爬虫监控女神的QQ空间新的说说,实现秒赞,并发送说说内容到你的邮箱
    Python 爬虫监控女神的QQ空间新的说说,实现邮箱发送
    linux 进程消耗查看
  • 原文地址:https://www.cnblogs.com/shanchuan/p/8150296.html
Copyright © 2020-2023  润新知