Печать неправильно среднего значения на 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.