#include <stdio.h>
#include <math.h>
int main() {
float root;
int i=1,sum;
do {
sum = 2*i - 1;
printf("\t%d\n",sum);
i *= 5 / 3;
} while (sum <= 1.5);
root = sqrt(i) ;
printf("\n%.3f",root);
return 0;
}
它只重复1。
我试着得到1、3、7或15这样的数字,但我只得到了1的重复。
3条答案
按热度按时间tcomlyy61#
如果
i
真的应该是5/3的幂,那么它需要是double
,而不是int
。(使用float
没有太大意义,因此也将root
设置为double
。既然你想把它和1.5进行比较,那么
sum
也应该是一个double
。但是sum
不是一个总和!也许你是说sum += 2*i - 1;
?在这种情况下,sum
需要初始化为零。然后你不显示总和?
你想计算什么?
dy1byipe2#
5/3 = 1.6666666667。然而,i和5/3都是整数类型,所以它只显示该数字的整数部分1,而不是1.6666666667。要解决这个问题,请将i设置为float或double,并将5/3替换为5.0/3.0
bakd9h0s3#
您的计算是浮点型的,因此您应该将变量声明为浮点型
double
。一个可能的输出将是:
OTOH我不确定这个程序应该做什么。