首页 > 其他分享 >全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(实战训练一)

全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(实战训练一)

时间:2024-12-21 19:57:19浏览次数:8  
标签:实战 信息学 闰年 信奥赛 样例 n% year year% 整除

实战训练1—判断闰年

问题描述:

公历纪年法中,闰年分为普通闰年和世纪闰年,其中普通闰年是4的倍数,且不是100的倍数为闰年(例如2008);世纪闰年:公历年份是整百数,而且是400的倍数才是世纪闰年,例如1990年虽能被100整除而不能被400 整除,所以是平年,2000年是闰年。小明想编写程序实现判断公元年是否为闰年。

输入格式:

一行一个正整数year(year<=10000)。

输出格式:

一行,如果公元 year 年是闰年输出'Y',否则输出'N'。

输入输出样例:

输入样例1

输出样例1

2000

Y

输入样例2

输出样例2

2007

N

输入样例3

输出样例3

1900

N

问题分析:

首先根据题目的描述需要定义一个公元年变量year,从键盘上输入year的值,闰年的类别有普通闰年和世纪闰年,可以得出判断闰年的条件有两个:

1、普通闰年是4的倍数但不是100的倍数,即公元年year能被4整除,且不能被100整除;接下来将该条件转换成表达式:year能被4整除,说明year对4取余为0,表达式为:year%4==0,同理不能被100整除,说明year对100取余不为0,表达式为:year%100!=0,year能被4整除且不能被100整除,所以这两个表达式需要同时满足是'&&'的关系,即(year%4==0 )&& (year%100!=0)。

2、世纪闰年是整百数,而且是400的倍数,即公元年year能被400整除,接下来将该条件转换为表达式,year能被400整除,说明year对400取余为0,表达式为:year%400==0。

对于上面的两个条件,只需要满足条件1或者条件2其中一个条件就称year为闰年,即条件1和条件2是'||'的关系,对应的表达式为:((year%4==0 )&& (year%100 !=0)) || (year%400==0)。

具体程序如下:


#include<bits/stdc++.h>
using namespace std;
int main() {
   	int year;//定义公元年year 
	cin>>year;//输入公元年year的值 
	if(((year%4==0 )&& (year%100 !=0)) || (year%400==0)){//判断闰年的条件为真 
		cout<<'Y'<<endl;
	} else{
		cout<<'N'<<endl;
	}
	return 0;
}

实战训练2—被3,5,7整除

问题描述:

给定一个整数,请判断它能否被3,5,7整除,并输出以下信息:

1、能同时被3,5,7 整除(直接输出3 5 7,每个数中间一个空格);

2、只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者3 7或者5 7,中间用空格分隔);

3、只能被其中一个数整除(输出这个整数);

4、不能被任何数整除,输出小写字符'n'。

输入格式:

输入一行,包括一个整数n。

输出格式:

输出一行,按照描述要求给出整数被3,5,7整除的情况。

输入输出样例:

输入样例1

输出样例1

105

3 5 7

输入样例2

输出样例2

21

3 7

输入样例3

输出样例3

20 

5

输入样例4

输出样例4

8

n

问题分析:

根据题意定义一个整数变量n,并从键盘输入n的值,依据题目条件可知:

1、对于条件1需要判断n是否能被3,5,7整除,如果能被这3个数同时整除,可以写成表达式:(n%3==0) && (n%5==0) &&(n%7==0);

2、对于条件2,n可以被3,5,7中的任意两个数整除,可以分成3种情况:被3和5整除,被5和7整除,被3和7整除,所以可以写成表达式:(n%3==0 && n%5==0),(n%5==0 && n%7==0),(n%3==0 && n%7==0)

3、对于条件3,n只能被其中的一个数整除,即被3整除,被5整除,被7整除,所以可以写成表达式(n%3==0),(n%5==0),(n%7==0)

4、对于条件4,该数不能被3,5,7中的任何整数整除

针对上述4个条件,每个条件都是在上一个条件不成立的情况下,才会判断该条件,以及每个条件中的分条件也是同样的情况,即上一个分条件不成立,下一个分条件才会判断,所以使用多分支结构。

具体程序如下:

#include<bits/stdc++.h>
using namespace std;
int main() {
   	int n;//定义一个变量n 
	cin>>n;//输入n的值 
	if(n%3==0 && n%5==0 && n%7==0){// n能被3 5 7 同时整除 
		cout<<"3 5 7"<<endl;
	}else if(n%3==0 &&n%5==0){//n不同被3个整数同时整除,只能被3和5同时整除 
		cout<<"3 5"<<endl;
	}else if(n%3==0 &&n%7==0){//n不同被3个整数同时整除,只能被3和7同时整除 
		cout<<"3 7"<<endl;
	}else if(n%5==0 &&n%7==0){//n不同被3个整数同时整除,只能被5和7同时整除 
		cout<<"5 7"<<endl;
	}else if(n%3==0){//n只能被3整除 
		cout<<3<<endl;
	}else if(n%5==0){//n只能被5整除 
		cout<<5<<endl;
	}else if(n%7==0){//n只能被7整除 
		cout<<7<<endl;
	}else{//n不能被任何整数整除 
		cout<<'n'<<endl;
	}
	return 0;
}

