当前位置: 首页 > article >正文

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

实战训练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;
}

http://www.kler.cn/a/446608.html

相关文章:

  • 【AIGC-ChatGPT进阶副业提示词】末日生存指南 2.0:疯狂科学家的荒诞智慧
  • uniApp使用腾讯地图提示未添加maps模块
  • 楚慧杯-Web
  • 【HarmonyOS NEXT】Web 组件的基础用法以及 H5 侧与原生侧的双向数据通讯
  • 项目管理工具Maven(一)
  • ubuntu,自动休眠后,程序自动暂停。如何破?
  • c4d动画怎么导出mp4视频,c4d动画视频格式设置
  • 网络安全基础知识分享
  • 算法—有效的字母异位词
  • 一文速通 IIC I2C子系统驱动 通信协议原理 硬件 时序 深度剖析
  • 青少年编程与数学 02-004 Go语言Web编程 14课题、数据操作
  • K8s docker-compose的入门
  • Yolov11学习笔记
  • 使用Redis提升PHP应用的性能
  • SpringBoot02
  • Netdevops入门基础学习03
  • Leaflet的zoom层级-天地图层级之间的关系
  • Micropython RPI-PICO 随记-DS3231和RTC
  • POI-TL插件开发-表格分组插件
  • HTML 面试题全解析
  • Intellij配置scala运行环境
  • 故障诊断 | 一个小创新:特征提取+KAN分类
  • OpenAI o3 “震撼” 发布后回归技术本身的审视与进一步思考
  • Hive其四,Hive的数据导出,案例展示,表类型介绍
  • 3D开发工具HOOPS助力造船业加速设计与数字化转型
  • 告别Zoo of Factor:净化因子分析中的数据挖掘与p值操纵