Цикл While не останавливается - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Не судите строго за код, недавно начал учить Си. Объясните почему цикл не останавливается Задача вот в чем, ввожу любое число например 20, и программа должна начиная от 1 до 20 подсчитать сумму квадрата этих чисел, проблема в том что когда ввожу 20 то цикл становиться бесконечным, по условии должна остановиться достигая 20. Например так: 1 1 2 4 3 9 и т.д до 20
#include <stdio.h>
int main(void)
{
    setlocale(0,"");
    int num = 0;
    int num2;
    printf("Введите число ___\b\b\b");
    scanf("%d",num2);
    while (num++ < num2 )
    {
        printf("%4d %6d\n", num, num * num);
      
    }
    return 0;
}

Решение задачи: «Цикл While не останавливается»

textual
Листинг программы
    int a; 
    char buf[88];
    do
    {
        cout << "Salonov vsego 2! Viberete salon 1 ili salon 2!: ";
        cin.getline(buf,sizeof(buf));
        a=atoi(buf); 
    }while( a!=2 && a!=1);

Объяснение кода листинга программы

  1. Объявляются две переменные: a типа int и buf типа char с размером массива 88.
  2. Запускается цикл do-while, который будет выполняться, пока значение переменной a не станет равным 2 или 1.
  3. В каждой итерации цикла выводится сообщение Salonov vsego 2! Viberete salon 1 ili salon 2!: с помощью функции cout.
  4. С помощью функции cin.getline считывается строка, введенная пользователем, и сохраняется в переменной buf.
  5. Функция atoi преобразует строку в целое число и сохраняет результат в переменной a.
  6. Условие цикла do-while проверяет, стало ли значение переменной a равным 2 или 1, если нет - цикл продолжается.

Оцени полезность:

12   голосов , оценка 4.083 из 5