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

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 对新手这么友好的oj编程题确定不看吗???内容超详细!!手把手教你如何去解析编程!都是对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入门题,对新手很友好,能够帮助新手快速上手,战胜对于编程的恐惧,求三连!凡人在这里谢谢大家的观看


相关文章
|
2月前
|
存储 C语言 C++
【c语言】运算符汇总(万字解析)
今天博主跟大家分享了c语言中各种操作符的功能、使用方法以及优先级和结合性,并且与大家深入探讨了表达式求值的两个重要规则--算数转换和整形提升。学习这些知识对我们的C语言和C++学习都有着极大的帮助。
143 2
|
1月前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
145 14
|
1月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
50 8
|
1月前
|
存储 算法 C语言
【C语言】深入浅出:C语言链表的全面解析
链表是一种重要的基础数据结构,适用于频繁的插入和删除操作。通过本篇详细讲解了单链表、双向链表和循环链表的概念和实现,以及各类常用操作的示例代码。掌握链表的使用对于理解更复杂的数据结构和算法具有重要意义。
511 6
|
1月前
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
42 5
|
1月前
|
C语言 开发者
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
47 5
|
1月前
|
安全 搜索推荐 Unix
【C语言】《回调函数》详细解析
回调函数是指一个通过函数指针调用的函数。它允许将一个函数作为参数传递给另一个函数,并在特定事件发生时执行。这种技术使得编程更加灵活,可以动态决定在何时调用哪个函数。
45 1
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
92 2
|
15天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
15天前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

推荐镜像

更多