Страницы

Поиск по вопросам

пятница, 14 декабря 2018 г.

Почему в int переменной странное число?

Почему переменная t выводит на экран не то?
#include #include
int a[7];
void vvoda(){ puts("Puts values for a array"); for(int i = 0; i < 7; i++) scanf("%i", &a[i]); }
void suma(){ int t; for(int i = 0; i < 7; i++){ t += a[i]; t = t/7; printf("%i
", &t); } printf("Average of a array is %i", &t); }
main(void){ vvoda(); suma(); }
Вот что выдает консоль:
Puts values for a array 4 5 45 4 54 5 4 2293272 2293272 2293272 2293272 2293272 2293272 2293272 2293272 Average of a array is 2293272 -------------------------------- Proccess exited after 2.143 seconds with return value 0 Для продолжения нажмите любую клавишу . . .


Ответ

Во-первых, у вас не инициализирована локальная переменная t
void suma(){ int t; ^^^^^^
Во-вторых, если вы используете выражение t = t/7;, то логично было бы объявить эту переменную, как число с плавающей запятой, например, имеющую тип double. Иначе у вас будет отбрасывание дробной части, то есть будет иметь место целочисленное деление. Например, при t равным 4 выражение t/7 будет равно 0
И, в-третьих, в данных предложениях вывода
printf("%i
", &t); ^^^^
printf("Average of a array is %i", &t); ^^^^
вы должны использовать саму переменную, а не указатель на нее.
printf("%i
", t); printf("Average of a array is %i", t);
Имейте в виду, что согласно стандарту C функция main без параметров должна иметь объявление
int main( void ) ^^^
Также вместо магического числа 7 было бы лучше ввести именованную константу, как, например,
#define N 7
и использовать это имя вместо числа.
Например
#define N 7
int a[N];
void vvoda(){ puts("Puts values for a array"); for(int i = 0; i < N; i++){ scanf("%i", &a[i]); } } // и т.д.
Также не было никакой необходимости объявлять массив a глобальным.
Заголовок можно исключить из программы, так как ни одно определение из этого заголовка не используется.

Комментариев нет:

Отправить комментарий