Я совершенно новый в программировании, и я недавно нашел этот сайт, чтобы помочь обучить себя. Я пытаюсь сделать программу с помощью «C», которая запрашивает оценки в трех разных категориях в моей книге. Я столкнулся с высказываниями и понял, где у меня лучший выбор для этого. Мой текущий код выглядит примерно так.Как использовать в то время как петли
int countA;
int gradeA;
int totalA;
int weightA;
float averageA;
int countE;
int gradeE;
int totalE;
int weightE;
float averageE;
int countQ;
int gradeQ;
int totalQ;
int weightQ;
float averageQ;
totalA = 0;
countA = 0;
totalE = 0;
countE = 0;
totalQ = 0;
countQ = 0;
printf("Enter Assignment Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeA);
while (gradeA != -1){
totalA = totalA + gradeA; /* add gradeA to totalA */
countA = countA + 1;
printf("Enter Assignment Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeA);
}
if (countA != 0) {
averageA = (float) totalA/countA;
printf("total is %.2f\n", averageA);
}
printf("Enter Exam Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeE);
while (gradeE != -1){
totalE = totalE + gradeE; /* add gradeE to totalE */
countE = countE + 1;
printf("Enter Exam Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeE);
}
if (countE != 0) {
averageE = (float) totalE/countE;
printf("total is %.2f\n", averageE);
}
printf("Enter Quiz Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeQ);
while (gradeQ != -1){
totalQ = totalQ + gradeQ; /* add gradeQ to totalQ */
countQ = countQ + 1;
printf("Enter Quiz Grade, -1 to end: "); /* prompt for input */
scanf("%d", &gradeQ);
}
if (countQ != 0) {
averageQ = (float) totalQ/countQ;
printf("total is %.2f\n", averageQ);
}
Теперь то, что я пытаюсь сделать после этой точки повторить процесс еще два раза, однако, когда я пытаюсь запустить ехе я получаю первую часть, чтобы бежать, но две другие части просто не получают воспитывался по какой-то причине. Это просто делается для ограничения того, что делают заявления повторения? или у меня есть ошибка где-то. Я пытаюсь понять, что я делаю неправильно, но я просто вижу это.
Я не совсем уверен, как правильно разместить сообщение здесь, но это пример вывода, который я получаю.
вот пример моего вывода, так как вы можете видеть, что он запрашивает у меня 1-й сегмент, который является частью назначения, но после ввода -1 в конец цикла он просто дает мне среднее значение и заканчивается.
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin>project1.exe
Enter Assignment Grade, -1 to end: 100
Enter Assignment Grade, -1 to end: 80
Enter Assignment Grade, -1 to end: 77
Enter Assignment Grade, -1 to end: 33
Enter Assignment Grade, -1 to end: 76
Enter Assignment Grade, -1 to end: 92
Enter Assignment Grade, -1 to end: -1
total is 76.33
Я полагаю, что по крайней мере первая часть работает, но после того, как я получаю общее я не запрошен следующий вид спрашивает для классов экзамена.
Пожалуйста вывесить выход. Я подозреваю, что вы не видите приглашение, потому что вам нужно вызвать 'fflush (stdout)'. Множество терминалов буферизируется по строке и не будет выводить вывод на экран по умолчанию, если вы не напишете новую строку (или явно скрытую). – paddy
Работает отлично на моем Mac (clang) и Windows (vc2012). – WhozCraig
Сложно представить любую библиотеку ввода/вывода C, которая не выдает вывод перед чтением ввода. –