Я написал программу, которая будет scanf
дважды до printf
и выведет два из того, что должно быть одним printf
. Кажется, что проблема начинается с точки, в которой пользователю предлагается ввести число от 1 до 4, чтобы увидеть среднюю температуру для введенного количества дней.Loop repeating scanf и printf
Я не уверен, что вызывает эти двойные входы и выходы и случайные задержки. Вот мой код:
#include <stdio.h>
#include <stdlib.h>
int main (void) {
int i;
int limit;
int day[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int high[10], low[10];
printf("---===IPC Temperature Analyzer V2.0===---\n");
printf("Please enter the number of days between 3 and 10, inclusive: ");
scanf("%d", &limit);
while (limit <= 2 || limit >= 11) {
printf("Invalid entry, please enter a number between 3 and 10, inclusive: ");
scanf("%d", &limit);
}
for (i = 0; i < limit; i++) {
printf("Day %d - High: ", day[i]);
scanf("%d", &high[i]);
printf("Day %d - Low: ", day[i]);
scanf("%d", &low[i]);
}
printf("\nDay Hi Low\n");
for (i = 0; i < limit; i++) {
printf("%d %d %d\n", day[i], high[i], low[i]);
}
int max = 0;
int min = 0;
for (i = 0; i < limit; i++) {
if (high[max] < high[i])
max = i;
if (low[min] > low[i])
min = i;
}
printf("\nHighest temperature was: %d on day %d\n", high[max], day[max]);
printf("Lowest temperature was: %d on day %d\n", low[min], day[min]);
int n;
do {
printf("\nEnter a number between 1 and 4 to see the average temperature "
"for the entered number of days, enter a negative number to exit:");
scanf("%d\n", &n);
while (n > 4) {
printf("Invalid entry, please enter a number between 1 and 4, inclusive: ");
scanf("%d", &n);
}
while (n < 0) {
printf("Goodbye!\n");
exit(0);
}
float avgSum = 0.0;
for (i = 0; i < n; i++) {
float avgOfDay = (high[i] + low[i])/2.0;
avgSum += avgOfDay;
}
float overallAvg = avgSum/n;
printf("The average temperature up to day %d is: %.2f\n", day[n - 1], overallAvg);
} while (n > 0 || n < 4);
return 0;
}
Пример вывода:
Enter a number between 1 and 4 to see the average temperature for the entered number of days, enter a negative number to exit:5
5
Invalid entry, please enter a number between 1 and 4, inclusive: Invalid entry, please enter a number between 1 and 4, inclusive: 3
The average temperature up to day 3 is: 2.50
Enter a number between 1 and 4 to see the average temperature for the entered number of days, enter a negative number to exit: 2
2
The average temperature up to day 2 is: 2.75
Enter a number between 1 and 4 to see the average temperature for the entered number of days, enter a negative number to exit: -1
The average temperature up to day 2 is: 2.75
Enter a number between 1 and 4 to see the average temperature for the entered number of days, enter a negative number to exit: -1
Goodbye!
Ваш вопрос будет более ясным, если вы дадите ожидаемый результат и точный * фактический вывод. – kaylum
Хорошо, я обновил свой пост на примере проблем, которые происходят. – Jinto
Обратите внимание, что согласованность написания очень нужна программистам - это важно с именами переменных и хорошими внутренними сообщениями ('temeprature' ->' temperature'). –