C++的一道习题,如何防呆?

来源:百度知道 编辑:UC知道 时间:2024/06/07 10:47:37
源代码如下
#include <iostream>
using namespace std;
unsigned long int F(unsigned short int x,unsigned short int y);
int main()
{
unsigned short int x,y;
unsigned long int z;
cout << "输入一个底数:";
cin >> x;
cout <<"\n输入一个指数:";
cin >> y;
z = F(x,y);
cout << "z是"<<x<<"的"<<y<<"次方"<<z<<endl;
return 0;
}
unsigned long int F(unsigned short int x,unsigned short int y)
{
if (y==1)
return x;
else
cout << "55"
return F(x,(y-1))*x;
}

如果我故意将负数输入给x和y 将得不到正确答案。如何防呆呢?

加个判断
if(x>=0||y>=0)
.........

#include <iostream>
#include <assert.h>
using namespace std;
unsigned long int F(unsigned short int x,unsigned short int y);
int main()
{
unsigned short int x;
int y;
unsigned long int z;
cout << "输入一个底数:";
cin >> x;
cout <<"\n输入一个指数:";
cin >> y;
assert(y>0);
z = F(x,y);
cout << "z是"<<x<<"的"<<y<<"次方"<<z<<endl;
return 0;
}
unsigned long int F(unsigned short int x,unsigned short int y)
{
if (y==1)
return x;
else
cout << "55";
return F(x,(y-1))*x;
}