标签:实战,信息学,闰年,信奥赛,样例,n%,year,year%,整除
From: https://blog.csdn.net/ALISHENGYA/article/details/144635132

相关文章

  • 中小企业应该重视经营还是管理?-中小企实战运营和营销工作室博客
    中小企业应该重视经营还是管理?-中小企实战运营和营销工作室博客中小企业经营和管理都非常重要,不能简单地偏向某一方面,它们相互关联、相互影响,共同促进企业的发展。一、经营的重要性把握市场机会经营主要涉及企业如何在外部市场环境中定位自己,发现和利用市场机会。例如......
  • 怎么做好一个店铺五金店经营?(进货渠道、管理软件、财务管控、工程选择、货品陈列等)-中
    怎么做好一个店铺五金店经营?(进货渠道、管理软件、财务管控、工程选择、货品陈列等)-中小企实战运营和营销工作室博客一、进货渠道1,直接与厂家合作优点:能够获得最优惠的价格,减少中间环节的成本。例如,如果你经营的五金店主要销售某品牌的手动工具,直接和该品牌的生产厂家建......
  • 【bodgeito】攻防实战记录
    也许有一天我们再相逢,睁开眼睛看清楚,我才是英雄。进入网站整体浏览网页点击页面评分进入关卡一般搭建之后这里都是红色的,黄色是代表接近,绿色代表过关首先来到搜索处本着见框就插的原则构造payload输入<script>alert(/xss/)</script>成功弹窗xss,发现反射型xss一......
  • 鸿蒙HarmonyOS应用开发 |鸿蒙技术分享HarmonyOS Next 深度解析:分布式能力与跨设备协作
    鸿蒙技术分享:HarmonyOSNext深度解析:分布式能力与跨设备协作实战随着万物互联时代的到来,操作系统作为连接设备、应用与用户体验的核心,扮演着不可或缺的角色。华为最新发布的HarmonyOSNext(鸿蒙操作系统下一代版本)不仅在技术架构上实现了颠覆性升级,更在生态体验上迈向了一个新的......
  • 【项目实战】SQL报错注入之updatexml的实现
    SQL报错注入之updatexml的实现updatexml函数通过输入不符合XPATH格式的数据来触发报错,并利用这一点进行SQL注入,通过分析报错信息,可以判断是否存在注入点,并逐步爆出数据库名、表名、字段名以及敏感数据,感兴趣的可以了解一下1.updatexml报错原理updatexml(xml_doument,X......
  • 实战:电子书阅读器
    ##问题背景web开发成为了主流的编程模式,许多系统都采用web开发模式,譬如,电商系统、门户网站、新闻资讯、邮件系统、还有诸多千奇百怪的网页,这就是今天我们熟悉的互联网发展的结果。web开发具有简单、快捷、高效的特性,从而备受青睐。笔者在这里以电子书阅读器为例,针对电子书阅......
  • C++ 中的多线程编程:从基础到实战
        随着多核处理器的普及,多线程编程成为现代C++开发中的关键技能。C++11引入了强大的线程库,使得多线程编程更安全、更高效。本文将带你深入了解C++中的多线程编程,从基础概念到实际案例,逐步掌握如何用现代C++编写高效的多线程程序。一、多线程的基础概念  ......
  • windows 驱动实例分析系列: pl2303芯片开发实战之一
    驱动开发有大半情况是需要和硬件芯片交互的,而国内,最多的情况就是拿到国外的芯片,然后进行仿制,故能根据芯片设计出解决方案这种技术是许多高级工程师的基本操作。PL2303是一个被广泛使用的USB转RS232串口芯片。其中一些型号早已停产,但还在市场上流通,被使用在一些产品上。在......
  • [Python学习日记-73] 面向对象实战1——答题系统
    [Python学习日记-73]面向对象实战1——答题系统简介需求模型——5w1h8c领域模型设计模型实现模型案例:年会答题系统简介    在学习完面向对象之后你会发现,你还是不会自己做软件做系统,这是非常正常的,这是因为计算机软件和系统的制作是一个系统性工程,在大学里面......
  • 实战设计模式之工厂方法模式
    概述        工厂方法模式和前一篇文章中提到的简单工厂模式都属于创建型设计模式,它们都致力于解决对象创建的问题。但两者还是有一些重要区别的:简单工厂模式通常用于减少重复代码,并将对象的创建逻辑集中在一个地方,适用于产品种类较少且创建逻辑相对简单的情况;工厂方......