且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

[百战成神3]C语言之凡人暴刷小牛【超详细解析,掌握每道题】

更新时间:2022-10-01 21:11:45

[百战成神3]C语言之凡人暴刷小牛【超详细解析,掌握每道题】

 愿你我能够到达向往的地方!

文章目录

目录

文章目录

前言

????    BC38 变种水仙花   

????解析:

???? 代码如下:

???? BC20 kiki算数

????描述

????输入描述:

????输出描述:

????示例1

????解析:

???? 代码如下:

????BC21 浮点数的个位数字

????描述

????输入描述:

????输出描述:

????示例1

????解析:

???? 代码如下:

????BC22 你能活多少秒

????描述

????输入描述:

????输出描述:

????示例1

????解析:

???? 代码如下:

????BC23 时间转换

????描述

????输入描述:

????输出描述:

????示例1

????解析:

???? 代码如下:

????BC24 总成绩和平均分计算

????描述

????输入描述:

????输出描述:

????示例1

????解析:

???? 代码如下:

????BC30 KiKi和酸奶

????描述

????输入描述:

????输出描述:

????示例1

????解析:

???? 代码如下:

????BC31 发布信息

????描述

????输入描述:

????输出描述:

????解析:

???? 代码如下:

????BC32 输出学生信息

????描述

????输入描述:

????输出描述:

????解析:

???? 代码如下:

????BC33 计算平均成绩

????描述

????输入描述:

????输出描述:

????示例1

????解析:

???? 代码如下:


前言

对新手这么友好的oj编程题确定不看吗???内容超详细!!手把手教你如何去解析编程!

都是对C语言新手很友好的题目,而且把详细的过程写了下来,让大家可以学会这些题目,大家可以点进去练习练习,战胜对编程的恐惧 


提示:以下是本篇文章正文内容,下面案例可供参考


????    BC38 变种水仙花   

????描述

变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。

例如:

655 = 6 * 55 + 65 * 5

1461 = 1*461 + 14*61 + 146*1

求出 5位数中的所有 Lily Number。

 ????输入描述:

 ????输出描述:

一行,5位数中的所有 Lily Number,每两个数之间间隔一个空格。

????解析:

????1,定义一个数 因为要打印出所有五位数符合条件的数,所以for循环,从10000开始,小于等于99999,让这个数自增

????2,分析一下,如何满足题目的条件比如题目中的1461 = 1461 + 1461 + 146*1是如何实现的:

????1461 /10 * 1461%10 = 146*1

????1461 /100 * 1461%100 = 14*61

????1461 /1000 * 1461%1000 = 1*461

????按照上面可得到规律

????3,按照刚才分析的规律,在里面创建一个for循环,定义一个被除数,从10开始,因为是五位数,所以小于等于10000,如何让10 变成100 1000呢 ?每次让*=一个10

????4,定义一个和 ,把每次的乘机都加起来

????5,判断并输出,如果乘积加起来的和等于这个数,那么就打印出来

???? 代码如下:

#include<stdio.h>
int main()
{
    int i = 0;
    for(i=10000;i<=99999;i++) //定义范围为五位数
    {
        int j = 0;
        int sum = 0;
        for(j=10;j<=10000;j*=10)
        {
            sum += (i/j)*(i%j);
        }
        if(sum == i)
        {
            printf("%d ",sum);
        }
    }
    return 0;
}


???? BC20 kiki算数

????描述

问题:KiKi今年5岁了,已经能够认识100以内的非负整数,并且并且能够进行 100 以内的非负整数的加法计算。不过,BoBo老师发现KiKi在进行大于等于100的正整数的计算时,规则如下:

1.       只保留该数的最后两位,例如:对KiKi来说1234等价于34;

2.       如果计算结果大于等于 100, 那么KIKI也仅保留计算结果的最后两位,如果此两位中十位为0,则只保留个位。

例如:45+80 = 25

要求给定非负整数 a和 b,模拟KiKi的运算规则计算出 a+b 的值。

数据范围: 0 \le a,b \le 2^{31}-1 \0≤a,b≤231−1 

????输入描述:

一行,输入两个非负整数a和b,用一个空格分隔。(0 <= a,b<= 231-1)。

????输出描述:

针对每组输入,输出按照KiKi的运算规则计算出 a+b 的值。

????示例1

输入:

45 80

输出:

25

????解析:

????1,定义两个数并输入两个数

????2,分析题中的要求,可以把a和b加起来的结果 对100取模就是最后两个数

????3,输出最后的结果

???? 代码如下:

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


????BC21 浮点数的个位数字

????描述

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

数据范围: 0 < n \le 200 \0<n≤200 

????输入描述:

一行,包括一个浮点数。

????输出描述:

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

????示例1

输入:

13.141

输出:

3

????解析:

????1,定义一个数,并且输入

        ????1,可以定义浮点型,并输入

        ????2,可以从源头开始,直接定义整数,如:输入12,22 为12

????2,求出个位数为对10进行取模,如果按照浮点数需要强制转换成整形

????3,输出最后的结果

???? 代码如下:

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


????BC22 你能活多少秒

????描述

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

数据范围: 0 < age \le 200 \0<age≤200 

????输入描述:

一行,包括一个整数age。

????输出描述:

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

????示例1

输入:

20

输出:

631200000

????解析:

????1,定义年龄,并且输入

????2,秒数等于年龄成以一年的秒数 ,注意10的7次方等于e7 而且这个数太大,需要以long long 来定义

????3,输出最后的结果,注意 long long是ld

???? 代码如下:

#include<stdio.h>
int main()
{
    int age = 0;
    scanf("%d",&age);
    long long s = age*3.156e7;
    printf("%ld",s);
    return 0;
}


