C语言编程题:阶乘计算

一.题目:求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.在主函数和调用函数中同时用同一个符号定义和使用变量是合法的。

你可能感兴趣的:(C语言学习)