c programming language ___ 5_2.c
2014-05-16 15:22
190 查看
#include <stdio.h> #include <ctype.h> #define BUG printf("here!bug!\n"); int getfloat(float *pn){ int c; int t; int intbeforepoint=0; int intafterpoint=0; int intafterpoint_lenth=0; int inte; int sign,esign; int ppoint; // 1 means there have point ,otherwise no float res=0; while( isspace(c=getch()) ) ; if(!isdigit(c)&&c!=EOF&&c!='+'&&c!='-'){ ungetch(); return 0; } sign=(c=='-')?-1:1; if(c=='+'||c=='-') c=getch(); for(intbeforepoint=0;isdigit(c);c=getch()) intbeforepoint=10*intbeforepoint+(c-'0'); ppoint=0; if(c=='.'){ ppoint=1; c=getch(); for(intafterpoint=0;isdigit(c);c=getch()){ intafterpoint=10*intafterpoint+(c-'0'); intafterpoint_lenth++; } t=intafterpoint; while(t%10==0){ intafterpoint_lenth--; t=t/10; } } if(c=='e'||c=='E'){ c=getch(); esign=1; if(c=='+'||c=='-'){ esign= (c=='+')?1:-1; c=getch(); } while( c=='0'){ c=getch(); } for(inte=0;isdigit(c);c=getch()) inte=10*inte+(c-'0'); } BUG; if(c!=EOF) ungetch(c); res=1.0*intbeforepoint; t=intafterpoint_lenth; while(t--) res*=10; res+=intafterpoint; t=intafterpoint_lenth; while(t--) res/=10; if(esign==-1){ while(inte--) res/=10; }else if(esign==1){ while(inte--) res*=10; } res*=sign; *pn=res; printf("intbeforepoint=%d\n",intbeforepoint); printf("intafterpoint=%d\n",intafterpoint); printf("inte=%d\n",inte); printf("length=%d\n",intafterpoint_lenth); return c; } int main(){ float num[10]; int i; for(i=0;i<10;++i){ getfloat(&num[i]); printf("%lf\n",num[i]); } return 0; }
5_2.c
相关文章推荐
- 再读《The C Programming language》 - 第一章 1.4 字符常量
- 《C++ Programming Language》 笔记 (1)
- Language Oriented Programming:下一代编程样式 Part I (翻译)
- JavaScript: The World's Most Misunderstood Programming Language Douglas Crockford(认为看不懂的请绕开)
- The C# Programming Language Notes
- ARM Assembly Language Programming (part 2)
- 读《The C Programming Language》(6)
- 读《The C Programming Language》(8)
- 关于编写一个函数invert(x,p,n),返回x循环右移n位后得到的值,the c programming language 第二章练习2-8
- The C++ Programming Language 读书笔记1
- The C Programming Language 练习题3-2
- 《The AWK Programming Language》前言
- 基本语言细节--《The C++ Programming Language 》--(4)剑指新类型
- Atitit 编程范式之道 attilax著 艾龙 著 1. 编程范式与编程语言的关系是什么? 1 2. LOP 面向语言编程(LOP, Language Oriented Programming
- 下载The Swift Programming Language.mobi版
- The Swift Programming Language-官方教程精译Swift(1)小试牛刀
- [精校版]The Swift Programming Language
- The Swift Programming Language-官方教程精译Swift(8)闭包 -- Closures
- The C++ Programming Language 学习笔记 第四章 类型和声明
- The C++ Programming Language 学习笔记 第5章 指针、数组和结构