Я не могу показаться, чтобы понять, почему моя программа реагирует так странно .. У меня есть этот простой код ...
Я объясню свою программу. Эта строка резервирует четыре пробела в памяти, где каждое пространство имеет размер в два раза, но никакое конкретное значение не назначено никому. Затем вы можете ожидать случайные значения для каждого.
double sqrt,high,low,currNum;
Если вы хотите, чтобы каждое значение ноль, чтобы начать с, используйте эту линию вместо:
double sqrt=0,high=0,low=0,currNum=0;
Эта линия читает и принимает числовой вход, который двойного типа и сохраняет значение в переменная SQRT:
scanf("%lf",&sqrt);
Это устанавливает высокий к значению SQRT:
high = sqrt;
Это устанавливает низким, чтобы быть 0,0:
low = 0.0;
Это вычисляет сумму, что пользователь ввел затем делит пополам общий (А.К.А. на 2), а затем сохраняет результат в переменной currNum:
currNum = (high+low)/2.0;
после отладки и достижения линии после последнего, у меня есть эти результаты: SQRT равна 6 (это номер, который был введен. .) high равно 0 (????). low равно 0. currnum равно 6 (???). Я просто не понимаю поведение этих ценностей ... помогите пожалуйста?
Потому что вы установили «низким», чтобы быть нулевым, что вы сделали здесь это программа, которая вычисляет половину от числа пользователя, набранного в
... пытается реализовать функцию SQRT:.
Я уверен, что если вы используете библиотеку C, вы получите хорошую функцию квадратного корня. Эта программа печатает квадратный корень из 9.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
double x=sqrt(9);
printf("%lf",x);
return 0;
}
'sqrt' также является математической функцией для вычисления квадратного корня. – 101010
[не использовать зарезервированные имена.] (Http://www.tutorialspoint.com/c_standard_library/c_function_sqrt.htm) – Michi
Вы не показываете, как вы проверяете эти цифры. Пожалуйста, напишите [минимальный, полный, проверяемый пример] (http://stackoverflow.com/help/mcve). – dbush