????BC23 时间转换

????描述

给定秒数 seconds ,把秒转化成小时、分钟和秒。

数据范围: 0 < seconds < 100000000\0<seconds<100000000 

????输入描述:

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

????输出描述:

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

????示例1

输入:

3661

输出:

1 1 1

????解析:

????1,定义输入的秒数

????2,分析如何转换成时分秒 ,如题中给入的3661

        ????1分钟等于60分钟,1分钟等于60秒,所以3661/60/60=1小时

        ????3661/60=60   60%60=1分钟  

        ????3661%60=1 秒

????3,根据以上分析,定义小时,分钟,秒,并且输出

???? 代码如下:

#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d",&n);
    int h = n/60/60;
    int m = n/60%60;
    int s = n%60;
    printf("%d %d %d",h,m,s);
    return 0;
    
}


????BC24 总成绩和平均分计算

????描述

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

????输入描述:

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

????输出描述:

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

????示例1

输入:

79.5 80.0 98.0

输出:

257.50 85.83

????解析:

????1,定义三科成绩并输入,注意这个是小数,用浮点型定义

????2,定义总成绩,三门加起来的和

????3,定义平均值,总成绩除以个数

????4,按照格式输出,并且注意保留两位小数

???? 代码如下:

#include<stdio.h>
int main()
{
    float s_a = 0.0;
    float s_b = 0.0;
    float s_c = 0.0;
    scanf("%f %f %f",&s_a,&s_b,&s_c);
    float s = s_a+s_b+s_c; //总成绩
    float s_m = s/3;//平均值
    printf("%.2f %.2f",s,s_m);
    return 0;
}


????BC30 KiKi和酸奶

????描述

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

????输入描述:

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

????输出描述:

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

????示例1

输入:

8 5 16

输出:

4

????解析:

????1,定义多少酸奶,几分钟喝一瓶,多少分钟 ,分别是n,h,m

????2,因为是多组输入,所以循环输入三个数,并且eof处理停止,接下来分析题中要求,如8,5,16

        ????有8瓶酸奶,5分钟喝一瓶,有16分钟喝酸奶的时间,那么16/5=3瓶喝的酸奶,加上多出来的一分钟打开的奶就是4瓶 ,所以剩余酸奶等于8-16/5-1

        ????如果正好喝完  如 8,5,15  ,有8瓶酸奶,5分钟喝一瓶,有15分钟喝酸奶的时间,那么15/5=3瓶喝的酸奶 ,所以剩余酸奶等于8-16/5

        ????所以用if语句来判断条件 ,如果分钟对几分钟喝一瓶取余数,因为如果等于0,则执行else,如果不为0,则执行if

???? 代码如下:

#include<stdio.h>
int main()
{
    int n = 0;//多少酸奶
    int h = 0;//几分钟喝一瓶
    int m = 0;//有多少分钟
    while(scanf("%d %d %d",&n,&h,&m) != EOF)
    {
        if(m%h)
        {
            printf("%d",n-m/h-1);
        }
        else
        {
            printf("%d",n-m/h);
        }
    }
    return 0;
}


????BC31 发布信息

????描述

你的手机丢了,在屏幕上输出信息告诉大家。

????输入描述:

????输出描述:

I lost my cellphone!

????解析:

????1,按照结果输出即可

???? 代码如下:

#include<stdio.h>
int main()
{
    printf("I lost my cellphone!");
    return 0;
}


????BC32 输出学生信息

????描述

学生信息管理系统是学校教学管理的重要工具,现有一名学生基本信息如下:姓名-Jack,年龄-18,性别-Man,请按照输出样例的格式输出该学生的信息。

????输入描述:

????输出描述:

输出分为三行,分别为标题行,分隔行,信息行。

第一行,标题行,每个标题之间间隔4个空格。

第二行,分隔行,一共21个减号"-"。

第三行,信息行,每列输出信息和标题首字母对齐。输出样例如下:

Name Age Gender

---------------------

Jack 18 man

????解析:

????1,按照要求输出即可,注意换行与空格的间隔

???? 代码如下:

#include<stdio.h>
int main()
{
    printf("Name    Age    Gender\n");
    printf("---------------------\n");
    printf("Jack    18     man");
    return 0;
}


????BC33 计算平均成绩

????描述

从键盘输入5个学生的成绩(整数),求他们的平均成绩(浮点数,保留一位小数)。

????输入描述:

一行,连续输入5个整数(范围0~100),用空格分隔。

????输出描述:

一行,输出5个数的平均数(保留一位小数)。

????示例1

输入:

75 80 43 67 96

输出:

72.2

????解析:

????1,定义5位学生的成绩,一个一个定义太麻烦,数组存储,用for循环来遍历数组元素并输入,注意存储的是地址&

????2,定义一个和,让每次数组元素遍历完加到和里去,

????3,输出结果,注意保留一位小数,除以一个小数

???? 代码如下:

#include<stdio.h>
int main()
{
    int arr[5] = {0};
    int i = 0;
    float sum = 0.0;
    for(i=0;i<5;i++)
    {
        scanf("%d ",&arr[i]);
        sum += arr[i];
    }
    printf("%.1f",sum/5.0);
    return 0;
}

总结

以上是凡人给大家准备的10道牛客oj入门题,对新手很友好,能够帮助新手快速上手,战胜对于编程的恐惧,求三连!凡人在这里谢谢大家的观看

[百战成神3]C语言之凡人暴刷小牛【超详细解析,掌握每道题】[百战成神3]C语言之凡人暴刷小牛【超详细解析,掌握每道题】