菜鸟的自救
前言——计划的诞生:不想颓废。
本人大一新生一枚,电子信息类专业,编程技术堪称菜鸟中菜鸟。为挽救大一上学期的颓势。从现在开始写博客来拯救自己。
是菜鸟不要紧,关键是菜鸟还不知道扑腾翅膀就必死无疑了。
首先第一计划是从洛谷上的题目开始。虽然已经落后了许多,但是
“种一棵树最好的时间是十年前,其次是现在。”
不多说,开始。
Part 1.
洛谷新手村-数组之前的题目(语言:C语言)
(一)洛谷的第一个任务
第一模块仅在此陈列代码,简单分析。
P1000 超级玛丽游戏
【代码】略。
【分析】任性一点,根据题目的描述,只需按行输入,记得换行,注意不要留下前面的空白和漏掉后面的星号即可,有点像HelloWorld的进化版,是面世程序。
P1001 A+B Problem
【代码】
#include <stdio.h>
int main() {
int a,b;
scanf("%d%d",&a,&b);
printf("%d", a+b);
return 0;
}
【分析】简单的小学算术问题。考察scanf和printf两个函数的运用,scanf有&,而printf没有,没有难度。
P1412 小玉买文具
【代码】
#include <stdio.h>
int main()
{
int a,b ;
scanf("%d%d",&a,&b);
printf("%d", (10*a + b )/19);
return 0;
}
【分析】听过翁恺老师算时间差的就知道,此题其中一种解法是:单位最小化。
就是说面对不同单位表达的数字,将其转化为最小单位。这样就变成了一个数字,便于计算。然后再对计算后的数字进行单位恢复(有些题目不需要,只需满足计算要求即可,如此题)。
ps:针对此题不适用第二种方法:
翁恺老师针对分钟借位的情况还用了暴力减法,然后对后果进行分情况处理。这样不失为一种“快意”的方法,但是对于此题比较棘手(除法),暂不讨论。
P1425 小鱼的游泳时间
【代码1】
#include <stdio.h>
int main ()
{
int a , b;
int c , d;
scanf("%d%d",&a,&b);
scanf("%d%d",&c,&d);//输入两个时间
int t1 = 60*a + b;
int t2 = 60*c + d;//单位最小化
int t = t2 - t1;//算时间差
printf("%d %d", t/60 , t%60 );//单位还原并输出
return 0;
}
【分析1】此题就是翁恺老师说的时间差问题,主要是处理分钟借位的问题。可用单位最小化。简单补充一下%(取余计算符)和/(除法运算符)的用途。
放一个大佬的博文链接,没有抄袭的意思,不要捶我。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_33523805/article/details/79578528
————————————————
版权声明:本文为CSDN博主「Stella-Chen」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
因为这题完全可用暴力相减,再处理后果的方法。因此:
【代码2】
#include <stdio.h>
int main()
{
int a , b;
int c , d;
scanf("%d%d", &a , &b );
scanf("%d%d", &c , &d );//输入两个时间
int hour = c - a;//算出小时数的差
int minute = d -b;//算出分钟数的差
if (minute < 0)//判断是否出现分钟结位
{
minute += 60;//分钟数归正
hour--;//分钟位借了一个小时位
}
printf("%d %d", hour , minute );
return 0;
}
【分析2】没什么理解难度,就写代码角度来讲感觉这种方法比较顺畅,但是就第一种方法感觉聪明一些。关键就是处理分钟借位的情况(避免分钟数为负数)。
ps:总是提到翁恺老师,是浙大的一个老师,在MOOC上有网课,找不到的话,B站搜“C语言”也可以搜得到。
以上就是Part 1. (一)洛谷的第一个任务 的全部内容。
欢迎大家的指正和补充。
2020/2/20 21:13 星期四