OJ算法可运行⑦

OJ算法题共10个篇幅,不定期在篇幅里增加题目(篇幅不增加)。

个人水平有限,如有错误和可以改进的地方,非常期待批评指正,谢谢!

题目描述

输入底面半径r
和高h,输出圆柱体的表面积,保留三位小数,格式参考样例。
π使用3.14。r,h≠0

输入

输入两个数r,h

。用空格分开。
输出

输出表面积,格式为"Area = %.3f"(注意空格)
输入样例

3.5 9

输出样例

Area = 274.750
 

#include<stdio.h>
int main()
{
    float r,h,a;
    scanf("%f%f",&r,&h);
    a=2*3.14*r;
    printf("Area = %.3f",(a*h)+(2*3.14*r*r));
    return 0;
}

 

题目描述

输入一个三位数,分类出它的百位、十位和个位。
个位数≠0


输入

一个三位数。
输出

反转后的三位数。
输入样例

127

输出样例

721

HINT

个位数 = a%10, 十位数 = (a/10)%10 百位数 = a/100.

还有种用字符变量做的方法,你能想到吗?

#include<stdio.h>
int main()
{
    int n,a,b,c;
    scanf("%d",&n);
    a=n/100;
    b=(n/10)%10;
    c=n%10;
    printf("%d\n",c*100+b*10+a);
    return 0;
}

 

题目描述

Tarpe酋长最近很烦,因为要谋求连任,必须满足部落的太平天国梦想——平均土地,但是三家大地主掌控了Tarpe酋长的所有土地,请你帮酋长计算一下这三家地主平均后的土地是多少呢
输入

一行,三个数 a,b,c

,分别是三个地主现在拥有的土地,由于丈量精度问题,都是小数。
输出

输出一行,a,b,c

的平均值,保留一位小数
输入样例

1 2 3

输出样例

2.0

HINT

Tarpe酋长只想求个平均值而已,别多想
 

#include<stdio.h>
int main()
{
    float a,b,c;
    scanf("%f%f%f",&a,&b,&c);
    printf("%.1f",(a+b+c)/3);
    return 0;
}

题目描述
柯南在追捕犯人的时候掉入了没有井盖的深井,万幸他有阿笠博士发明的吸盘,但吸盘在掉下来的时候摔坏了,他每个小时能爬上一段距离。但在他休息的一瞬间中会滑下一段距离,幸运的是每隔一段距离有凹槽(自下而上)可以让柯南停止下滑,柯南需要编写代码来判断在自己能否爬出深井以及需要的时间,于是柯南开始敲代码。

输入
n组测试数据。
第一行为一个整数n,表示组数
第二行为一个整数a,表示井的深度。
第三行为一个整数b,表示柯南每小时爬的距离。 
第四行为一个整数c,表示柯南每小时滑下的距离。
第五行为一个整数d,表示隔多少米有凹槽。
n,a,b,c,d均小于3000。

输出
每行输出一个结果。
若不能爬出深井,则输出"fail",
若能爬出深井,则输出爬出深井需要的时间。

输入样例
3  
600 131 25 50
500 131 25 50
300 100 118 120
输出样例
6
5
fail

//简化:
#include<stdio.h>
#define min(x,y)(x<y?x:y)
int main(){
    int n,h=0,up=0,down=0,keng=0,t,sum,cha=0;
    while(scanf("%d",&n)!=EOF){
        for(int i=0;i<n;i++){
            scanf("%d%d%d%d",&h,&up,&down,&keng);
            if(up<min(down,keng)){
                printf("fail\n");
            }
            else{
                sum=0;
                t=0;
                while(sum<h){
                    t++;
                    sum=sum+up;
                    cha=sum%keng;
                    if(sum>=h)break;
                    if(down<cha)
                        sum=sum-down;
                    else
                        sum=sum-cha;
                }
                printf("%d\n",t);
            }
        }
    }
    return 0;
}
//未简化:
#include<stdio.h>
#define min(x,y)(x<y?x:y)
int main(){
    int n,h=0,up=0,down=0,keng=0,t,sum,cha=0;
    while(scanf("%d",&n)!=EOF){
        for(int i=0;i<n;i++){
            scanf("%d%d%d%d",&h,&up,&down,&keng);
            if(up<min(h,min(down,keng))){
                printf("fail\n");
            }
            else{
                sum=0;
                t=0;
                while(sum<h){
                    t++;
                    sum=sum+up;
                    cha=sum%keng;
                    if(sum>=h)break;
                    if(down<cha)
                        sum=sum-down;
                    else
                        sum=sum-cha;
                }
                printf("%d\n",t);
            }
        }
    }
    return 0;
}

