codice:
#include<stdio.h>
#include<stdlib.h>
 double funz(double x)
    {
        return (2*x);
    }


    double int_trapezium(double from, double to, double n, double (*func)(double x))
{
   double h = (to - from) / n;
   double sum = func(from) + func(to);
   int i;
   for(i = 1;i < n;i++)
       sum += 2.0*func(from + i * h);
   return  h * sum / 2.0;
}


int main()
{


    int a;
    int b;
    int c;


    printf("inserisci il primo intervallo di integrazione");
    scanf("%d",&a);
     printf("inserisci il secondo intervallo di integrazione");
    scanf("%d",&b);
    printf("inserisci il numero di intervalli");
    scanf("%d",&c);


    printf("%d",int_trapezium(a,b,c,funz));
return 0;
}


Fatto come hai detto , allora il programma mi restituisce come valori a volte 0 e a volte -1.