PTA(2)

1.实验4-1-9 猜数字游戏 (15 分)

猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。

输入格式:

输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。

输出格式:

在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。

输入样例:

58 4
70
50
56
58
60
-2

输出样例:

Too big
Too small
Too small
Good Guess!
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int s,n,count=0,a;
    scanf("%d %d",&s,&n);
    for(int i=0; ;i++)
    {
        scanf("%d",&a);//读取一个数字开始证明已经进行了一次循环
    count++;
    if(count>n)
    {
        printf("Game Over\n");//当前次数超过给定次数,退出循环
        exit(0);
    }
    if(a<0)
    {
        printf("Game Over\n");//猜的数字不符合要求,退出循环
        exit(0);
    }
    if(a>s)
        printf("Too big\n");
    else if(a<s)
        printf("Too small\n");
    else
        break;//找到了这个数字
   }
  if(count == 1)
      printf("Bingo!\n");
else if( count>1&&count<=3)
    printf("Lucky You!\n");
else if(count>3&&count<=n)
    printf("Good Guess!\n");
return 0;
}

2.

实验4-1-5 韩信点兵 (10 分)

在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:

  • 按从1至5报数,记下最末一个士兵报的数为1;
  • 再按从1至6报数,记下最末一个士兵报的数为5;
  • 再按从1至7报数,记下最末一个士兵报的数为4;
  • 最后按从1至11报数,最末一个士兵报的数为10;

请编写程序计算韩信至少有多少兵。

输入格式:

本题无输入

输出格式:

输出韩信至少拥有的士兵人数。(至少二字~不设i的循环终值)

#include<stdio.h>
int main()
{
    int i;
    for(i=1; ;i++)
    {
        if((i-1)%5==0)
            if((i-5)%6==0)
                if((i-4)%7==0)
                    if((i-10)%11==0)
                        break;
    }
    printf("%d",i);
    return 0;
}

3.

实验4-1-6 求分数序列前N项和 (15 分)

本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。

输入样例:

20

输出样例:

32.66
#include<stdio.h>
int main()
{
    int N,i;
    double a=2,b=1,t,sum=0;
    t=b;
    scanf("%d",&N);
    for(i=1;i<=N;i++)
    {
        sum+=a/b;//a只代表分子,b只代表分母
       b=a;//原来的分子变为新的分母
        a=a+t;//新的分子是原来的分子加上分母
      t=b;
        
    }
    printf("%.2f",sum);
    return 0;
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值