0%2值为0,条件不成立,转else分支去了啊。
某些版本的编译器的cin输入bool值时仅支持0或1。非1的值都视为false(0).
可以输入整型值再强制转换:int n ;cin >> n ;flag = static_cast(n);//类型转换时非0值都视为true