0

我正在尝试创建一个指数函数,但它似乎没有按预期工作。对不起,如果我不了解一些基本的东西,我只是在网上学习一些零碎的东西。

float x;
float y;
float z;
int h;
int j;

float exponent (float a, float b)
{
    float r;
    while(b > 1)
    {
        r = a * a;
        b = b - 1;
    }
    return (r);
}

^带变量的函数片段。

cout << "EXPONENT MODE\n\n";
cout << "Please enter a number:  ";      
cin >> x; system("CLS");
cout << "Please enter another number as the exponent for the first:  ";
cin >> y; 
z = exponent(x, y); 
cout << "Calculating the answer, please wait";
Sleep(1000); 
cout << "."; 
Sleep(1000);
cout << "."; 
Sleep(1000); 
cout << "."; 
Sleep(1000);
cout << "\n\nYour answer is : "; 
cout << r; 
Sleep(5000); 
system("CLS");
cout << "Would you like to calculate another set of numbers? (yes = 1, no = 2) :  ";
cin >> h; 
system("CLS");

^我想在控制台上执行的部分。(只是代码)

基本上,我希望用户输入 2 个数字,第一个(x)是基数,第二个(y)是指数。程序应输入 x 作为 a 和 y 作为 b 并运行该函数。发生了什么:输入 1:5,输入 2:3,预期:125,接收:25。我正在考虑将 while 更改为 (b > 0)。如果你们能帮忙就太好了!(也不要system("CLS")在代码中评判我)

4

2 回答 2

0

这很简单,你打印了错误的变量。

cout << "\n\nYour answer is : "; 
cout << r; 

r是 的局部成员变量exponent。在 的范围内main, 的结果exponent实际上存储在一个名为的变量中z

z = exponent(x, y); 

修复只是将您的答案打印代码更改为

cout << "\n\nYour answer is : "; 
cout << z; 

为了您自己的利益,您可能想尝试为变量赋予更有意义的名称,并且只在实际需要它们的范围内声明它们。我没有看到您r在 main 的其他地方使用,您是否将其设为全局以尝试使rin也可以在exponent那里访问?

于 2013-10-29T05:40:04.843 回答
-1

我不明白@kfsone 在说什么。但是在循环中 r 每次都设置为 a*a ,这不是为什么你得到平方而不是指数的原因吗?我认为你真正想做的是:

 r=1
 while( ...
    r *= a;// note to accumulate result on r
    b --;
于 2013-10-29T05:50:30.467 回答