函数解决混合运算问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/flf1234567898/article/details/101547832

今天看到了个实验室面试题
分享给大家看一下
要求用C语言实现(1+1!)/2+(2+2!)/3+(3+3!)/4…(n+n!)/(n+1),要求保留2位小数;
其实要解决的困难就是阶乘在程序中怎么去算,还有就是需要考虑数据类型,因为除法的结果是会产生数据类型的更改,所以在定义变量的时候注意,不要全部定义成为整型。
这时候难点不在于怎么把这个表达式写出来,真正的难点在于怎么把数据正确赋值给主函数
很多人写函数上手int +类型,但是在这写无论你逻辑再正确都调试不对,因为你函数返回给主函数的值是double类型的,所以会使数据不准确。因此要定义成double类型的。
其次就是阶乘的写法了
阶乘要用循环来完成,其次要保留每一次累乘的值,因此只能用一个变量接收并且加上之前的值。
下面是源代码

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<Windows.h>

double Sum(int x)
{
	double answer = 0;
	int i;
	int sum = 1;
	for (i = 1; i < x+1; i++)
	{
		sum = sum * i;
		answer =(double)(i + sum) / (i + 1)+answer;
	}
	return answer;
}

int main()
{

	int num;
	double fact;
	printf("请输入一个数");
	scanf("%d", &num);
	fact = Sum(num);
	printf("%.2lf", fact);
	system("pause");
	return 0;
}

写的不容易,点个赞呗。

猜你喜欢

转载自blog.csdn.net/flf1234567898/article/details/101547832