洛谷刷题:分支与循环

目录

介绍:

前言: 

题目:

1.P5713 【深基3.例5】洛谷团队系统:

2.P1085 [NOIP2004 普及组] 不高兴的津津:

3. P1424 小鱼的航程(改进版):


介绍:

作者:几冬雪来

时间:2022年12月14日

类型:刷题

题目来源:洛谷题单分支与循环

 

                                                                                                               ——几冬雪来.如是说 

 

前言: 

相信同学们C语言已经学完了分支与循环部分了吧,既然学完了这个部分,那我们就来刷一些关于这一部分的题目吧。对于刷题的网站,我推荐洛谷和牛客,洛谷的题比较难且有挑战性其中不乏有普及题,牛客的题目偏向于基础,更适合新手上手,而今天我的题目来自洛谷的分支与循环模块的题单中的题。

注:本作者也是一个小白作者,在博客中我也有一些题我觉得有意义和价值,但是自己写出来并没有拿到全对的分数,即便如此我也会写出来供大家参考思路,如果有人提出修改意见我也会进行参考和改进。那么接下来开始吧。

这些题作者并没有按照顺序来解答和书写,请读者见谅。

 

题目:

1.P5713 【深基3.例5】洛谷团队系统:

 然后根据题目写出我的理解。

int main()
{
	int ti = 0;
	scanf("%d", &ti);//题目的数量
	int time1 = 5 * ti;//第一种方法所需要的时间
	int time2 = 3 * ti + 11;//第二种方法所需要的时间
	if (time1 < time2)//判断
	{
		printf("Local");
	}
	else
	{
		printf("Luogu");
	}
	return 0;
}

这一题比较简单,我们只需要先初始化题目的数量,再用题目的数量进行方法一和方法二的相加相乘,最后得出来的两个时间进行判断大小即可。

这道题的正确率也是达到了满分。

 

2.P1085 [NOIP2004 普及组] 不高兴的津津:

这道题的题目如下:

 要让我们判断津津不高兴的星期,从星期一开始计算,如果有两天以上的不高兴的日子,则输出靠前的那一天,也就是如果她星期二和星期四都不高兴的话则我们输出2。

接下来我就写一写我的思路。

int main()
{
	int i = 0;
	int arr1[100];
	int arr2[100];
	for (i = 1; i <= 7; i++)//循环星期一到星期日
	{
		scanf("%d %d", &arr1[i], &arr2[i]);//输出两个值前一个是学校的时间,后一个是补习班的时间
	}
	for (i = 1; i <= 7; i++)//再次循环星期一到星期日
	{
		if (arr1[i] + arr2[i] > 8)//如果某星期的时间加起来大于8小时则结束循环
		{
			break;
		}
	}
	printf("%d", i);//打印星期
	return 0;
}

我也看过一些这道题目的解法 (但是都是c++的解法我现在看不懂,而且超级长QAQ),我这个代码虽然可以成功输出,可是我的代码也有不足的地方。我在与那些题解的方法对比后发现,我的代码相比较与他们的代码就是他们有判断有几个,或者哪几个星期津津的不高兴,最后再比较哪个星期比较靠前。而我这个只是判断了第一个不高兴的星期就将其输出,虽然逻辑上行得通,但是如果代码一改,要求输出不高兴的天数我的这个代码就可以作废了。

最后洛谷的评分也没有出乎我的意料,虽然逻辑可行但是太过片面。最后也没能拿到满分。

3. P1424 小鱼的航程(改进版):

下面我就先放出我们的题目。

这道题十分方便理解。简单粗暴就是判断小鱼在限定天数游泳的公里数,星期一到星期五游泳,星期六和星期日休息。

下面是我的思路。

int main()
{
	int z = 0;
	int d = 0;
	scanf("%d %d", &z, &d);//输出初识星期和限定天数
	int i = 0;
	int s = 0;
	for (i = 1; i <= d; i++)//从第一天到限定的天数,每过一天i++
	{
		if (z != 6 && z != 7)//如果不是星期六或者星期日游泳
		{
			s += 250;//每次250公里
		}
		if (z == 7)//如果z为星期天的话将z变成1也就是星期一,这里不能大于7
		{
			z = 1;//如果条件是这里大于7,if不会执行,else执行z++,星期变成了星期八,但是我们没有这个星期
		}
		else
		{
			z++;//如果是星期一到星期六则往后一天
		}
	}
	printf("%d", s);//输出公里数
	return 0;
}

这个代码我们注意两个点,一个就是要新初始化一个i进行1--10天的循环。(注:不能直接将z变成循环条件,因为z在for语句中有改变,最后程序可能死循环)

第二个我们要注意的点就是(z==7)的时候要将z变成1。防止出现我们理论上没有的星期八的存在。

只要注意好这两个点,我们这道题就可以拿到满分。最后我的代码也是印证了我的猜想。

 到此就是我要讲的分支与循环洛谷的3道题了,希望我的这篇博客可以给在座的同学们提供一定的帮助,同时如果我的代码有不足的地方也请指正。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值