A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小七 中级黑马   /  2014-6-7 22:35  /  1366 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:
使用以下的公式计算PI;
             PI = 4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13.........)
编写程序,显示 4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13.........)的结果。在程序中用1.0代替1。

这道题目我想问的不是问最后打印的结果数答案是多少
而是问是如何把
4  * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13.........)
以一种循环形式打印出题目出来。
例如:我输入个4
则把 4  * (1 - 1/3 + 1/5 - 1/7)打印出来。
      我输入个6
则把 4  * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11)打印出来。
这其中的4和6指的是括号内相加减的分数个数。

这道题我突然想这样做但不知道如何下手,所以上来请教给位大神。

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1 神马都是浮云

查看全部评分

9 个回复

倒序浏览
你要用java写还是用c写?
回复 使用道具 举报
  1. package com.guoguo;

  2. import java.util.Scanner;

  3. public class 打印公式 {
  4.         //4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13.........)
  5.         public static void main(String[] args) {
  6.                
  7.                 Scanner cin = new Scanner(System.in);
  8.                 int n = cin.nextInt();
  9.                 if(n==1){
  10.                         System.out.println("4 * (1)");
  11.                 }
  12.                 else{
  13.                         System.out.print("4 * (1");
  14.                         for(int i=1;i<n;i++){
  15.                                 if(i%2==1)
  16.                                 System.out.print(" - ");
  17.                                 else
  18.                                 System.out.print(" + ");
  19.                                 System.out.print("1/"+(i*2+1));
  20.                         }
  21.                         System.out.println(")");
  22.                 }
  23.         }
  24. }
复制代码
回复 使用道具 举报
  1. package com.guoguo;

  2. import java.util.Scanner;

  3. public class 打印公式 {
  4.         //4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13.........)
  5.         public static void main(String[] args) {
  6.                
  7.                 Scanner cin = new Scanner(System.in);
  8.                 int n = cin.nextInt();
  9.                 if(n==1){
  10.                         System.out.println("4 * (1)");
  11.                 }
  12.                 else{
  13.                         System.out.print("4 * (1");
  14.                         for(int i=1;i<n;i++){
  15.                                 if(i%2==1)
  16.                                 System.out.print(" - ");
  17.                                 else
  18.                                 System.out.print(" + ");
  19.                                 System.out.print("1/"+(i*2+1));
  20.                         }
  21.                         System.out.println(")");
  22.                 }
  23.         }
  24. }
复制代码
回复 使用道具 举报
额~~~~~~~~~~~~~~~~~~~~
回复 使用道具 举报
  1. package itheima;

  2. /*
  3. 题目:
  4. 使用以下的公式计算PI;
  5.      PI = 4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13.........)
  6. 编写程序,显示 4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13.........)的结果。
  7. 在程序中用1.0代替1。

  8. 这道题目我想问的不是问最后打印的结果数答案是多少
  9. 而是问是如何把
  10. 4  * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13.........)
  11. 以一种循环形式打印出题目出来。
  12. 例如:我输入个4
  13. 则把 4  * (1 - 1/3 + 1/5 - 1/7)打印出来。
  14.       我输入个6
  15. 则把 4  * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11)打印出来。
  16. 这其中的4和6指的是括号内相加减的分数个数。

  17. */

  18. public class ForTest {

  19.         public static void main(String[] args) {
  20.                 // TODO 自动生成的方法存根
  21.                
  22.                
  23.                 /*
  24.                  * 通过分析可以看出来运算的元素有一个规律:
  25.                  *         (-1)^(n-1) / (2n-1)         n>=1
  26.                  *
  27.                  * 在Java中幂用Math.pow(基数,指数)表示
  28.                  * 接下来就很简单了
  29.                  *
  30.                  * */
  31.                
  32.                 //你输入的数字,在这我就不做输入操作了
  33.                 int n = 3;
  34.                 //记录结果的变量
  35.                 double sum = 0;
  36.                
  37.                 for(int i = 1; i<=n; i++)
  38.                 {
  39.                         sum += Math.pow(-1, i-1) /(2*i - 1.0 ) * 4;
  40.                 }

  41.                 System.out.println("sum="+sum);
  42.                

  43.         }

  44. }
复制代码
回复 使用道具 举报
谢谢大家~昨天我以为泰晚没人回答~就睡了过去~今天早上才看到
回复 使用道具 举报

谢谢您~我昨天看到11点了以为没人了~就去睡觉~实在不好意思昨天晚上没有回复到您~您给出的代码让我很满意。
回复 使用道具 举报

这位兄台谢谢您的帮助,可是我最想要的不是你这个,不过谢谢您给出的代码,通过你给的代码和我的代码对照对我帮助也很大。
回复 使用道具 举报
小七 发表于 2014-6-8 07:35
这位兄台谢谢您的帮助,可是我最想要的不是你这个,不过谢谢您给出的代码,通过你给的代码和我的代码对照 ...

又看了一遍题目,我是理解错了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马