当前位置:编程学习 > C/C++ >>

一个C语言问题

原题: 对于非常大或者非常小的数据,我们通常用科学记数法来表示。例如在科技文献和电脑中经常遇到的 2.3×106 (计算机中的科学记数法表示为:2.3E6),或者 9.18×10-5 (科学记树法表示:9.18E-5)这种类型的数据。 输入: 用科学记数法表示的数据。即为符合C语言表示的科学记数法表示。 输出: 该数据的双精度表示 说明: 输入数据的精度不高于小数点后50位。 输入数据时,在实数和幂之间有空格进行分隔,空格个数不定。 结果保留到小数点后8位,如不足8位用0补足,超过8位则截断,不进行四舍五入的处理。 我的代码: #include<stdio.h> #include<math.h> int main() { register double a,b,d; char c; scanf("%lf %c %lf",&a,&c,&b); if(c=='e'||c=='E')d=1.0*a*pow(10,b); printf("%.8lf\n",d); return 0; } 这个程序基本正确,但是测试用例有一个时钟通过不了,例子还是保密的。 请高手告诉我这个程序哪里存在问题。 不胜感激
追问:输入肯定是e或者E#include<stdio.h>
#include<math.h>
int main()
{
	register long double a,b,d;
	char c;
	scanf("%llf %c %llf",&a,&c,&b);
	 if(c=='e'||c=='E') d=1.0*a*pow(10,b);
	 d=((long)(d*100000000)/100000000.0);
	 printf("%.8llf\n",d);
	return 0;
}

我改成这样 按理说应该正确啊可是结果不对
答案:请大家看看一下问题什么地方出错了是要实现五个国家名按大小顺序来排序 #.你的头文件呢? #include
其他:如果中间输入的字符不是E或e,程序的输出就是错误的。 ” 输入数据时,在实数和幂之间有空格进行分隔,空格个数不定“如果在两个数之间输入10个空格。。再输入E。。接着输入幂。。
那你的C就不是E了 首先register你就不要用了,那只是个摆设,不过也不影响。
下面说程序,题中要求小数点后超过8位截断,而你用printf("%.8lf\n",d);
这个不是截断,它会四舍五入的,不信你用3.1234567888  e   1这组数据试试,
结果是31.123456789,   其中8进上去了。然后就简单了,你自己想吧。

上一个:C语言project
下一个:谭浩强c语言程序设计需要从第一版看么?我是初学者!一点点都不懂!只会计算机的简单操作!

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,