zoukankan      html  css  js  c++  java
  • 1044. 火星数字(20)

    原题: https://www.patest.cn/contests/pat-b-practise/1044

    思路: 首先解决读取一行数据的问题, 我在这里使用的是%[^ ]. 再配合
    sscanf把字符串或者数字提取出来.

    接下来就要对拿到的数据进行正确分类, 我的分类是

    1. 数字0
    2. 数字小于13
    3. 数字大于13并且是13的整数倍
    4. 数字大于13并且不是13的整数倍
    5. 字符串tret
    6. 字符串是2位数
    7. 字符串是1位数

    实现:

    #include <stdio.h>
    #include <string.h>
    
    #define LEN 20
    char unit[LEN][LEN] = {
        "tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"
    };
    char ten[LEN][LEN] = {
        "tret", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou",
    };
    
    int getUnit (char str[]);
    int getTen (char str[]);
    
    int main (void) {
        int dec = 13;   // 进制
        int n;
        char tmp[LEN];  // 存储一行字符串
        int num;        // 保存数字
        char str1[LEN]; // 火星字符串1
        char str2[LEN]; // 火星字符串2
        int i;
    
        scanf("%d", &n);
        getchar(); // 挡掉Enter
        for (i = 0; i < n; i++) {
        	num = 0;
            scanf("%[^
    ]", tmp);
            getchar(); // 挡掉Enter
            if (tmp[0] >= '0' && tmp[0] <= '9') {
                sscanf(tmp, "%d", &num); // 从字符串里提取数字
                if (num == 0) {
                    printf("tret
    ");
                } else if (num < dec) {
    				printf("%s
    ", unit[num]);			
    			} else if (num / dec != 0 && num % dec == 0) {
                    printf("%s
    ", ten[num / dec]);
                } else {
                    printf("%s %s
    ", ten[num / dec], unit[num % dec]);
                }
            } else if (strcmp(tmp, "tret") == 0) {
                printf("0
    ");
            } else if (strlen(tmp) > 6) {
                sscanf(tmp, "%s %s", str1, str2);
                num += getTen(str1) * dec;
                num += getUnit(str2);
                printf("%d
    ", num);
            } else {
                if (getTen(tmp) != -1) {
                    num = getTen(tmp) * 13;
                    printf("%d
    ", num);
                } else {
                    num = getUnit(tmp);
                    printf("%d
    ", num);
                }
            }
        }
    
    	return 0;
    }
    
    int getTen (char str[]) {
        int i;
        for (i = 0; i < 13; i++) {
            if (strcmp(str, ten[i]) == 0) return i;
        }
        return -1;
    }
    
    int getUnit (char str[]) {
        int i;
        for (i = 0; i < 13; i++) {
            if (strcmp(str, unit[i]) == 0) return i;
        }
        return -1;
    }
    
    
  • 相关阅读:
    Html: Iframe用法总结参考
    Fire fox最佳实践
    HTML字符实体(Character Entities),转义字符串(Escape Sequence)
    asp.net mvc session, filter 应用研究
    jQuery Gallery Plugin
    Jquery 最佳实践
    JS对象转Json格式,Json格式转Object
    Web前端开发(JQuery)
    移动终端 WAP 应用探索
    discuzcode函数
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7987986.html
Copyright © 2011-2022 走看看