| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1262 人关注过本帖
标题:作业上遇到的一个问题,望帮忙看一下
取消只看楼主 加入收藏
别说我帅
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-14
收藏
 问题点数:0 回复次数:6 
作业上遇到的一个问题,望帮忙看一下

题目: 用 C 语言编写一个程序,完成以下功能:

接收一个正整数 n,当 n 为偶数时,计算 1/2+1/4+...+1/n 的值;当 n 为奇数时,计算 1/1+1/3+...+1/n 的值(上述两个计算过程通过自定义函数完成);并将结果通过屏幕输出。

具体要求如下: 1、在主程序中,先给出如下提示:“请输入一个正整数:”,按照要求输入一个正整数。 断这个正整数是奇数还是偶数,若是奇数则调用函数 addOdd 求和,若是偶数则调用函数 addEven 求和. 2、定义并编写 float addOdd(int n) 函数和 float addEven(int n) 函数; 编写 addOdd 函数实现计算“1/1+1/3+...+1/n”并返回结果; 编写 addEven 函数实现计算“1/2+1/4+...+1/n”并返回结果。 3、按要求打印出最后的结果:输出加法的公式,加数最多显示前五项和最后一项,中间如果有省略要加用“...”连接;并且结果保留 3 位小数。如输入 100 时,输出结果是: 1/2+1/4+1/6+1/8+1/10+...+1/100=2.250 4、程序提示“是否继续输入(y/n)?”,若输入的是 y 或 Y 则继续输入下一个正整数,重复上述操作,否则退出程序 5、在实现功能的同时,要求注意编程规范,程序逻辑分明,书写有缩进,对程序进行有效的注释 ============================================= 我写的代码: #include <stdio.h> float addOdd(int n) { float sum=0; for (int i=1;i<=n;i++) sum=sum+1; i++; return sum; } float addEven(int n) { float sum=0; for (int i=0;i<=n;i++) sum=sum+n; i++; return sum; } void main() { int num,ctr; do { printf("请输入一个正整数:"); scanf("%d",&num); if (num%2==0) { //这里不会 } else { //这里不会 } printf("是否继续输入(y/n)?"); scanf(" %c",&ctr); }while(ctr=='y' || ctr=='Y'); } ===================================== 望朋友们帮帮忙!~先谢谢了!

搜索更多相关主题的帖子: 作业 
2004-10-14 00:05
别说我帅
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-14
收藏
得分:0 

goto a ; 这句话,什么意思啊!~

我好象没学过

2004-10-14 19:46
别说我帅
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-14
收藏
得分:0 
他输出要求这样的:1/2+1/4+1/6+1/8+1/10+...+1/100=2.250
输入什么数字,就到那里停止!
2004-10-14 20:00
别说我帅
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-14
收藏
得分:0 
我重新写了一下:
#include &lt;stdio.h&gt;
float addOdd(int n)
{
    float Oddsum=0;
 for (int i=1;i&lt;=n;i+=2)
     Oddsum=Oddsum+1/n;
 return Oddsum;
}
float addEven(int n)
{
     float Evensum=0;
  for (int i=2;i&lt;=n;i+=2)
   Evensum=Evensum+1/n;
  return Evensum;
}
void main()
{   int num;
    char ctr;
    do
 {
    printf("请输入一个正整数:");
    scanf("%d",&amp;num);
    if (num%2==0)
    {
     printf("%.3f\n",addOdd(num));
    }
       else
    {
     printf("%.3f\n",addEven(num));
    }   
       printf("是否继续输入(y/n)?");
    scanf(" %c",&amp;ctr);
 }while(ctr=='y' || ctr=='Y');
}
但是每次不管输入什么数字,每次结果都是输出0.000
帮忙看看问题出在那了!~
2004-10-14 20:17
别说我帅
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-14
收藏
得分:0 
输出结果就是达不到他的要求:按要求打印出最后的结果:输出加法的公式,加数最多显示前五项和最后一项,中间如果有省略要加用“...”连接;并且结果保留 3 位小数。如输入 100 时,输出结果是:
1/2+1/4+1/6+1/8+1/10+...+1/100=2.250
2004-10-14 20:25
别说我帅
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-14
收藏
得分:0 
谢谢楼上的这位朋友!~
但是i 改了float 型,结果还是输出是:0.000
还有要按他要求这样输出,我没办法实现啊!~麻烦你再解释一下好吗?
2004-10-15 21:03
别说我帅
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-14
收藏
得分:0 
谢谢斑竹!~运行成功了!~
真想不到是用switch做,哎,做这个东西思路很重要啊,我死也没想到用switch就可以实现了,还是题目做的太少了
谢谢斑竹,谢谢帮助我的所有朋友!~
2004-10-15 23:39
快速回复:作业上遇到的一个问题,望帮忙看一下
数据加载中...
 
   



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

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