我创建了一个程序,它接受一个整数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;
}
答案 0 :(得分:2)
您正在划分两个整数,以便实际除法返回向下舍入的结果。你应该转而加倍然后除。
test = ((double)i/squareRoot);
答案 1 :(得分:1)
你可以做两件事,
在不更改程序的情况下,只需将i
和squareRoot
变量转换为double
test = (double) i / (double) squareRoot;
更改您的计划并将i
和squareRoot
设为double
。
我会选择 2 ,因为sqrt()
会返回double
,这可能会导致整数溢出。