我正在尝试创建一个指数函数,它似乎没有按预期工作。对不起,如果我不了解一些基本的东西,我只是在互联网上学习点点滴滴。
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")
上判断我
答案 0 :(得分:0)
这很简单,你打印的是错误的变量。
cout << "\n\nYour answer is : ";
cout << r;
r
是exponent
的本地成员变量。在main
的范围内,exponent
的结果实际存储在名为z
z = exponent(x, y);
修复只是将您的答案打印代码更改为
cout << "\n\nYour answer is : ";
cout << z;
为了您自己的利益,您可能希望尝试为变量提供更有意义的名称,并仅在实际需要的范围内声明它们。我没有看到您在main中的其他地方使用r
,是否将其设为全局,以尝试让r
中的exponent
也可以访问?
答案 1 :(得分:-1)
我不知道@kfsone在谈论什么。 但是在循环中r每次被设置为* a,这不是为什么你得到正方形而不是指数?我想你真正想做的是:
r=1
while( ...
r *= a;// note to accumulate result on r
b --;