求1-100的阶乘输入一个数,如果为1-100,输出阶乘(超过8位用科学计数法四舍五入保留8位有效数字),否则退出程序,C语言该怎么计算?或者帮我改好下面的程序.下面的程序有误.改得完全正确的再加

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 04:21:00
求1-100的阶乘输入一个数,如果为1-100,输出阶乘(超过8位用科学计数法四舍五入保留8位有效数字),否则退出程序,C语言该怎么计算?或者帮我改好下面的程序.下面的程序有误.改得完全正确的再加

求1-100的阶乘输入一个数,如果为1-100,输出阶乘(超过8位用科学计数法四舍五入保留8位有效数字),否则退出程序,C语言该怎么计算?或者帮我改好下面的程序.下面的程序有误.改得完全正确的再加
求1-100的阶乘
输入一个数,如果为1-100,输出阶乘(超过8位用科学计数法四舍五入保留8位有效数字),否则退出程序,C语言该怎么计算?
或者帮我改好下面的程序.下面的程序有误.改得完全正确的再加100分
#include
#define LD long double
#define ULL unsigned long long
LD f(int n){
return (n==1 (LD)1 :((LD)n *f(n-1)));
}
int main()
{
int flag=0,i=0,n=0;
LD y;
char str[20];
while(scanf("%d",&n)==1 && n0 ){
y=f(n);
if(y < 1.0e8 )
printf( "%d!= %d\n",n,(ULL)y );
else
{
sprintf(str,"%1.8e",y);
if( str[9] > '4')
{
str[8]++;
}
for(i=9;str[i];i++)
str[i] = str[i+1];
printf( "%d!= %s\n",n,str);
}
}
return 0;
}
上面的结果计算一百的阶乘是对的,输出格式也对

求1-100的阶乘输入一个数,如果为1-100,输出阶乘(超过8位用科学计数法四舍五入保留8位有效数字),否则退出程序,C语言该怎么计算?或者帮我改好下面的程序.下面的程序有误.改得完全正确的再加
代码在四舍五入,遇到进位处为9时处理有误,比如16.
#include<stdio.h>
#define LD long double
#define ULL unsigned long long
LD f(int n){
return (n==1 (LD)1 :((LD)n *f(n-1)));
}
int main()
{
int flag=0,i=0,n=0;
LD y;
char str[20];
while(scanf("%d",&n)==1 && n<=100 && n>0 ){
y=f(n);
if(y < 1.0e8 )/*不超过8位,整形输出*/
printf( "%d!= %d\n",n,(ULL)y );
else
{
sprintf(str,"%1.8e",y);
if( str[9] > '4')/*超过4,进一位*/
{
if(str[8]<'9')
str[8]++;
else
{ i=8; while(str[i]=='9') str[i--]='0';str[i]++; }/*为9时不能直接+1,改为0后,进位*/
/*当所有位都为9时,需要进位并增加e后面的级数,还需要特殊处理,但是这种情况在1-100不会出现*/
}
for(i=9;str[i];i++)
str[i] = str[i+1];
printf( "%d!= %s\n",n,str);
}
}
return 0;
}


求1-100的阶乘输入一个数,如果为1-100,输出阶乘(超过8位用科学计数法四舍五入保留8位有效数字),否则退出程序,C语言该怎么计算?或者帮我改好下面的程序.下面的程序有误.改得完全正确的再加 写Java程序,输入一个非负的整数,并计算 为用户的整数的阶乘一个数n的阶乘被定义为1,如果n= 0,或为n×(n-1个)×(n-2个)×...×3×2×1,如果n> 0.您需要设计命名方法“阶乘”,以完成该程序.该方 输入一个正整数,输出该数的阶乘.求整数n的阶乘公式为:=1*2*…*n.(n!表示n的阶乘) matlab怎么用for语句求阶乘要求输入一个数,输出结果,且要判断该数的合法性 求N的阶乘变量条件:N为正整数,且N≤1000.运行时限:1秒/测试数据.输入格式:仅一个数,N.输出格式:仅一个数,N!的结果.可执行文件:program1.exe样例一:Input.txt4Output.txt24样例二:Input.txt15Output.txt1307674368 c语言中,输入一个整数,输出1!,,,,…n!求编程阶乘依次输出1~n的每个阶乘 求vb题代码:求任意个数的阶乘累计和.s=1!+2!+3!+...+n!,n由用户输入. java 数 n的阶乘, 阶乘, 公式 为 n!=n*(n-1)(n-2)…*2 * 1 .求 数字 6的阶乘 的阶乘 .java编程 C++求一个数的阶乘的位数 怎么编写求一个数的阶乘的程序 C语言求阶乘给一个整数,请输出该数字阶乘的后缀0的个数,例如:数字7,它的阶乘为5040,后面有一个0,则输出1;还有数字10,它的阶乘为3628800,后面有两个0,则输出2. 某人拟得1,2.几这几个数数输入电求平均数.当他输入完毕时,电脑显示只输入了(n-1)个数,平均数为35又7分之5.问末输入的一个数是多少 某人拟得1,2.几这几个数数输入电求平均数.当他输入完毕时,电脑显示只输入了(n-1)个数,平均数为35又7分之5.问末输入的一个数是多少 编写一个fac函数求一个数n的阶乘.其函数原型为long fac(int n),然后调用该函数求1!+2!+3!+4!+5!+6!.请用C语言编写 小明拟将1,2,…,n这n个数输入电脑,求平均数.当他认为输入完毕时,电脑显示只输入了(n-1)个数,平均数为30.75,假设这(n-1)个数输入无误,则漏输入的一个数为 1的阶乘+2的阶乘+3的阶乘+4的阶乘……+100的阶乘用计算.pascal用高精度快的话有悬赏 为什么0的阶乘为1? 求1-5的阶乘和 C