| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 607 人关注过本帖
标题:这个程序哪里错了?求指教
只看楼主 加入收藏
蓝莓
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-12-15
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:10 
这个程序哪里错了?求指教
#include "stdio.h"
 double p(double i,double s,double t)
 {
     s=0.0;
     t=1.0;
     for(i=1;i<=99;i++)
      {
        s=s+t/i;
        i+=2;
        t=-t;
      }
      
 }

 void main()
 {
     double j,b,c,ai;
     {
         ai=p(j,b,c);
     }
     printf("π=%f\n",b*4);
 }

这个算出的结果是π=-370238525397871320000000000000000000
但是我要算的是π的值,哪里出错了呢?
搜索更多相关主题的帖子: include double 
2014-12-15 21:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你的p()函数都没有返回值,你预计ai=能得到什么结果?

授人以渔,不授人以鱼。
2014-12-15 22:02
蓝莓
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-12-15
收藏
得分:0 
回复 2楼 TonyDeng
单个return不是可以省略吗?
如果要return的话,那return要返回p还是ai?可是这样写怎么运行都是错的,return是要放在【1】还是【2】?可是如果用p或者ai,不管这两个地方怎么放都是错的。还是说return是要放在主函数里?
#include "stdio.h"
 double p(double i,double s,double t)
 {
     s=0.0;
     t=1.0;
     for(i=1;i<=99;i++)
     {
            s=s+t/i;      
            i+=2;
            t=-t;
         }return();【1】     
}【2】
   

 void main()
 {
     double j,b,c,ai;
     {
         ai=p(j,b,c);
     }
     printf("π=%f\n",b*4);
 }
2014-12-15 22:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
既然你设计ai需要从函数p()取得值,那么函数p()就必须有返回值,在【1】处return s;

授人以渔,不授人以鱼。
2014-12-15 22:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
虽然你这个程序设计的p()函数是多余的,传入的参数也完全不起作用,但现在问题不在这里,故搁置不论。我只解答你为什么没有返回值造成的问题。

授人以渔,不授人以鱼。
2014-12-15 22:48
蓝莓
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-12-15
收藏
得分:0 
回复 5楼 TonyDeng
可是加了return s;还是不对,结果还是那个错误的值……
因为刚刚开始学函数,老师让我们把以前的方程都改成这样有函数和主函数的。
2014-12-15 23:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
计算错误是循环代码错了,for()中已经有i++,在里面又i+=2,你自己测试一下一个循环下来,i变为多少?你不会先不循环99次,循环2至3次,print一下各个变量的值看看效果的么?

授人以渔,不授人以鱼。
2014-12-15 23:11
蓝莓
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-12-15
收藏
得分:0 
回复 7楼 TonyDeng
嗯,这个是我写错了。我原本是用do……while写的,但是后来改成了for……i++写习惯了
但是把i++改成i+=2,再把下面的i+=2删去……结果还是那个错误的值……
而且用do……while算了半天都没算出来,这应该是错的吧,毕竟这个不是很难算的
2014-12-15 23:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我前面已经教你怎么调试查看循环每个变量的变化情况了,用那个方法检查一下自己代码的执行结果是否与公式相符,不对就写到对为止。这总不能让我写给你,直接把代码给你没用的,你不会有收获。你学不会我教你这个方法调试程序,永远别指望学好编程。

授人以渔,不授人以鱼。
2014-12-15 23:39
蓝莓
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-12-15
收藏
得分:0 
回复 9楼 TonyDeng
哦哦,好的
谢谢你的指导⊙▽⊙
2014-12-16 00:02
快速回复:这个程序哪里错了?求指教
数据加载中...
 
   



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

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