一.题目:求20!的结果
描述:将数学概念的迭代关系式i!=(i-1)!*i转换为计算机循环意义上的迭代关系式——用新的变量存储新值(乘积),并不断由旧值递推出变量的新值。求n!的函数fanc(n)的处理对象时一个int型数据,函数的返回值应该用浮点类型(double或float)表示,因此函数的首部可以确定为double fanc(int n)。
输入:输入的是n的大小,直接通过main函数调用fanc(n)函数得出结果
输出:输出n!=f
#include "stdio.h"
//求n!的函数
double fac(int n)
{
int i;
double f=1;
if(n>0){
for(i=1;i<=n;i++)
f=f*i;
}
else if(n==0)f=1;//根据阶乘的定义 0!=1
else if(n<0)f=-1;//如果n为负数,则返回-1,表示错误
return f;
}
int main()
{
int n;
double f;//用来存放最后的结果
printf("Input n:");
scanf("%d",&n);
f=fac(n);
//(int)f;
if(f==-1)
{
printf("参数输入错误!!\n");
}
else
{
printf("%d!的结果是=%e\n",n,f);
}
return 0;
}
编程技巧与注意事项:
1.编程注意考虑函数的健壮性,要尽量优化函数,是一个独立函数具有良好的封装性和相对完整的功能。如上面再fac(n)内增加对0!和对错误参数的处理。
2.在主函数和调用函数中同时用同一个符号定义和使用变量是合法的。