| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12687 人关注过本帖
标题:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时 ...
只看楼主 加入收藏
zc1992312
Rank: 2
等 级:论坛游民
帖 子:43
专家分:12
注 册:2013-3-20
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:13 
编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n。
为什么结果是0呢       

#include <stdio.h>
void h1 (int a);
void h2 (int b);
int main()
{
    int n, i;
    printf ("请输入n的值");
    scanf ("%d",&n);

    if (n % 2 == 0)
    {
        h1 (n);
    }
   
    if (n % 2 == 1)
    {
        h2 (n);
    }

    return 0;
}

void h1 (int a)
{
    int i;
    float sum = 0.0;
    for (i = a; i < 0; i -= 2)
    {
        sum += 1 / a;
    }
    printf ("1/2+1/4+...+1/n的值为:%.1f \n", sum);
}

void h2 (int b)
{
    int j;
    float add=0.0;
    for (j = b; j < 0; j -= 2)
    {
        add += 1 / b;
    }
    printf ("1/1+1/3+...+1/n的值为:%.1f \n", add);
}
搜索更多相关主题的帖子: include return 
2013-06-07 00:10
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:20 
程序代码:
#include <stdio.h>
void h1 (int a);
void h2 (int b);
int main()
{
    int n, i;
    printf ("请输入n的值");
    scanf ("%d",&n);

    if (n % 2 == 0)
    {
        h1 (n);
    }
    
    if (n % 2 == 1)
    {
        h2 (n);
    }

    return 0;
}

void h1 (int a)
{
    int i;
    float sum = 0.0;
    for (i = a; i >= 0; i -= 2)//判断条件出错!
    {
        sum += 1.0 / a;
    }
    printf ("1/2+1/4+...+1/n的值为:%.1f \n", sum);
}

void h2 (int b)
{
    int j;
    float add=0.0;
    for (j = b; j >= 0; j -= 2)//判断条件出错!
    {
        add += 1.0 / b;
    }
    printf ("1/1+1/3+...+1/n的值为:%.1f \n", add);
}

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-06-07 00:19
zc1992312
Rank: 2
等 级:论坛游民
帖 子:43
专家分:12
注 册:2013-3-20
收藏
得分:0 
回复 2楼 我叫沃恩
为什么我调试之后还是0呢  
2013-06-07 00:25
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
不会吧?
图片附件: 游客没有浏览图片的权限,请 登录注册
这是我运行的结果!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-06-07 00:29
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
sum += 1.0 / a;
add += 1.0 / b;这两个语句也要改下!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-06-07 00:30
zc1992312
Rank: 2
等 级:论坛游民
帖 子:43
专家分:12
注 册:2013-3-20
收藏
得分:0 
回复 4楼 我叫沃恩
找到错误了   非常谢谢  
  为什么是1.0/a     
2013-06-07 00:33
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
1.0/a表示它是浮点运算,否则1/a是整形运算!运算结果为0!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-06-07 00:35
zc1992312
Rank: 2
等 级:论坛游民
帖 子:43
专家分:12
注 册:2013-3-20
收藏
得分:0 
回复 7楼 我叫沃恩
   明白了  谢谢啦
2013-06-07 00:36
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
#include <stdio.h>
 void h1 (int a);
 void h2 (int b);
 int main()
 {
     int n;
     printf ("请输入n的值");
     scanf ("%d",&n);
 
    if (n % 2 == 0)
     {
         h1 (n);
     }
     
    if (n % 2 == 1)
     {
         h2 (n);
     }
 
    return 0;
 }
 
void h1 (int a)
 {
     int i;
     double sum = 0.0;
     for (i =2; i<a; i+=2)
     {
         sum += 1.0/i;
     }
     printf ("1/2+1/4+...+1/n的值为:%lf \n", sum);
 }
 
void h2 (int b)
 {
     int j;
     double add=0.0;
     for (j = 1; j <b; j+=2)
     {
         add += 1.0/j;
     }
     printf ("1/1+1/3+...+1/n的值为:%lf \n", add);
 } 楼主注意两个数之间的相除,如果想要的结果是double类型的,那分母就必须是带有小数点
比如你上面的sum+=1/i,如果你不在分母上加上小数点,得到的结果就是0的,必须是1.0而不是1,

思考赐予新生,时间在于定义
2013-06-07 00:37
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
那么快就结贴了,都怪我的网络不好,呜呜呜~~~~~~~

思考赐予新生,时间在于定义
2013-06-07 00:39
快速回复:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇 ...
数据加载中...
 
   



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

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