2014-03-02 28 views
-5

我是C++中的新手,我正在编写一个C++程序,要求用户输入两个整数,然后它将第一个整数提升到由第二个整数。例如,如果用户输入5和8,则结果将是5下标8,即,第五个将被提升到第八个功率。该程序不能使用任何预定义的C++函数(如pow函数)来执行此任务。如果用户愿意,该程序应该允许用户执行另一种计算。任何人都可以帮助C++程序的权力,但没有使用pow函数

+9

你有什么试过?也许你可以创建一个将自身乘以5次的循环8次。 – nos

+2

哦,我不得不下拉到汇编器,如果你不能使用预定义的C++函数,那么你需要处理所有的东西! –

+0

'main'算作“预定义函数”吗? – bolov

回答

2

程序不得使用任何预先定义的C++函数(如POW函数)完成这个任务

你可以使用一些片C++代码等如下,以计算X ÿ,而不使用任何预定义的功能:

int x = 5; 
int y = 3; 
int result = 1; 
for(int i = 0; i < y; ++i) 
{ 
    result *= x; 
} 

cout << result << endl; 

输出:

125 

查看样机here

4

我不会给你任何代码,因为这不会让你真正探索这个概念。相反,你应该使用这个伪代码来实现你自己的东西。

创建一个接受两个输入的函数,即基数和指数。

现在有几种方法可以做到这一点。您可以使用高效的位移,但让我们从简单的开始,我们可以吗?

answer = base 
i = 1 
while i is less than or equal to exponent 
    answer = answer * base 
return answer 

只需循环乘以自己的基地。

还有其他方式关注效率。看这里,看的东西,你可能想尝试:are 2^n exponent calculations really less efficient than bit-shifts?