Je suis nouveau à C. J'ai été chargé d'exécuter un programme qui calcule le pourcentage d'élèves qui a passé un examen, basé sur les intrants N grade.Je ne comprend pas vraiment comment les fonctions travaillent si Ce que je suis venu avec On dirait que cela devrait fonctionner, mais je reçois toujours le mauvais résultat.Il est coincé sur l'affichage de 0,2 ou 0,25 pour toute entrée que je donne. Quelqu'un aidez-le? < / p> p>
4 Réponses :
Le problème est que, en grade, seules les dernières données entrées sont stockées. Faire de la grade comme une matrice de sorte que toutes les données puissent être stockées. P>
Je suppose que vous prenez une valeur multiple pour la note et ne pas prendre la matrice pour cela. La note devrait être une matrice et dans la boucle Scanf ("% D", et de la catégorie [I]); devrait être mis en œuvre. p>
Grade doit être un tableau de N entiers afin que chaque valeur soit stockée. Vous avez également oublié de multiplier le succès de 100 pour obtenir le pourcentage.
Je pense que j'ai corrigé le code: p>
Vous avez raison, ça marche des merveilles, comment m'a-t-elle manqué? Merci :)
Juste une question.Lhy avez-vous déclaré principal () comme int?
Je l'ai dit comme contre parce que c'est une fonction et devrait avoir un type de retour. Il y a aussi un retour (0) à la fin de la fonction principale, qui est un int, je suppose. Cela fonctionne la même chose si vous n'écrivez pas à l'int, car il est automatiquement par défaut sur 'INT'. Mais je vous conseille de toujours bien le type avant chaque fonction. La valeur renvoyée par une fonction doit être le même type que celui que vous avez déclaré pour cette même fonction.
Je pense que vous devriez examiner le code que j'ai écrit. Un peu de mauvais code. Mais cela peut aider.
#include <stdio.h>
int students_success(int *);
int main() {
int n;
printf("How many students?\n");
scanf("%d", &n);
printf("Enter grades(0-10) of %d students\n", n);
int grade;
int pass_std = 0;
for(int i = 0; i < n; ++i) {
scanf("%d", &grade);
pass_std = students_success(&grade);
}
printf("%.2f percent of students have passed exam.\n", (double)pass_std / n);
}
int students_success(int *grade) {
static int pass_std = 0;
if(4 < *grade) {
++pass_std;
}
return pass_std;
}
Vous n'avez qu'une note d'une note utilisée dans
succès code> à chaque fois, ce qui est le dernier numéro entré. Il vous suffit de collecter toutes les notes dans un tableau et de boucler sur celui-ci dansSuccès code> ou que vous devez avoir une variable globalenumblesccesses code> que vous mettez à jour après chaque score est saisi.J'ai aligné l'indentation dans votre fonction, vous pouvez donc voir plus clairement que la boucle ne fera que itération une fois.
Ce code ne compile même pas.