c语言中 编程序 1!+2!+3!+.....+20! 输出时答案说是 %22.15e 为什么啊,那个22和15各代表什么意思呢?

为什么不能用%d呢?
谢谢!

能用,只是%d会出现溢满情况,即所求数值大于d的范围。%22.15e 表示用十进制输出,其中22表示输出的实数位数,15表示位数部分小数位数。

int main()

{

float n,j=1,tn=1,s=0,i=1;

for(j=1;j<=20;s=s+tn)

{

for(i=1;i<=1;tn=tn*i) //这句i<=1,肯定是不对的。

i++;

j++;

}

printf("total is:%22.15e\n",s);

getch();

}

扩展资料:

C程序是由一组变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。

C程序中函数的数目实际上是不限的,如果说有什么限制的话,那就是,一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名的函数,这个函数称为主函数,整个程序从这个主函数开始执行。

参考资料来源:百度百科-c语言

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-05
能用,只是%d会出现溢满情况,即所求数值大于d的范围。%22.15e 表示用十进制输出,其中22表示输出的实数位数,15表示位数部分小数位数本回答被提问者采纳
第2个回答  2011-05-28
%22.15e用10的n次方输出,%d的范围太小,只能输出3万左右,而20!这个数太大,超过20位数。
第3个回答  2011-05-28
%d的范围是-32768到32767之间,你的上面的式子超出了这个范围,系统就会给你随机输出一个答案
可以用长整型 long int
第4个回答  2011-05-28
输出占22列,但只取字符串中左端15个字符,

...输出时答案说是 %22.15e 为什么啊,那个22和15各代表什么意思呢...
for(i=1;i<=1;tn=tn*i) \/\/这句i<=1,肯定是不对的。i++;j++;} printf("total is:%22.15e\\n",s);getch();}

求1!+2!+3!+4!+5!...18!+19!+20!的C语言代码,我感觉我是对的呀,求问...
首先,用双精度变量保存总和,20的阶乘本身就是一个19位数,但是双精度变量,只能有17位有效数字,所以说最后的数字是被丢失了的,只能保证小数点位置正确(后面丢失的数据位补0)。其次,程序中的双重循环,其中内循环的循环变量和外循环的循环变量,用的是同一个变量a,这在内循环循环时就把外循环的...

相似回答