愿你我能够到达向往的地方!
文章目录
目录
前言
对新手这么友好的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入门题,对新手很友好,能够帮助新手快速上手,战胜对于编程的恐惧,求三连!凡人在这里谢谢大家的观看