Déjà au début tu fais ça :
float poids;
float taille;
float imc = calculimc(poids, taille);
A ton avis, quelles valeurs sont envoyées à calculimc ? Tes deux variables prennent certaines "cases" de mémoire, et ces cases ont un certain contenu. Le problème c'est que si tu initialises pas tes variables, tu gardes l'ancien contenu, qui est probablement pas du tout fait pour ton programme ou ta fonction. Donc avant d'utiliser tes variables il faut être SUR qu'elles ont une valeur correcte pour ton programme.
La solution correcte ici serait de dire par exemple :
float poids = 0;
float taille = 0;
float imc = calculimc(poids, taille);
(Note que c'est comme ça qu'on initialise une variable en général. Dans ton cas tu auras d'autres soucis, l'IMC étant une division, tu auras une erreur à cause d'une division par 0
Je te laisse changer les valeurs, l'essentiel c'est qu'il y ait une valeur avant d'effectuer le calcul, ça parait logique.
Deuxième problème, et c'est un GROS GROS GROS problème. Lis très bien stp, c'est ultra important.
Dans ce genre de langage de programmation, imagine toi un curseur qui parcourt ton code. Il lit la première ligne, puis la deuxième, puis la troisième, tombe sur une fonction, effectue la fonction de haut en bas, passe à la quatrième ligne, etc.
Ici tu veux effectuer le calcul de l'IMC avant d'avoir demandé à l'utilisateur ses données. Voici une solution correcte :
float taille = 0;
float poids = 0;
float imc = 0;
printf("Quel est votre poids ? (en kilos) :\n");
scanf_s("%f%*c", &poids);
printf("Quel est votre taille ? (en metres) :\n");
scanf_s("%f%*c", &taille);
imc = calculimc(poids, taille);
if (imc < 16.5)
{
printf("denutrition ou famine :\n");
}
else if (imc >=16.5 && imc <18.5)
{
printf("maigreur :\n");
}
else if(imc >=18.5 && imc <25)
{
printf("corpulence normale :\n");
}
else if(imc >=25 && imc <30)
{
printf("surpoids :\n");
}
else if(imc >=30 && imc <35)
{
printf("obésite moderee :\n");
}
else if(imc >=35 && imc <40)
{
printf("obesite severe :\n");
}
else
{
printf("obésite morbide ou massive :\n");
}
PS : Pourquoi "float main" ? Sais-tu ce que tu fais ? 