C – l’argument mathématique simple ne fonctionne pas?

J’essaie simplement de calculer un montant pour 10 ans à l’aide d’une formule relativement simple. Je peux saisir toutes mes variables, mais je soupçonne que je fais quelque chose de mal avec le amount .

 #include  #include  int main(){ double amount; /* amount on deposit */ double principal; /* what's the principal */ double rate; /* annual interest rate */ int year; /* year placeholder and no. of total years */ int yearNo; printf("What is the principal? "); scanf("%d", &principal); printf("What is the rate (in decimal)? "); scanf("%lf", &rate); printf("How many years? "); scanf("%d", &yearNo); printf("%4s%21s\n", "Year", "Amount on deposit"); /* calculate the amount on deposit for each of ten years */ for (year = 1; year <= yearNo; year++ ){ amount = principal * pow(1.0 + rate, year); printf("%4d%21.2f\n", year, amount); } return 0; } 

Je suis nouveau en C, mais je suis un exemple dans un livre. Le livre “code dur” les nombres, où j’essaie d’apprendre à utiliser les données saisies par un utilisateur pour calculer les données.

Ai-je raison de penser que c’est soit mon amount soit comment j’y fais référence avec le %f à la fin?

Merci pour toutes les idées 🙂

Avec la famille de fonctions scanf() , %d est pour int mais %lf est pour double .

La première chose à faire est de vous assurer que les avertissements sont activés pour votre compilateur. Certains compilateurs (GCC, Clang) signalent de telles erreurs de format.

La prochaine chose à faire est d’imprimer les valeurs que vous avez lues. Quand vous voyez des ordures sortir pour les valeurs que vous venez de lire, vous savez qu’il y a un problème.

Et après cela, vous vérifiez que les conversions ont réussi:

 if (scanf("%lf", &principal) != 1) …oops! input error or EOF…