| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 783 人关注过本帖, 1 人收藏
标题:函数嵌套调用的请教!
取消只看楼主 加入收藏
糖果铺满
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-2-7
结帖率:100%
收藏(1)
 问题点数:0 回复次数:2 
函数嵌套调用的请教!
#include<stdio.h>
#include<math.h>
float f(float x)
{
    float y;
    y=(x*(x-5)+6)*x-80;
    return (y);
}
float xpoint(float x1,float x2)
{
    float y;
    y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
    return (y);
}
float root(float x1,float x2)
{
    float x,y1,y2;
    y1=f(x1);
    x=xpoint(x1,x2);
    y2=f(x2);
    while(fabs(f(x)>=0.0000001))
    {
       if(f(x)*f(x1)>0)x1=x;
       if(f(x)*f(x2)>0)x2=x;
    }
    return(x);
}
void main()
{
    float x1,x2,y1,y2,x;
    printf("please input x1,x2=");
    scanf("%f,%f",&x1,&x2);
    y1=f(x1);
    y2=f(x2);
    if(y1*y2>0)x=root(x1,x2);
    printf("Your answer is %d\n",x);

}
   

执行不了啊。。。编译时没有错误。。。但是执行不了。。求教!
搜索更多相关主题的帖子: 函数 嵌套 
2010-02-18 17:36
糖果铺满
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-2-7
收藏
得分:0 
回复 3楼 heartnheart
题目巨长,讲得很纠结。。但大体上就是求y=(x*(x-5)+6)*x-80;这个方程的跟。用截弦法~
2010-02-19 00:44
糖果铺满
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-2-7
收藏
得分:0 
回复 5楼 heartnheart
照你这样修改了,能执行了,但是答案是错误的啊。。。
比如输入2,6
答案应该是5.但是输出地结果是无解~

我又修改了一下:
#include<stdio.h>

#include<math.h>

float f(float x)

{

       float y;

              y=(x*(x-5)+6)*x-80;

       return(y);

}

float xpoint(float x1,float x2)

{

  float x;

  x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));

  return (x);

}

float root(float x1,float x2)

{

    float x,y,y1;

       y=f(x);

       y1=f(x1);

       while(fabs(y)<0.0001)

    {if(y*y1>0)x=x1,y1=y;

       else x=x2;}

         return(x);

}

void main()

{

       float x1,x2,m,n;

       printf("please input x1,x2=");

       scanf("%f%f",&x1,&x2);

       m=xpoint(x1,x2);

       n=root(x1,x2);

    if (f(x1)*f(x2)<0)printf("Your answer is:%8.4f\n",m);

     else if (f(x1)*f(x2)>0)printf("Your answer is:%8.4f\n",n);

                else printf("无解!\n");

}


答案也是无解。。不过我觉得我的答案和标准答案是一个意思诶。。。标准答案如下::
#include<stdio.h>
#include<math.h>
float f(float x)
{
    float y;
        y=(x*(x-5)+6)*x-80;
    return(y);
}
float xpoint(float x1,float x2)
{
  float y;
  y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
  return (y);
}
float root(float x1,float x2)
{
    float x,y,y1;
    y1=f(x1);
    do
    {
        x=xpoint(x1,x2);
        y=f(x);
        if(y*y1>0)
        {
            x=x1;
            y1=y;
        }
    else
        x=x2;
    }while(fabs(y)>=0.0001);
      return(x);
}
void main()
{
    float x1,x2,f1,f2,x;
    do
    {
        printf("input x1,x2:\n");
        scanf("%f,%f",&x1,&x2);
        f1=f(x1);
        f2=f(x2);
    }
    while(f1*f2>=0);
    x=root(x1,x2);
    printf("A root of equation is%8.4f\n",x);
}


不过我检验了一下……标准答案好像……也不怎么对~


我不晓得要怎么搞了~

2010-02-19 16:43
快速回复:函数嵌套调用的请教!
数据加载中...
 
   



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

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