#include <iostream>
#include <cmath>
using namespace std;
signed main()
{
setlocale(LC_ALL, "Rus");
int N;
bool haveZero = false, haveOne = false;
cin >> N;
N = abs(N);
while(N>0){
if(N % 10 == 0)
haveZero = true;
if(N % 10 == 1)
haveOne = true;
N /= 10;
}
cout << "Наличие нуля: " << boolalpha << haveZero << endl;
cout << "Наличие единицы в числе: " << boolalpha << haveOne << endl;
return 0;
}
Объяснение: всё дело в том, что в первом случае (в верхнем, где s = 0 написано вне цикла) s изначально равен нулю, а затем с каждой итерацией цикла s увеличивается.
А втором случае на каждой итерации цикла сначала присваивается s = 0, а затем уже изменяется. Поэтому перед каждой следующей итерацией цикла всё что происходило с s раньше обнуляется.
Если подвести итог, то разница заключается в том, что присваивание находится в цикле или вне него, а значит выполняется один раз (если вне цикла) или много раз (если внутри)
Поделитесь своими знаниями, ответьте на вопрос:
Надо! написать на python решение : "вводится число n. если это число трехзначное и кратно 3 то выведите "да", в противном случае "нет""
if (99 < N and N < 1000 and N % 3 == 0):
print("Да")
else:
print("Нет")