标题:我做了一个晚上,还是想不出问题所在,有能解决的,给我个提示
只看楼主
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
结帖率:100%
已结贴  问题点数:10 回复次数:32 
我做了一个晚上,还是想不出问题所在,有能解决的,给我个提示
#include<stdio.h>
#include<math.h>
int main(void)
 {
     double x0,x1,eps,m,n,a,f();
     

    printf("please input x0=\n");
     scanf("%lf",&x0);
     
    printf("please input eps=\n");
     scanf("%lf",&eps);
 
    printf("please input m=\n");
     scanf("%lf",&m);
 
    n=0;
     do
     {
         x1=f(x0);
         if(fabs(x1-x0)>m)
         {
             printf("迭代失败,程序终止\n");
             return 0;
         }
         a=x0
         x0=x1;
         n++;
     }
     while((x0-a)>eps);
     printf("x0=%lf,n=%lf",x0,n);  
     return 0;
     
 }
 double f(double x)
 {           
     double y;
     y=0.5*log(4-x);
     return y;
 }
/*为什么,每次输入x0=1,答案只能迭代到1次而已,这个问题的解要迭代到第八次*/
搜索更多相关主题的帖子: include return eps please 
2012-10-23 21:50
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
得分:0 
同样的问题,我在这个论坛问了三天了,就是没人能给解决

菜鸟也疯狂
2012-10-23 21:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:1 
平时教人做跟踪排错的时候,有些人不看、不学、不屑,是这样的了。

授人以渔,不授人以鱼。
2012-10-23 21:58
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
得分:0 
我努力自己想了很久,想不出来,总想解决

菜鸟也疯狂
2012-10-23 22:00
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
得分:0 
你是版主,能不能针对这个问题,提示一下,我需要的是问题的解决办法,然后才是你们的建议

菜鸟也疯狂
2012-10-23 22:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
提示就是你跟踪程序的流程,我给你排错,我也是这样做,我干嘛替你做?

授人以渔,不授人以鱼。
2012-10-23 22:04
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
得分:0 
你看了程序的错误所在,直接指出来不可以么,(提示就是你跟踪程序的流程,我给你排错)不好意思,我刚才是真不明白你意思,到现在我也没明白这句话的意思

菜鸟也疯狂
2012-10-23 22:08
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
你觉得程序运行时出现的问题都能在代码上看出来?哪来的这种说法?

授人以渔,不授人以鱼。
2012-10-23 22:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
凡是人机交互输入的数据,都要检验输入的有效性和正确性,这是我反复强调过的。你要排错,首先就应该在代码中在每接收一个数据输入的时候,就把输入的数据打印出来检验是不是刚才输入的数据,这种方法我说过无数次,可听的人从来没几个,很基本的排错手段,你学编程,这东西是必须要学会的。既然输入x0=1程序只循环了一次,那么就在循环中检查退出循环的条件到底是什么导致它成立,那个不等式判断,涉及的三个数据,在if之前就打印出来看看,然后再输出一下fabs()的值到底是多少,跟m比较是怎么回事。这样查下来,不就可以了么。这些都是基本手段啊,不要光学代码、算法,不学排错、调试啊!!!

授人以渔,不授人以鱼。
2012-10-23 22:19
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
得分:0 
高手啊,谢谢你,因为每个人学习的时候都不一样,出现的问题也不一样,但是只有懂了的人知道问题的所在,没办法,不懂的人要学习的很多,慢慢向你们学习,吸取教训吧

菜鸟也疯狂
2012-10-23 22:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-383912-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.295875 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved