C语言NOI 1.5 编程基础之循环控制(17~23)

17 斐波那契数列

描述
菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。
给出一个正整数k,要求菲波那契数列中第k个数是多少。

输入
输入一行,包含一个正整数k。(1 <= k <= 46)
输出
输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小
样例输入
19
样例输出
4181

#include<stdio.h>
int main()
{
    int k,i,a1=1,a2=1,a=1;
    scanf("%d",&k);
    for(i=1;i<=k-2;i++)
    {
        a=a1+a2;
        a1=a2;
        a2=a;
    }
    printf("%d",a);
    return 0;
}

18 鸡尾酒疗法

描述
鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于1996年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾 滋病。该疗法的应用可以减少单一用药产生的抗药性,最大限度地抑制病毒的复制,使被破坏的机体免疫功能部分甚至全部恢复,从而延缓病程进展,延长患者生 命,提高生活质量。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式 进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给 出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。

输入
第一行为整数n( 1 < n <= 20);
其余n行每行两个整数,第一个整数是临床实验的总病例数(小于等于10000),第二个疗效有效的病例数。
这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。
输出
有n-1行输出,分别表示对应改进疗法的效果:
如果效果更好,输出better;如果效果更差,输出worse;否则输出same
样例输入
5
125 99
112 89
145 99
99 97
123 98
样例输出
same
worse
better
same

#include<stdio.h>
int main()
{
    int n,i;
    double x,a,b,temp;
    int hh[21]={0};
    scanf("%d",&n);
    scanf("%lf%lf",&a,&b);
    x=100*b/a;
    for(i=1;i<=n-1;i++)
    {
        scanf("%lf",&a);
        scanf("%lf",&b);
        temp=100*b/a;
        if(x-temp>5)
            hh[i]=-1;
        else if(temp-x>5)
            hh[i]=1;
    }
    for(i=1;i<=n-1;i++)
    {
        if(hh[i]==-1)
            printf("worse\n");
        else if(hh[i]==1)
            printf("better\n");
        else printf("same\n");
    }
return 0;
}

19 救援

描述
救生船从大本营出发,营救若干屋顶上的人回到大本营,屋顶数目以及每个屋顶的坐标
和人数都将由输入决定,求出所有人都到达大本营并登陆所用的时间。

在直角坐标系的原点是大本营,救生船每次从大本营出发,救了人之后将人送回大本营。坐标系中的点代表屋顶,每个屋顶由其位置坐标和其上的人数表 示。救生船每次从大本营出发,以速度50 米/分钟驶向下一个屋顶,达到一个屋顶后,救下其上的所有人,每人上船1 分钟,船原路返回,达到大本营,每人下船0.5 分钟。假设原点与任意一个屋顶的连线不穿过其它屋顶。

输入
第一行,一个整数,表示屋顶数n。
接下来依次有n 行输入,每一行上包含两个表示屋顶相对于大本营的平面坐标位置的实数(单位是米)、一个表示人数的整数,数之间以一个空格分
开。
输出
一行,救援需要的总时间,精确到分钟 (向上取整)。
样例输入
1
30 40 3
样例输出
7

#include<stdio.h>
#include<math.h>
int main()
{
    int n,i,sum;
    double x,y,p,l,time=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%lf %lf %lf",&x,&y,&p);
        l=sqrt(x*x+y*y);
        time+=2*l/50+1.5*p;
    }
    sum=time;
    if(sum<time)
        sum++;
    printf("%d",sum);
return 0;
}

20 球弹跳高度的计算

描述
一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。
编程计算气球在第10次落地时,共经过多少米? 第10次反弹多高?

输入
输入一个整数h,表示球的初始高度。
输出
输出包含两行:
第1行:到球第10次落地时,一共经过的米数。
第2行:第10次弹跳的高度。

注意:结果可能是实数,结果用double类型保存。
提示:输出时不需要对精度特殊控制,用cout << ANSWER,或者printf(“%g”, ANSWER)即可。
样例输入
20
样例输出
59.9219
0.0195313

#include<stdio.h>
int main()
{
    double h,sum,i;
    scanf("%lf",&h);
    sum=2*h;
    for(i=1;i<=8;i++)
    {
        h=h/2;
        sum+=h;
    }
    h=h/4;
    printf("%g\n%g",sum,h);
return 0;
}

21 角谷猜想

描述
所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。
程序要求输入一个整数,将经过处理得到1的过程输出来。

输入
一个正整数N(N <= 2,000,000)
输出
从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。如果输入为1,直接输出"End"。
样例输入
5
样例输出
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End
提示
注意计算过程中中间值可能会超过int范围。

#include <stdio.h>
int main()
{
    long int n=0,temp=0;
    scanf("%ld",&n);
    while(n!=1)
    {
        if(n%2!=0)
        {
            temp=n*3+1;
            printf("%ld*3+1=%ld\n",n,temp);
            n=temp;
        }
        else
        {
            temp=n/2;
            printf("%ld/2=%ld\n",n,temp);
            n=temp;
        }
    }
    if(n==1)
    printf("End");
    return 0;

   }

22 津津的储蓄计划

描述
津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。

为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。

例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。

津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。

现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。

