Технологии
программка в си и ее проблемы - вопрос №2169021
#include <conio.h> #include <stdio.h> int main() { int i,x,s=0; for(i=0;i<x;i++){ scanf("%d",&x); s=s+x;} printf("%d", s); return 0; } программа суммирует числа.если вводит сначало любое число и потом 2.то сразу идет вычисление.если наоборот то нет.ждет чтоб ввести 0.почему так?
октябрь 18, 2016 г.
-
Всего ответов: 2
-
Здравствуйте.
Потому что программа у Вас кривая.
Смотрите что у Вас получается:
Во-первых, переменная x у Вас ничем не инициализирована. Поэтому там вполне может содержаться любой мусор (рандомное некое число > 0, но и отрицательное может быть). Это хорошо если будет 0 (компилятор позаботился) — тогда вы получите просто вывод 0 (в цикл входа не будет) и все.
А если же в x содержится некое «мусорное» положительное значение, тогда будет так:
заходим в цикл for — условие соблюдено (i < некого x)
ждем ввода с клавиатуры
если ввели число 2:
тогда s становится равно 2 (s = 0 + 2)
печатаем s (2)
увеличиваем i на единицу и опять проверяем условие цикла: i < x соблюдено (1 < 2), опять идем внутрь
опять ждем ввода числа
s = 2 + (число введенное новое, x)
и опять увеличиваем i на единицу (i будет = 2) и мы опять проверяем условие цикла — если i < x, тогда опять идем внутрь, считываем новое x и опять суммируем s.
И так можно до бесконечности, до тех пор пока значение i не будет >= последнего введенного числа x.
В этом случае программа покажет сумму и завершится.
А если же сначала ввести любое число — и потом 2 — цикл завершится после 2 итераций, т.к.
у Вас будет проверка условия i (которое будет = 2 перед началом третьей итерации ) < 2 — ложь. Соответственно, третьей итерации не будет и программа завершается -
Логика нормальная, но выход из цикла конечно задан весьма интересно.
Вместе с листингом предоставляйте условие задачи.
Похожие вопросы
Дано действительное число а и натуральное число n вычислить P=a*(a+1)...(a+n-1) код есть а блоксхему не знаю как создать,помогите,заранее благодарен
март 15, 2013 г.
Функция автоматического формирования иерархии.Должности вписала на английском.на русском не выходит..как сделать на русском???что нужно?
июнь 2, 2014 г.
Дано трехзначное число. Найдите сумму его цифр. Надо написать программу в Паскале
декабрь 4, 2014 г.