Печать неправильно среднего значения на C

Noob здесь. Я изучаю C. и я столкнулся с этой проблемой, я не смог найти ошибку/ошибку в своем коде, каждый раз, когда он печатает среднее значение программы, значение 2686776 независимо от ввода. Я использую Dev-С++

#include <stdio.h>

int main () {
 int loop, money, total, avg;
 total = 0;
 loop = 0;

 while(loop < 4) {
 printf("Money Spent");
 scanf("%d", &money);
 total = total + money;
 loop = loop + 1;
 }

 avg = total / 4;
 printf(" average %d", &avg);

 getch();
}
</stdio.h>
3 ответа

Вы должны удалить & из инструкции printf, иначе вы напечатаете адрес этой переменной.

Также avg int поэтому он не может иметь десятичные цифры! (например, 4, 5 → 9 → avg = 4). Поэтому вы должны изменить его на float или ******


Удалите & из аргумента printf и лучше объявите avg как float и измените

avg = total / 4;
printf(" average %d", &avg);

в

avg = total / 4.0; // or (float)total / 4;
printf("Average: %f\n", avg);


#include <stdio.h>

int main () {

 int loop, money, total, avg;

 total = 0;
 loop = 0;

 while(loop < 4) {
 printf("Money Spent");
 scanf("%d", &money);
 total = total + money;
 loop = loop + 1;
 }
 avg = total / 4;
 printf("Average %d", avg);

 getch();
}
</stdio.h>

Обратите внимание, что & avg дает вам индекс, что адрес avg, в данном случае, 2686776. Не сам avg.

Будьте осторожны, чтобы не путать адрес со ссылкой на ячейку памяти со значением, хранящимся в местоположении.

licensed under cc by-sa 3.0 with attribution.