输入
包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。
输出
包括一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。
样例输入
样例 #1:
290
230
280
200
300
170
340
50
90
80
200
60

样例 #2:
290
230
280
200
300
170
330
50
90
80
200
60
样例输出
样例 #1:
-7

样例 #2:
1580

#include<stdio.h>
#include<math.h>
int main()
{
    int budget, cash=0, saved=0, temp,i;
    for (i=1; i<=12; i++){
        scanf("%d",&budget);
        cash += 300;
        if (cash < budget){
           printf("-%d",i);
            return 0;
        }
        temp = (cash - budget) / 100 * 100;
        cash -= temp+budget;
        saved += temp;
    }
    printf("%d",cash+(int)(saved*1.2));
    return 0;
}

23 药房管理

描述
随着信息技术的蓬勃发展,医疗信息化已经成为医院建设中必不可少的一部分。计算机可以很好地辅助医院管理医生信息、病人信息、药品信息等海量数据,使工作人员能够从这些机械的工作中解放出来,将更多精力投入真正的医疗过程中,从而极大地提高了医院整体的工作效率。
对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已 知,并且一天之内不会通过进货的方式增加。每天会有很多病人前来取药,每个病人希望取走不同数量的药品。如果病人需要的数量超过了当时的库存量,药房会拒 绝该病人的请求。管理员希望知道每天会有多少病人没有取上药。

输入
共3行
第一行是每天开始时的药品总量m
第二行是这一天取药的人数n(0 < n <= 100)
第三行共有n个数,分别记录了每个病人希望取走的药品数量(按照时间先后的顺序),两数之间以空格分隔
输出
只有1行,为这一天没有取上药品的人数。
样例输入
30
6
10 5 20 6 7 8
样例输出
2

#include<stdio.h>
int main()
{
	int m,n,i,need;
	int x=0;
	scanf("%d",&m);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&need);
		if(need>m)
		{
			x++;
		}
		else
		{
			m-=need;
		}
	}
	 printf("%d",x);
	 return 0;
}

赠送AI画图三张
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
2018/07/20 周五 12:53 354 01求平均年龄.cpp 2018/07/20 周五 12:53 327 02财务管理.cpp 2018/07/20 周五 12:53 357 03均值.cpp 2018/07/20 周五 12:53 375 04求整数的和与平均值.cpp 2018/07/20 周五 12:54 375 05最高的分数.cpp 2018/07/20 周五 12:54 371 06整数序列的元素最大跨度值.cpp 2018/07/20 周五 12:55 430 07奥运奖牌计数.cpp 2018/07/20 周五 12:55 281 08多边形内角和.cpp 2018/07/20 周五 12:55 237 09奇数求和.cpp 2018/07/20 周五 12:56 239 10满足条件的数累加.cpp 2018/07/20 周五 12:56 403 11整数的个数.cpp 2018/07/20 周五 12:56 257 12与指定数字相同的数个数.cpp 2018/07/20 周五 12:56 217 13乘方计算.cpp 2018/07/20 周五 12:57 324 14人口增长问题.cpp 2018/07/20 周五 12:57 307 15银行利息.cpp 2018/07/20 周五 12:57 433 16买房子.cpp 2018/07/20 周五 12:57 260 17斐波那契数列.cpp 2018/07/20 周五 12:58 461 18鸡尾酒疗法.cpp 2018/07/20 周五 12:58 392 19救援.cpp 2018/07/20 周五 12:58 280 20球弹跳高度的计算.cpp 2018/07/20 周五 12:58 450 21角谷猜想.cpp 2018/07/20 周五 12:59 520 22津津的储蓄计划.cpp 2018/07/20 周五 12:59 400 23药房管理.cpp 2018/07/20 周五 12:59 642 24正常血压.cpp 2018/07/20 周五 13:00 453 25求特殊自然数.cpp 2018/07/20 周五 13:00 387 26统计满足条件的4位数个数.cpp 2018/07/20 周五 13:00 244 27级数求和.cpp 2018/07/20 周五 13:00 296 28分离整数的各个数位.cpp 2018/07/20 周五 13:01 443 29数字反转.cpp 2018/07/20 周五 13:01 341 30含k个3的数.cpp 2018/06/10 周日 14:07 545 31开关灯.cpp 2018/07/20 周五 13:01 360 32求分数序列和.cpp 2018/07/20 周五 13:01 324 33计算分数加减表达式的值.cpp 2018/07/20 周五 13:02 220 34求阶乘和.cpp 2018/07/20 周五 13:02 304 35求出e的值.cpp 2018/07/20 周五 13:02 302 36计算多项式的值.cpp 2018/07/20 周五 13:03 378 37雇佣兵.cpp 2018/07/20 周五 13:03 540 38计算多项式导函数.cpp 2018/07/20 周五 13:03 377 39与7无关的数.cpp 2018/07/20 周五 13:03 331 40数1的个数.cpp 2018/07/20 周五 13:04 485 41数字统计.cpp 2018/07/20 周五 13:04 704 42画矩形.cpp 2018/07/20 周五 13:04 341 43质因数分解.cpp 2018/07/20 周五 13:04 531 44第n小的质数.cpp 2018/07/20 周五 13:05 341 45金币.cpp

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值