请显示你的源程序, 你可以每次打印循环控制变量的值, 看看问题出在哪里。
可能是循环体里面的判断条件出现了问题
#include<stdio.h>
#include<math.h>
#include<string.h>
double sigma(double (*fn)(double),double l,double u);
void main()
{
double l,u,(*fun)(double);
char s[5];
printf("input the parameter:");
scanf("%s%lf%lf",&s,&l,&u);
if(strcmp(s,"sin")==0)
fun = sin;
else if(strcmp(s,"cos")==0)
fun = cos;
else
printf("error");
printf("result is %lf",sigma(fun,l,u));
}
double sigma(double (*fn)(double),double l,double u)
{
double sum=0;
for(;l<=u;l+=0.1)
{
sum += (*fn)(l);
printf("%3.1lf ",l);
printf("%lf\n",(*fn)(l));
}
if(l==u)
printf("yes\n");
else
printf("%lf\n",u-l);
return sum;
}
#include<stdio.h>
#include<math.h>
#include<string.h>
double sigma(double (*fn)(double),double l,double u);
void main()
{
double l,u,(*fun)(double);
char s[5];
printf("input the parameter:");
scanf("%s%lf%lf",&s,&l,&u);
if(strcmp(s,"sin")==0)
fun = sin;
else if(strcmp(s,"cos")==0)
fun = cos;
else
printf("error");
printf("result is %lf",sigma(fun,l,u));
}
double sigma(double (*fn)(double),double l,double u)
{
double sum=0;
for(;l<=u;l+=0.1)
{
sum += (*fn)(l);
printf("%3.1lf ",l);
printf("%lf\n",(*fn)(l));
}
if(l==u)
printf("yes\n");
else
printf("%lf\n",u-l);
return sum;
}
所以问题自己解决了嘛·····
没有啊,设想的应该是输入3计算到3.0,现在是输入3计算到2.9。