#include <stdio.h>
#include <cs50.h>
#include <unistd.h>
#include <math.h>
void rationalSquareRoots(void);
int main(void) {
rationalSquareRoots();
}
void rationalSquareRoots(void) {
for(float i = 0; ; i++) {
if(sqrt(i) % 1 == 0) {
printf("%f\n", i);
}
sleep(1);
}
}
我在尝试编写一个程序时遇到了以下问题,该程序打印出所有具有有理平方根的数字(好吧,我猜所有数字都达到溢出点)。
14:19: error: invalid operands to binary expression ('double' and 'int')
while(sqrt(i) % 1 == 0) {
问题似乎出在 % 运算符上? if
语句不支持它吗?解决方案是什么?
最佳答案
%
运算符仅用于整数之间的除法。
要计算浮点除法的余数,您应该使用 fmod()
功能。
使用这个函数,条件应该是fmod(sqrt(i), 1) == 0
。
https://stackoverflow.com/questions/72914589/