zoukankan      html  css  js  c++  java
  • csu 1031 Parsing Real Numbers

    先标记,然后分情况判断,最后一定要多做测试。略显麻烦。

    /* 1031: Parsing Real Numbers */
    # include <stdio.h>
    # include <ctype.h>
    # include <string.h>

    # define BITSET(i) ((sign)|=(char)(0x1<<(i)))
    # define GETBIT(i) ((sign)>>(i) & (0x1))

    char a[1000];
    char sign;

    /* sign: 0 - wrong?
    1 - coeff sign
    2 - integ
    3 - digit
    4 - floatdigit
    5 - e
    6 - e sign
    7 - e integ
    */

    int main()
    {
    int i, T, len, judge;

    //freopen("in.txt", "r", stdin);
    //freopen("out.txt", "w", stdout);

    scanf("%d", &T);
    while (T > 0)
    {
    scanf("%s", a);
    len = strlen(a);

    sign = 0;
    i = 0;
    if (a[i]=='+' || a[i]=='-') { BITSET(1); ++i;}
    while (isdigit(a[i])) { BITSET(2); ++i;}
    if (a[i]=='.') { BITSET(3); ++i;}
    while (isdigit(a[i])) { BITSET(4); ++i;}
    if (a[i]=='E' || a[i]=='e') { BITSET(5); ++i;}
    if (a[i]=='+' || a[i]=='-') { BITSET(6); ++i;}
    while (isdigit(a[i])) { BITSET(7); ++i;}

    if ((a[i] != '\0')
    || (GETBIT(3) && !GETBIT(2) && !GETBIT(4))
    || ((GETBIT(5)||GETBIT(6)) && !GETBIT(7))
    || (len && !GETBIT(2) && !GETBIT(4)))
    BITSET(0);

    if (GETBIT(0)) printf("NO\n");
    else printf("YES\n");
    --T;
    }

    return 0;
    }



  • 相关阅读:
    js返回到顶部
    css培训一
    css常用hack技巧
    css培训二
    css样式渲染规则
    html语义(一)
    css样式表管理
    html+css培训方案
    继承
    封装
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2366811.html
Copyright © 2011-2022 走看看