首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在尝试自定义pow()函数,但是for循环不起作用-C。

我正在尝试自定义pow()函数,但是for循环不起作用-C。
EN

Stack Overflow用户
提问于 2019-09-24 02:16:44
回答 1查看 250关注 0票数 0

我正在尝试创建一个定制的pow()函数来比较实际的pow函数的结果,但是它不起作用。当基值为1时,它工作得很好,但在此之后,MyPower函数将返回1作为第一个幂函数,所以它会这样说。

测试1.000000到1电源

测试1.000000到2电源

测试1.000000到3电源

测试1.000000到4电源

2.000000比1是2.000000,结果是1.000000。

2.000000比2是4.000000,结果是2.000000。

2.000000比3是8.000000,结果是4.000000。

2.000000比4是16.000000,结果是8.000000。

它将继续在一个指数的值上,对所有其余的基。我相信错误发生在MyPower()函数中,但我不确定。

代码语言:javascript
复制
#include <stdio.h>
#include <math.h>

double base, x;
int exponent, i, z;

double MyPower(double base, int exponent);
void DoTest(double base, int exponent);


double MyPower(double base, int exponent){
    double x = 1;
    for(z = 1; z < exponent; z++){
        x *= base;
    }
    return x;
}

int main(void){
    int i, j;
    for(i = 1; i < 5; i++){
        for(j = 1; j < 5; j++){
            DoTest(i,j);
        }
    }
}


void DoTest(double base, int exponent){
    double test1 = MyPower(base, exponent);
    double pow_result = pow(base, exponent);
    if(test1 == pow_result){
        printf("Testing %f to the %d power\n", base, exponent);
    }
    else{
        printf("%f to the %d is %f, result is %f\n", base, exponent, pow_result, test1);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-24 02:28:45

问题来自循环中的条件.

给定给z的初始值和退出条件的组合使得它的迭代次数比您想做的要少一次:

代码语言:javascript
复制
for(z = 1; z < exponent; z++){
    x *= base;
}

您需要将其更改为:

代码语言:javascript
复制
for(z = 0; z < exponent; z++){

或者:

代码语言:javascript
复制
for(z = 1; z <= exponent; z++){

调试程序时的一小条建议

这可能看起来很老套,但是尝试用笔和纸来运行你的算法会帮助你发现这些错误。毫无疑问,当你变得更有经验时,你的意志会变得越来越熟练。欢迎来到StackOverflow!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58072205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档