当前位置 : 主页 > 编程语言 > c语言 >

改错_循环_难_斐波拉切数列

来源:互联网 收集:自由互联 发布时间:2023-09-07
一、题目 输出Fabonacci数列的前20项 ,要求变量类型定义成浮点型,输出时只输出整数部分。以下程序只允许修改两行。 #include "stdio.h"int main(){ int i; float f1=1,f2=1,f3; for(i=1;i=20;i++) { f3=f1

一、题目

       输出Fabonacci数列的前20项 ,要求变量类型定义成浮点型,输出时只输出整数部分。以下程序只允许修改两行。

#include "stdio.h"
int main()
{
       int i;
       float f1=1,f2=1,f3;
       for(i=1;i<=20;i++)
       {
              f3=f1+f2;
              f2=f1;
              f3=f2;
              printf("%f",f1);
       }
       printf("\n");
       return 0;
}

二、分析

1、初步分析

       根据题意,只输出整数部分,则肯定要修改打印语句。

       根据流程,先求f3,然后更新f1和f2,因此,第9行和第10行应该都有错误。

       综上,则需要修改3行。但是题目只能修改2行,因此需要进一步分析。

2、确定错误语句

       根据程序的功能分析,程序计算f3后,必须更新f1和f2,同时因为是更新后再打印,故需要打印的是f2-f1。即假设f1=2,f2=3;则f3=2+3=5。更新后f1=3,f2=5;,应该打印原来的f1即2。

       所以第9行有错,在该行实现f2正确更新;第11行有错,在该行即要实现更新f1,还要实现正确的打印。

       第10行其实为无效语句。

3、参考答案

       第9行                 f2=f3;

       第11行               printf("%.0f ",f2-(f1=f2-f1));

【出处:响水网页开发公司 http://www.1234xp.com/xiangshui.html 欢迎留下您的宝贵建议】
上一篇:2008年湖南省对口高考真题
下一篇:没有了
网友评论