牛客网-编程初学者入门训练-BC21~BC30

BC21 浮点数的个位数字

描述

给定一个浮点数,要求得到该浮点数的个位数。

输入描述:

一行,包括一个浮点数。

输出描述:

一行,包含一个整数,为输入浮点数对应的个位数。

示例1

输入:13.141

输出:1

注意点:

对于浮点型,进行int的强制类型转换,就会舍去小数部分。

#include <stdio.h>
int main(void)
{
    int a;
    scanf("%d",&a);
    printf("%d",a%10);
    return 0;
}

BC22 你能活多少秒

描述

 问题:一年约有3.156×107s,要求输入您的年龄,显示该年龄合多少秒。

输入描述:

一行,包括一个整数age(0<age<=200)。

输出描述:

一行,包含一个整数,输出年龄对应的秒数。

示例1

输入:20

输出:631200000

注意点:输出的数据大小要匹配相应的类型,否则就会出现结果不精确的情况。如float a = 0 与float a = 0.0 在最后的结果不同。

#include<stdio.h>
#include<math.h>

int main(void)
{
    unsigned a;
    scanf("%d", &a);
    a = a * 3.156 * pow(10,7);
    printf("%ld\n", a);
    
    return 0;
}

BC23  时间转换

描述

给定秒数seconds (0< seconds < 100,000,000),把秒转化成小时、分钟和秒。

输入描述:

一行,包括一个整数,即给定的秒数。

输出描述:

一行,包含三个整数,依次为输入整数对应的小时数、分钟数和秒数(可能为零),中间用一个空格隔开。

示例1

输入:3661

输出:1 1 1

注意点:

#include<stdio.h>

int main(void)
{
    int a;
    int b, c, d, e;
    scanf("%d", &a);
    b = a / 3600;
    c = a % 3600;
    d = c / 60;
    e = c % 60;
    printf("%d %d %d", b, d, e);
    
    return 0;
}

BC24 总成绩的平均分计算

描述

依次输入一个学生的3科成绩,在屏幕上输出该学生的总成绩以及平均成绩。

输入描述:

一行,3科成绩,成绩之间用一个空格隔开。

输出描述:

一行,总成绩和平均成绩(小数点后保留两位),用一个空格隔开。

示例1

输入:79.5 80.0 98.0

输出:257.50 85.83

注意点:

要注意数据的类型,浮点型使用%d输出的话会舍去小数部分。总和可以用它的英文sum来表示。

#include<stdio.h>

int main(void)
{
    float a, b, c, d, e;
    scanf("%f %f %f", &a, &b, &c);
    d = a + b + c;
    e = d / 3;
    printf("%.2f %.2f", d, e);
    return 0;
    
}

BC25 计算体重指数

描述

 问题:计算BMI指数(身体质量指数)。BMI指数(即身体质量指数,简称体质指数又称体重,英文为Body Mass Index,简称BMI),是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。主要用于统计用途,当我们需要比较及分析一个人的体重对于不同高度的人所带来的健康影响时,BMI值是一个中立而可靠的指标

输入描述:

一行,两个整数,分别表示体重(公斤),身高(厘米),中间用一个空格分隔。

输出描述:

一行,BMI指数(保留两位小数)。

示例1

输入:70 170

输出:24.22

注意点:

有的时候,题目很长,但结果很简单。有的时候,人生很短,但道路很精彩。

#include<stdio.h>

int main(void)
{
    float a, b;
    scanf("%f %f", &a, &b);
    printf("%.2f", a / ((b / 100) * (b / 100)));
    return 0;
}

BC26 计算三角形的周长和面积

描述

根据给出的三角形3条边a, b, c(0 < a, b, c < 100,000),计算三角形的周长和面积。

输入描述:

一行,三角形3条边(能构成三角形),中间用一个空格隔开。

输出描述:

一行,三角形周长和面积(保留两位小数),中间用一个空格隔开,输出具体格式详见输出样例。

示例1

输入:3 3 3

输出:circumference=9.00 area=3.90

注意点:

1,这道题可能有人打不对周长的英文单词(o _ o);

2,有的人可能不知道只用已知能构成三角形的三边长度来算面积,这里要用到秦九韶公式。

#include<stdio.h>
#include<math.h>

int main(void)
{
    double a, b, c;
    double d;
    scanf("%lf %lf %lf", &a, &b, &c);
    d = (a + b + c) / 2;
    printf("circumference=%.2lf area=%.2lf", a + b + c, sqrt( d * (d - a) * (d - b) * (d - c)));
    return 0;
}

BC27 计算球体的体积

描述

给定一个球体的半径,计算其体积。其中球体体积公式为 V = 4/3*πr3,其中 π= 3.1415926。

输入描述:

一行,用浮点数表示的球体的半径。

输出描述:

一行,球体的体积,小数点后保留3位。

示例1

输入:3.0

输出:113.097

注意点:

还记着BC22的注意点是什么说的吗?现在将4.0改成4,3.0改成3试试结果会什么样。

#include<stdio.h>
#include<math.h>

int main(void)
{
    double r;
    scanf("%lf", &r);
    printf("%.3lf", 4.0 / 3.0 * 3.1415926 * pow(r,3));
    
    return 0;
}

BC28 大小写转换

描述

实现字母的大小写转换。多组输入输出。

输入描述:

多组输入,每一行输入大写字母。

输出描述:

针对每组输入输出对应的小写字母。

示例1

输入:A B

输出:a b

备注:

多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。

注意点:

1,看清楚题目:多组输入输出,意味着需要while(...);

2,大小写转换在c语言有它的库函数tolower,包含在头文件ctype.h中,但为了有挑战性,我们还是自己写一个程序,不用该函数。

#include<stdio.h>
int main(void)
{
    char ch;
    while((ch = getchar()) != EOF)
    {
     if(ch >= 'A' && ch <= 'Z')
     {
         ch += 32;
         
     }
        putchar(ch);
    }
    return 0;
}

BC29 2的n次方的计算

描述

不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。

输入描述:

多组输入,每一行输入整数n(0 <= n < 31)。

输出描述:

针对每组输入输出对应的2的n次方的结果。

示例1

输入:2 10

输出:4 1024

注意点:

通过移位计算<<,对于整数而言向左移动一位则*2。

#include <stdio.h>

int main (void)
{
    int n = 0;
    while (scanf("%d",&n)!= EOF)
    {
        printf("%d\n", 1 << n);
    }
    return 0;
}

BC30 KIKI和酸奶

描述

BoBo买了一箱酸奶,里面有n盒未打开的酸奶,KiKi喜欢喝酸奶,第一时间发现了酸奶。KiKi每h分钟能喝光一盒酸奶,并且KiKi在喝光一盒酸奶之前不会喝另一个,那么经过m分钟后还有多少盒未打开的酸奶?

输入描述:

多组输入,每组输入仅一行,包括n,h和m(均为整数)。输入数据保证m <= n * h。

输出描述:

针对每组输入,输出也仅一行,剩下的未打开的酸奶盒数。

示例1

输入:8 5 16

输出:4

注意点:

本题的难度还是有的,想不来的人可以写几个数来试一试。实在不会的可以去观摩别人的代码,从而内化为自己的东西。

#include<stdio.h>

int main(void)
{
    int n, h, m;
    while(scanf("%d %d %d", &n, &h, &m) != EOF)
    {
        if(m % h != 0)
        {
            n = n - ((m / h) + 1);
        }
        else
        {
            n = n - (m / h);
        }
        printf("%d\n", n);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值