编程计算1-1/3+1/5-1/7+…, 直到最后一项小于10e-4。 (已知正确的运行结果为:sum=0.785349) 下面程序中存在比较隐蔽的错误, 请通过分析和调试程序,发现并改正程序中的错误。 要求改正后的程序仍然用while结构实现。 注意:将修改后的完整的源程序写在答题区内。 对于没有错误的语句,请不要修改, 修改原本正确的语句也要扣分。 当且仅当错误全部改正,且程序运行结果调试正确, 才得分,如果只改正了部分错误,则不加分。
| #include main() { float sum = 0, term = 1, ; int n = 1, sign = 1;
while (fabs(term) >= 1e-4); { sum = sum + term; sign = -sign; n = n + 2; term = sign / n; }
printf("sum=%fn",sum); } |
我觉得这道题最重要的是对于数据类型的考察,起初我以为是while里面的语句逻辑顺序有问题,试了好几次结果都不正确。后来经过查询我发现是n的类型定义错了,原题中term是float型,但是sign/n是int型,因此前后类型不匹配。正确修改结果如下:
| #include while (fabs(term) >= 1e-4) printf("sum=%fn",sum); |



