学C语言函数指针时,遇到循环少跑了一次的问题,有人知道问题在哪吗。

 

请显示你的源程序, 你可以每次打印循环控制变量的值, 看看问题出在哪里。 

可能是循环体里面的判断条件出现了问题

#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。