我是 C 的学生,我的函数中的变量类型有问题。这是一个函数,用于计算特定跨度内的资本和利率,并表示“capital_a_terme”存在冲突类型。
#include <stdio.h>
#include <stdlib.h>
int main()
{
float capital_initial, taux_interet_fixe, nb_annee_placement;
printf("Saisir le capital initial.\n");
scanf("%f", &capital_initial);
printf("Saisir le taux d'interet fixe.\n");
scanf("%f", &taux_interet_fixe);
printf("Saisir le nombre d'annee de placement.\n");
scanf("%f", &nb_annee_placement);
printf("le capital a terme vaut : %f.\n", capital_a_terme(capital_initial, taux_interet_fixe, nb_annee_placement));
}
float capital_a_terme(float capital_initial, float taux_interet_fixe, float nb_annee_placement)
{
if (nb_annee_placement == 0)
{
return capital_initial;
}
else
{
return (capital_a_terme(capital_initial + capital_initial * taux_interet_fixe / 100, taux_interet_fixe, nb_annee_placement - 1));
}
}
答案 0 :(得分:8)
如果编译器不知道函数签名,它会将其返回类型默认为 int
。
由于 capital_a_terme
在编译器知道它的签名是什么之前被使用,它完全这样做,但是当它到达使用函数的行时它通知< /em> 类型与它认为的不匹配,因此编译失败并发出错误。
您需要在使用之前放置函数的原型,在这种情况下,在 main
之前:
#include <stdio.h>
#include <stdlib.h>
// prototype here, before it's used
float capital_a_terme(float capital_initial, float taux_interet_fixe, float nb_annee_placement);
int main()
{
float capital_initial, taux_interet_fixe, nb_annee_placement;
printf("Saisir le capital initial.\n");
//...
或者将实现向上移动到使用它之前,再次在 main
之前:
#include <stdio.h>
#include <stdlib.h>
// Or the whole function here, before it's used
float capital_a_terme(float capital_initial, float taux_interet_fixe, float nb_annee_placement)
{
if (nb_annee_placement == 0)
{
return capital_initial;
}
//...
}
int main()
{
float capital_initial, taux_interet_fixe, nb_annee_placement;
printf("Saisir le capital initial.\n");
//...
答案 1 :(得分:1)
你需要声明这个函数(在main之上),这样main就会识别出来。
另一方面你可以在main上面定义这个函数,然后main就会识别它。
函数的声明和定义是有区别的:
每个函数都需要声明,以便程序的其他部分能够识别它。
此外,您可以声明一个函数而无需定义它,并且您将能够编译并运行它。
但是,不声明就不能定义函数。
如果你在程序实际使用它的部分之上定义函数,那么定义也是它的声明。
希望你明白。
答案 2 :(得分:-1)
两件事:
return (capital_a_terme(capital_initial + capital_initial * taux_interet_fixe / 100, taux_interet_fixe, nb_annee_placement-1));
100
需要是一个浮点数:(根据我对 c 的非常有限的理解,这是我能弄清楚如何做到这一点的唯一方法,尽管您可能可以替换 onehundred
使用 100f
或 %f100
,我真的不知道 tbh)float onehundred = 100;
return (capital_a_terme(capital_initial + capital_initial * taux_interet_fixe / onehundred, taux_interet_fixe, nb_annee_placement-1));