Не работает код на C

#include <math.h> // подключение библиотеки математических функций
#include <stdio.h> // подключение библиотеки функций ввода-вывода данных
#include <windows.h> // подключение библиотеки функций, связанных с ОС Windows

int main() {
    SetConsoleOutputCP(1251); //Настройка консоли Windows для корректной работы с русскими символами
    printf("Введите значение переменной n="); //Вывод на экран текстовой строки
    int n; // Объявление переменной "n" целочисленного типа
    scanf("%f",&n); // Запрос пользователю ввести целочисленное число с последующей записью введенного числа в качестве значения переменной n
    int i;
    int a;
    a=0;
    i=1;
    do
    {
     i=i+1;
     printf("Введите значение переменной a(%u)=",i);
     scanf("%f",&a);
    }
    while (i<=n);
    return 0;
}

Не завершается, когда i становится больше n.


Ответы (1 шт):

Автор решения: Harry

Что вы хотите...

int n; // Объявление переменной "n" целочисленного типа
scanf("%f",&n); 

Вводите как float - вот и получается n совершенно нелепым: представления в памяти int и float кардинально различны...

Вот такой код на грани фола — гуру в стандарте заплюют, но он хорошо показывает, каким становится n при таком вводе: https://ideone.com/Hsyv57

→ Ссылка