练习4-2 对atof函数进行扩充,使它可以处理形如123.456e-6的科学表示法,其中,浮点数后面可能会紧跟一个e或E以及一个指数(可能有正负号)
来源:互联网 发布:一句话木马 php 编辑:程序博客网 时间:2024/06/06 02:19
/*时间:2017/8/10地点:工程北629功能:科学表示法的显示思想:函数的设计{getline()、atof()、main()}*/#include <stdio.h>#include <ctype.h>#define MAXLINE 1000int getline(char s[],int lim); //函数原型double atof(char s[]);/*主函数*/int main(void){ double val; char line[MAXLINE]; while(getline(line,MAXLINE) > 0) //科学记数法显示 val = atof(line); printf("%f\n",val);return 0;}/* getline函数版本2 */int getline(char s[], int lim){ int c,i; i = 0; while(--lim > 0 && (c = getchar()) !=EOF && c!='\n') s[i++] = c; if(c == '\n') s[i++] = c; s[i] = '\0'; return i;}/* getline函数版本1 *//*int getline(char s[], int lim) {int c, i;for(i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i)s[i] = c;if(c == '\n'){s[i] = c;++i;}s[i] = '\0'; return i; }*//* 扩展的atof函数 */double atof(char s[]){ double val, power; int i, sign, n; n = 0; for(i = 0; isspace(s[i]); ++i) ; sign=(s[i] == '-') ? -1:1; if(s[i] == '+' || s[i] == '-') ++i; for(val = 0.0; isdigit(s[i]); i++) val = 10.0*val + (s[i] - '0'); if(s[i] == '.') i++; for(power = 1.0; isdigit(s[i]); i++){ val = 10.0*val+(s[i]-'0'); power *= 10.0; } val = sign * val/power; if(s[i] == 'e' || s[i] == 'E') //扩展atof部分,类似于atoi函数{ i++; sign=(s[i] == '-') ? -1:1; if(s[i] == '+' || s[i] == '-') i++; for( ; isdigit(s[i]); ++i){ n = 10*n + (s[i]-'0'); } for( ; n>0; --n) //对上面的val进行提高n个数量级,若n=3,则*1000;若n=-3,则*0.001{ if(sign > 0) val = val*10.0; else val = val*0.1; } } return val;}/*在Vc++6.0中的输出结果是:----------------------------1289987e4^Z12899870000.00000041.7888858e-4^Z0.004179-1234.589688e5^Z-123458968.800000----------------------------总结:函数实现方法很多,遇到不懂的函数先尝试试数,然后反复思考,即可。*/
阅读全文
0 0
- 练习4-2 对atof函数进行扩充,使它可以处理形如123.456e-6的科学表示法,其中,浮点数后面可能会紧跟一个e或E以及一个指数(可能有正负号)
- 练习4-2 对atof函数进行扩充,使它可以处理形如123.45e-6的科学表示法,其中浮点数后面可能会紧跟一个e或E以及一个指数
- C r e a t e T h r e a d的最后一个参数是p d w T h r e a d I D,可以(并且通常是这样做的)为该参 数传递N U L L。它告诉函数,你对线程的I D不感兴趣
- HDU 4465 Candy【指数表示法】E
- atof函数,可以处理科学计数法
- e.hasMorePages有一个用法
- e的科学计数法
- 《LeetBook》leetcode题解(8): String to Integer (atoi) [E]——正负号处理
- 科学计数法 E
- 从键盘上任意输入一个3位整数,编译计算并输出它的逆序数(忽略整数前的正负号)
- Codeforces Round #348 E. Little Artem and Time Machine(给你一个n,有三种选择,1表示增加一个值,2表示删除这个数的一个值,3表示查询)
- 程序员面试金典: 9.5位操作5.2对一个浮点数,打印它的二进制表示
- acm-求sinh(x)的值,sinh(x) = (ex-e-x)/2 ,其中用一个函数求e^x 。
- 【codeforces 27 E】【反素数】【给一个数n,求一个最小的正整数,使得它的因子个数为n】
- 类 ArrayBlockingQueue<E>(一个由数组支持的有界阻塞队列。)
- 关于linux设备驱动模型,今天做一个简单的理解总结,可能有错误,后面可能会更正
- e
- E
- javascript中数据类型的隐式转换
- 高空布控系统_在消防实战中的应用
- IOS 强引用的问题
- 谈对BFC布局的理解
- mysql的存储过程
- 练习4-2 对atof函数进行扩充,使它可以处理形如123.456e-6的科学表示法,其中,浮点数后面可能会紧跟一个e或E以及一个指数(可能有正负号)
- 最全的常用正则表达式大全
- 漫谈数据仓库之维度建模
- R随机抽样
- 回眸Spring
- Android Studio导入,打开项目慢的问题解决方法集合
- Java初级面试题
- url编码解码
- leetcode 593. Valid Square