帮忙实现C程序中自定义函数里的选择功能。

#include<stdio.h>
void main()
{double f(double x);/*f(x)为函数举例,即被积函数*/
int i,n,j;
double a,b,h,T,Tn;/*a为积分下限,b为积分上限,h为步长*/
printf("选择函数类型:\n\n");
printf("1.y=x*x\n\n");
printf("2.y=x/(x*x+1)\n\n");
printf("3.y=(x+1)/(x+3)\n\n");
scanf("%d",&j);
switch(j)
{case 1:
case 2:
case 3:
{printf("\n积分下限 a:\n");
scanf("%lf",&a);
printf("\n积分上限 b:\n");
scanf("%lf",&b);
printf("\n区间等分个数 n (尽可能大 ):\n");
scanf("%d",&n);
h=(b-a)/n;/*步长的计算*/
T=(f(a)+f(b))/2;/*中间变量T赋初值*/
for(i=1;i<n;i++)
T=T+f(a+i*h);/*用循环控制来完成复合梯形公式的运算*/
Tn=T*h;
printf("\n函数 f(x) 的积分为 Tn=%f\n\n",Tn);
};break;
default:printf("输入错误,找不到该类型!!!\n\n");}
}

double f(double x)
{ double y;
switch(j)
{
case 1:y=x*x;break;
case 3:y=x/(x*x+1);break;
case 2:y=(x+1)/(x+3);break;
}
return (y);
}

函数里加个选择参数就可以了
#include<stdio.h>
void main()
{
double f(double x,int j);/*f(x)为函数举例,即被积函数*/
int i,n,j;
double a,b,h,T,Tn;/*a为积分下限,b为积分上限,h为步长*/
printf("选择函数类型:\n\n");
printf("1.y=x*x\n\n");
printf("2.y=x/(x*x+1)\n\n");
printf("3.y=(x+1)/(x+3)\n\n");
scanf("%d",&j);

if(j<4)
{
printf("\n积分下限 a:\n");
scanf("%lf",&a);
printf("\n积分上限 b:\n");
scanf("%lf",&b);
printf("\n区间等分个数 n (尽可能大 ):\n");
scanf("%d",&n);
h=(b-a)/n;/*步长的计算*/
T=(f(a,j)+f(b,j))/2;/*中间变量T赋初值*/
for(i=1;i<n;i++)
T=T+f(a+i*h,j);/*用循环控制来完成复合梯形公式的运算*/
Tn=T*h;
printf("\n函数 f(x) 的积分为 Tn=%f\n\n",Tn);
}
else
printf("输入错误,找不到该类型!!!\n\n");
system("pause");
}

double f(double x,int j)
{ double y;
switch(j)
{
case 1:y=x*x;break;
case 3:y=x/(x*x+1);break;
case 2:y=(x+1)/(x+3);break;
}
return (y);

}
温馨提示:答案为网友推荐,仅供参考