29、30、31

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。

2.程序源代码:



#include "stdio.h"
#include "conio.h"
main()
{
  int n,t,number=20;
  float a=2,b=1,s=0;
  for(n=1;n<=number;n++)
  {
    s=s+a/b;
    t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/
  }
  printf("sum is %9.6f\n",s);
  getch();
}

题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
2.程序源代码:


#include "stdio.h"
#include "conio.h"
main()
{
  float n,s=0,t=1;
  for(n=1;n<=20;n++)
  {
    t*=n;
    s+=t;
  }
  printf("1+2!+3!...+20!=%e\n",s);
  getch();
}

题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
2.程序源代码:


#include "stdio.h"
#include "conio.h"
main()
{
  int i;
  int fact();
  for(i=0;i<5;i++)
  printf("\40:%d!=%d\n",i,fact(i));
  getch();
}
int fact(j)
int j;
{
  int sum;
  if(j==0)
    sum=1;
  else
    sum=j*fact(j-1);
  return sum;
}

非常感谢您的详细解释!您所说的是经典的“猜生日”问题,利用二进制的特性,将一个月中的每一天用五组数来表示,再通过一系列的问题来逐步缩小范围,最终猜出生日的日期。这种方法的优点是只需要五个问题就可以确定生日,而且不需要事先准备生日范围的列表,可以适用于各种生日日期。 接下来,我可以为您提供一个Java程序来实现这个问题的解答,如下所示: ```java import java.util.Scanner; public class BirthdayGuessingGame { public static void main(String[] args) { String set1 = " 1 3 5 7\n" + " 9 11 13 15\n" + "17 19 21 23\n" + "25 27 29 31"; String set2 = " 2 3 6 7\n" + "10 11 14 15\n" + "18 19 22 23\n" + "26 27 30 31"; String set3 = " 4 5 6 7\n" + "12 13 14 15\n" + "20 21 22 23\n" + "28 29 30 31"; String set4 = " 8 9 10 11\n" + "12 13 14 15\n" + "24 25 26 27\n" + "28 29 30 31"; String set5 = "16 17 18 19\n" + "20 21 22 23\n" + "24 25 26 27\n" + "28 29 30 31"; int day = 0; Scanner input = new Scanner(System.in); // 第一次提问 System.out.println(set1); System.out.print("Is your birthday in this set? (y/n): "); String answer = input.nextLine(); if (answer.equals("y")) { day += 1; } // 第二次提问 System.out.println(set2); System.out.print("Is your birthday in this set? (y/n): "); answer = input.nextLine(); if (answer.equals("y")) { day += 2; } // 第三次提问 System.out.println(set3); System.out.print("Is your birthday in this set? (y/n): "); answer = input.nextLine(); if (answer.equals("y")) { day += 4; } // 第四次提问 System.out.println(set4); System.out.print("Is your birthday in this set? (y/n): "); answer = input.nextLine(); if (answer.equals("y")) { day += 8; } // 第五次提问 System.out.println(set5); System.out.print("Is your birthday in this set? (y/n): "); answer = input.nextLine(); if (answer.equals("y")) { day += 16; } System.out.println("Your birthday is on the " + day + "th day of the month."); } } ``` 这个程序根据上述方法,通过五次提问,逐步缩小生日日期的范围,最终确定生日的具体日期。您可以在运行程序后,根据提示依次回答问题,程序会根据您的回答来确定生日的日期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值