纯小白,想编个阶乘,却无法停止循环。
以下为编程内容
#include
using namespace std;
int main( )
{
int n;
while(cin>>n){
int a=1;
for(int i=1;i<=n;i++){
a*=i;
}
cout<<a<<endl;
}
return 0;
}
我想,当输入n为0时,是否能表示假,然后结束循环呢?我试了一下,输入0后并没有结束,而是输出了1,并可以继续输入,这是为什么呢?是我没有理解while么?还是其他问题?如果我要停止循环,只能加个if(n==0) break;了?
求指点,您的任何一句都将使我受益。
谢谢!
“0”与“假”的区别?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- CSDN专家-天际的海浪 2021-10-06 23:49关注
cin>>n的返回值不是读取的n的值。
cin>>n返回的也是一个cin对象,当一个cin对象作为条件选择、循环等的控制表达式时,编译器会将其转换为真值表达式,如果cin的iostate为goodbit,则这个真值表达式的结果为真,否则为假。
输入一个非数字可以置位failbit,从而结束循环,当然这是一个非正常退出。
正常退出可以用键盘模拟产生EOF,表示流输入结束了。在windows中可以输入ctrl+z,unix/linux中则为ctrl+d。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
- ¥15 Python报错怎么解决
- ¥15 simulink如何调用DLL文件
- ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
- ¥30 线性代数的问题,我真的忘了线代的知识了
- ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
- ¥188 需要修改一个工具,懂得汇编的人来。
- ¥15 livecharts wpf piechart 属性
- ¥20 数学建模,尽量用matlab回答,论文格式
- ¥15 昨天挂载了一下u盘,然后拔了