有个比较容易的c++问题,有点细节不知怎么弄
求n的阶乘
#include<iostream>
using namespace std;
int main(){
int s,i,n;
s=1;
i=1;
cout<<"input n:";
cin>>n;
if(n<0||n%1!=0)
cout<<"输入错误!";
else{
while(i<=n){
s=s*i;
i++;
}
cout<<"n!="<<s<<endl;
}
return 0;
}
想将n不为正整数的正数纳入“输入错误”的情况,没有成功。是因为定义n的数据类型缘故吗?怎么改正?
[解决办法]
if(n <= 0)
[解决办法]
后面一个稍微好些,利用强制转换,看有小数部分没有。
#include<iostream>using namespace std;int main(){ int s=1,i=1; double n = 0.0; cout<<"input n:"; cin>>n; if(n<0 || n-(int)n!=0) { cout<<"输入错误!"<<endl; } else { while(i<=n) { s=s*i; i++; } cout<<"n!="<<s<<endl; } return 0;}