• c programming language ___ 5_2.c


     1 #include <stdio.h>
     2 #include <ctype.h>
     3 #define  BUG printf("here!bug!
    ");
     4 
     5 int getfloat(float *pn){
     6     int c;
     7     int t;
     8     int intbeforepoint=0;
     9     int intafterpoint=0;
    10     int intafterpoint_lenth=0;
    11     int inte;
    12     int sign,esign;
    13     int ppoint;  // 1 means there have point ,otherwise no
    14     float res=0;
    15 
    16     while( isspace(c=getch()) )
    17         ;
    18     if(!isdigit(c)&&c!=EOF&&c!='+'&&c!='-'){
    19         ungetch();
    20         return 0;
    21     }
    22     sign=(c=='-')?-1:1;
    23     if(c=='+'||c=='-')
    24         c=getch();
    25     for(intbeforepoint=0;isdigit(c);c=getch())
    26         intbeforepoint=10*intbeforepoint+(c-'0');
    27     ppoint=0;
    28     if(c=='.'){
    29         ppoint=1;
    30         c=getch();
    31         for(intafterpoint=0;isdigit(c);c=getch()){
    32             intafterpoint=10*intafterpoint+(c-'0');
    33             intafterpoint_lenth++;
    34         }
    35         t=intafterpoint;
    36         while(t%10==0){
    37             intafterpoint_lenth--;
    38             t=t/10;
    39         }
    40     }
    41     if(c=='e'||c=='E'){
    42         c=getch();
    43         esign=1;
    44         if(c=='+'||c=='-'){
    45             esign= (c=='+')?1:-1;
    46             c=getch();
    47         }
    48         while( c=='0'){
    49             c=getch();
    50         }
    51         for(inte=0;isdigit(c);c=getch())
    52             inte=10*inte+(c-'0');
    53     }
    54     BUG;
    55     if(c!=EOF)
    56         ungetch(c);
    57     res=1.0*intbeforepoint;
    58     t=intafterpoint_lenth;
    59     while(t--)
    60         res*=10;
    61     res+=intafterpoint;
    62     t=intafterpoint_lenth;
    63     while(t--)
    64         res/=10;
    65     if(esign==-1){
    66         while(inte--)
    67             res/=10;
    68     }else if(esign==1){
    69         while(inte--)
    70             res*=10;
    71     }
    72     res*=sign;
    73     *pn=res;
    74     printf("intbeforepoint=%d
    ",intbeforepoint);
    75     printf("intafterpoint=%d
    ",intafterpoint);
    76     printf("inte=%d
    ",inte);
    77     printf("length=%d
    ",intafterpoint_lenth);
    78     return c;
    79 }
    80 int main(){
    81     float num[10];
    82     int i;
    83     for(i=0;i<10;++i){
    84         getfloat(&num[i]);
    85         printf("%lf
    ",num[i]);
    86     }
    87     return 0;
    88 }
    5_2.c
  • 相关阅读:
    Java设计模式——单例模式
    Java设计模式——工厂模式
    多线程
    Collection集合
    内部类
    多态
    接口
    面向对象(2)
    数组
    面向对象(1)
  • 原文地址:https://www.cnblogs.com/symons1992/p/3732271.html
Copyright © 2020-2023  润新知