声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2293|回复: 2

[C/C++] HELP! 程序找错

[复制链接]
发表于 2010-3-14 17:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
一个一次和二次插值的程序,能通过编译,但是不管输入什么入口参数,得到的z总是0.000000.不知道为什么,希望大家帮忙。



#include"stdlib.h"
#include"stdio.h"
main()
{
      int k;
      float x,z;
      table();               输出表格
      printf("enter x please\n");
      scanf("%f",&x);
      loop:  printf("linear interpolation or quadratic interpolation?(1 or 2?)\n");
      scanf("%d",&k);
      switch(k)
               {
                 case 1: linear();break;    一次插值
                 case 2: quadratic();break;    二次插值
                 defult: printf("sorry,wrong input!\n");
                        goto loop;
               }
      printf("z=%f\n",z);
      system("pause");
}
table()
{
       int i,j;
       float table[2][5]={.4,.5,.6,.7,.8,-0.916291,-.693147,-0.510826,-0.356675,-0.223144};
       printf("  x ");
       for(i=0;i<=1;i++)
          { for(j=0;j<=4;j++)printf("%10f",table[j]);
           0==i? printf("\nlnx "):printf("\n");
          }
}
linear()
{      float x0,y0,x1,y1,x2,y2,l0,l1,l2,x,ans;
        printf("please enter parameter x0,y0,x1,y1\n");
        scanf("%f%f%f%f",&x0,&y0,&x1,&y1);
        l0=(x-x1)/(x0-x1);
        l1=(x-x0)/(x1-x0);
        ans=y0*l0+y1*l1;
        return(ans);
}
quadratic()
{      float x0,y0,x1,y1,x2,y2,l0,l1,l2,x,ans;
           printf("please enter parameter x0,y0,x1,y1,x2,y2\n");
           scanf("%f%f%f%f%f%f",&x0,&y0,&x1,&y1,&x2,&y2);
           l0=((x-x1)*(x-x2))/((x0-x1)*(x0-x2));
           l1=((x-x0)*(x-x2))/((x1-x0)*(x1-x2));
           l2=((x-x0)*(x-x1))/((x2-x0)*(x2-x1));
           ans=y0*l0+y1*l1+y2*l2;
           return(ans);
}
回复
分享到:

使用道具 举报

发表于 2010-4-2 13:40 | 显示全部楼层
编成还是要自己查错,否则就没有乐趣了。呵呵。:lol
发表于 2010-12-29 23:17 | 显示全部楼层
楼主你的这段代码,貌似有下面三个主要的问题:
1)每个函数都没有返回值类型:对C来说,如果返回值是int也就罢了,但是从程序来看,linear()和qudratic()应该是float。我想楼主你可能是在拷贝时漏了吧。
2)float x0,y0,x1,y1,x2,y2,l0,l1,l2,x,ans;
这句声明应该放在所有函数外,这样才能让上述变量成为全局变量,否则有些语句恐怕说不通。
3)z在声明后从未进行赋值,这是造成输出为零的直接原因。对于这种没有初始化也没赋过值的变量,理论上会出现任意值。之所以会出现零值,是因为这块内存块上原先恰是一个数量级很小的数。

最后:这么久了,楼主是不是早就解决了呢……

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-27 21:27 , Processed in 0.090726 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表