| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 731 人关注过本帖
标题:下面的两个程序输出有什么不同,为什么第二个运行之后得不出X的值???
取消只看楼主 加入收藏
crz03128
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-5-22
收藏
 问题点数:0 回复次数:4 
下面的两个程序输出有什么不同,为什么第二个运行之后得不出X的值???
程序一较复杂 可运行~~
#include<stdio.h>
#include<math.h>
float  f(float x);
float ss(float x0,float h,int n);               
float rf(float a,float b);
float a,b,x;
int j;
int main()
{    
    float x0,h;
    int n;
    printf("please input x0 , h , n:\n");
    scanf("%f,%f,%d",&x0,&h,&n);
    ss(x0,h,n);
    printf("方程x*x*x-x-1=0的根x:\n");
    x=rf(a,b);
    printf("%f\n",x);
    printf("需要二分的次数为:%d\n",j);
    return 0;
}
float  f(float x)
{
    return x*x*x-x-1;
}
float ss(float x0,float h,int n)
{   int i;
    a=x0;
    b=x0;
    for(i=1;i<=n;i++)
    {      if(f(a)*f(b)<0)
           break;
        a=a-h;
    }
    for(i=1;i<=n;i++)
    {      
        if(f(a)*f(b)<0)
            break;
          b=b+h;
    }
    if(a==x0)
    {   a=b-h;
        printf("a,b的值为:");
         printf("a=%f,b=%f\n",a,b);
    }
    else
    {
        b=a+h;
        printf("a,b的值为:");
         printf("a=%f,b=%f\n",a,b);
    }
    return 0;
}
float rf(float a,float b)
{   j=0;
    while(fabs(b-a)>=0.001)
    {     
          j++;
          if (f((a+b)/2)==0)
             return (a+b)/2;
          if (f((a+b)/2)*f(a)<0)
             b=(a+b)/2;
          if (f((a+b)/2)*f(b)<0)
             a=(a+b)/2;
    }
    return (a+b)/2;
}
程序二是程序一的简化:具体问题是运行后输入a,b的值后就停下来了,没有算出x的值
#include<stdio.h>
#include<math.h>
int j;
float a,b,x;
float f(float x);
float rf(float a,float b);
int main()
{
   printf("请输入函数的区间a,b的值:\n");
   scanf("%f,%f",&a,&b);
   
   printf("方程x*x*x-x-1的根x: \n");
   x=rf(a,b);
   
}

float f(float x)
{
    return x*x*x-x-1;
}
float rf(float a,float b)
{    j=0;
  while(fabs(b-a)>=0.01)
  {
      j++;
      if (f((a+b)/2)==0)
          return (a+b)/2;
      if (f((a+b)/2)*f(a)<0)
          b=(a+b)/2;
      if (f((a+b)/2)*f(a)>0)
          a=(a+b)/2;
  }
    return (a+b)/2;
} 

[[it] 本帖最后由 crz03128 于 2008-6-17 21:05 编辑 [/it]]
搜索更多相关主题的帖子: 输出 运行 
2008-06-17 21:02
crz03128
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-5-22
收藏
得分:0 
谢谢
我也是这样改的
可为什么第一个就能运行呢?可以解释一下吧

老师领进门,成长靠自己+虚心
2008-06-17 21:16
crz03128
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-5-22
收藏
得分:0 
帮帮忙,在线等.....

老师领进门,成长靠自己+虚心
2008-06-17 21:37
crz03128
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-5-22
收藏
得分:0 
试过了看不出

老师领进门,成长靠自己+虚心
2008-06-17 22:00
crz03128
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-5-22
收藏
得分:0 
试过了看不出

老师领进门,成长靠自己+虚心
2008-06-18 10:12
快速回复:下面的两个程序输出有什么不同,为什么第二个运行之后得不出X的值?? ...
数据加载中...
 
   



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

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