方根不能正常潜水

时间:2017-02-28 20:00:04

标签: c

我创建了一个程序,它接受一个整数x输入,然后循环直到x被满足,同时还接受其他整数输入。然后我做各种计算,然后找到某个值的平方根。当我除以平方根时,我得到一个0,当我知道我应该得到一个不同的值,因为数学没有加起来。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>  

int main(void) {

    int multiply1, multiply2, add, squareRoot;
    int i;
    int n;
    int x;
    int s;
    double divide, test = 0;

    scanf("%d", &x);

    for (s = 0; s < x; s++) {
        scanf("%d %d", &i ,&n);
    }

    multiply1 = i * i;
    multiply2 = n * n;

    add = multiply1 + multiply2;

    squareRoot = sqrt(add);
    printf("%d", i);
    test = (i / squareRoot);

    printf("Multiplication = %d\n", multiply1);
    printf("Multiplication = %d\n", multiply2);
    printf("Added together = %d\n", add);
    printf("square root = %d\n", squareRoot);
    printf("First output = %.3f\n", test);

    return 0;
}

2 个答案:

答案 0 :(得分:2)

您正在划分两个整数,以便实际除法返回向下舍入的结果。你应该转而加倍然后除。

test = ((double)i/squareRoot);

答案 1 :(得分:1)

你可以做两件事,

  1. 在不更改程序的情况下,只需将isquareRoot变量转换为double

    test = (double) i / (double) squareRoot;
    
  2. 更改您的计划并将isquareRoot设为double

  3. 我会选择 2 ,因为sqrt()会返回double,这可能会导致整数溢出。