用C语言编程求(1+2+3+……+100)+(1^2+2^2+……+50^2)+(1/1+1/2+1/3+……+1/10)

运算结果是第一个while的和,为什么?

执行第一个while循环后i的值已经是100了,不满足后2个while循环条件,在循环前重新赋值i=0;追问

我改了之后,又把p定义为实数,为什么最后的结果还是负数,溢出了吗?

追答

计算浮点型结果,那么计算公式中所有变量最好都是浮点型,比如你的r=1.0/i;这里i是整型,r肯定要定义成浮点型,否则计算结果都是0,计算浮点型结果要将i强制转换r=1.0/(float)i;

p定义成int型即可,因为都是2循环都是整型计算,另外两个r定义成2个为好。

参考代码:

温馨提示:答案为网友推荐,仅供参考
相似回答