Я пытаюсь создать пользовательскую функцию 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 (), но я не уверен.
#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);
}
}