用矩形法求定积分。
#include<stdio.h>
#include<math.h>
double f1(double x)
{
return sin(x);
}
double f2(double x)
{
return cos(x);
}
double f3(double x)
{
return pow(2.7,x);
}
double integral(double a, double b, double(*pfn)(double))
{
double y;
double ret = 0;
for (double x = a; x < b; x += 1e-5)
{
y = pfn(x);
ret += y * 1e-3;
}
return ret;
}
int main()
{
double(*fn[])(double) = { f1,f2,f3 };
int index;
scanf("%d", &index);
double ret = integral(0, 1, fn[index]);
printf("%.2f\n", ret);
}
一般的在数学中,我们求积分的方法时,分割:将所属区域分割若干个小块
求和:将若干个小块都加起来
取极限
可以按照这样的方法在程序中表示出来。
有n个人围一圈报数。报3则退出。直到最后只剩一个
//#include<stdio.h>
//const int num = 10;
//void output(int *p)
//{
// int i;
// for (i = 0; i < num&&p[i] == 0; i++);
// printf("剩下的人是:%d\n", p[i]);
//}
//int find(int *p,int pos, int n)
//{
// int count = 0;
// while (1)
// {
// if (p[pos] != 0)
//
// {
// count++;
// if (count == n)
// break;
// }
// pos++;
// if (pos >=num)
// pos = 0;
// }
// return pos;
//}
//int main()
//{
// int a[num] = { 1,2,3,4,5,6,7,8,9,10 };
// int pos = 0;
//
// for (int i = 0; i < num - 1; i++)
// {
// //从pos开始找第三个非0数的下标,存在pos中
// pos = find(a, pos, 3);
// a[pos] = 0;
// }
// output(a);
// return 0;
//}
//从a数组中找到非0的数并输出