Aqui funciona perfeitamente assim:   #include <stdlib.h>
#include <stdio.h>
void calculaimc(float *peso, float *altura, float *imc, int qtd)
{
   int i;
   for (i = 0; i < qtd; ++i){
       printf("Informe o %d-esimo peso: ",i+1);
       scanf("%f",&peso[i]);
   }
   for (i = 0; i < qtd; ++i){ 
       printf("Informe a %d-esima altura: ",i+1);
       scanf("%f",&altura[i]);
   }
   for (i = 0; i < qtd; ++i)
       imc[i] = peso[i] / (altura[i] * altura[i]);
}
int main(int argc, char* argv[])
{
   float *peso, *altura, *imc;
   int qtd, i;
   printf("Sera feito o cadastro de quantas pessoas? \n");
   scanf("%d",&qtd);
   
   peso = (float *) malloc(qtd * sizeof(float));
   altura = (float *) malloc(qtd * sizeof(float));
   imc = (float *) malloc(qtd * sizeof(float));
   calculaimc(peso, altura, imc, qtd);
   
   for (i = 0; i < qtd; ++i)
      printf("O %d-esimo peso é:%f e a altura é:%f e seu IMC é:%f \n",i+1, peso[i], altura[i], imc[i]);
  
   return 0;
}