题目描述
顾名思义,写一个可以判断一个整数是否为质数的程序。

输入
多组数据,第一行一个数T,表示有T组数据。(1<T<1000)
接下来T行,每行一个数x,表示一组数据。(1<=x<=1000000000)

输出
若为质数则输出Yes,否则输出No,每组数据输出一行。

输入样例
3
1
9
13
输出样例
No
No
Yes

#include<stdio.h>
int main(){
    int n=0,a,num=0;
    while(~scanf("%d",&n)){
        for(int i=0;i<n;i++){
            scanf("%d",&num);
            a=0;
            for(int j=2;j<num;j++){//j>1故输入1,并不会执行循环
                if(num%j==0){
                a++;break;
                }
            }
            if(a==0){
                printf("Yes\n");
            }
            else{
                printf("No\n");
            }
        }
    }
    return 0;
}


 

题目描述
jhljx是一个特别喜欢旅行的人。。一天他做梦梦到自己去太空旅行了。。o(≧v≦)o~~好棒吖。。
jhljx从地球出发,坐着宇宙飞船飞到各种神奇的星球去。。
他去过好多星球,比如说神马火星吖,金星吖,这些都随随便便。
他还去了一趟KMT184.05行星,见到了《来自星星的你》中的都教授。。
jhljx旅行归来,感慨万千啊。。
但他一直不知道自己最远到达了那个星球。
所以他想算一算。但他算数拙计啊。。
那么问题来了。。。

假设地球的坐标是x0,y0,z0,jhljx总共访问了n个星球,n个星球的坐标为x,y,z。
每次访问他都从地球出发,然后访问一个星球,再返回地球。
接着再从地球出发,去访问下一个星球,再返回地球。。。。
在飞行过程中,飞船每飞行1光年需要耗油k升。
请问在这n次飞行中,飞船耗油最多的一次是哪一次,这次飞行消耗了多少油。 (假设飞船都能够到达星球,不考虑没油的情况)。

输入
输入多组数据。
每组数据共(n+3)行。第一行为地球的坐标x0,y0,z0。(x0,y0,z0均为整数,且-1000<=x0,y0,z0<=1000)
第二行为访问的星球个数n。(1<=n<=100)
下面从第三行到第(n+2)行为jhljx要访问的星球的坐标x,y,z。(x,y,z均为整数,且-1000<=x0,y0,z0<=1000)
第(n+3)行为飞船每飞行1光年消耗的油量k。(k为整数,且1<=k<=100)

输出
输出飞船在这n次旅行中,耗油最多的一次飞行和这次飞行消耗的油量,两个数之间用空格隔开,油量的结果保留6位小数。
如果有多次飞行都满足耗油量最大,请输出序号最少的那一次。

输入样例
0 0 0
1
1 1 1
1
输出样例
1 3.464102 

#include<stdio.h>
#include<math.h>
int main(){
    int x0=0,y0=0,z0=0,x=0,y=0,z=0,n=0,k=0;
    while(scanf("%d%d%d%d",&x0,&y0,&z0,&n)!=EOF){
        double s[n+1];
        int m=0;
        s[m]=0;
        for(int i=1;i<=n;i++){
            scanf("%d%d%d",&x,&y,&z);
            s[i]=sqrt((x-x0)*(x-x0)+(y-y0)*(y-y0)+(z-z0)*(z-z0));
            if(s[i]>s[m])
                m=i;
        }
        scanf("%d",&k);
        printf("%d %.6f\n",m,s[m]*k*2);
    }
    return 0;
}

上一篇

下一篇

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

磊磊cpp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值