Bootstrap

【C++保姆级入门】习题掌握分支结构

哈喽大家好,我是iecne,本期为大家带来的是CPP/C++保姆级入门教程的第六期—— 分支结构,包教包会,快来看看吧!

此教程适合新手小白,因为语言会十分的通俗易懂,不会有很多的专业词汇出现,可以更好的掌握并且吸收,后续加上持之以恒的练习题目将会基本巩固


目录

一.分支结构是什么

二.分支结构的用法

三.分支结构题目练习

  

1.数的性质

(1)题目解析

(2)参考答案

2.月份天数

(1)题目解析

(2)参考答案

3.ABC

(1)题目解析

(2)参考答案

四.max和min

五.总结

系列文章目录


一.分支结构是什么

人们在人生中需要做出许多选择,小到考虑晚上吃什么,大到决定高考志愿填报的学校。只有一次次选择后才能带来无限可能,我们要根据自己掌握的情况,做出最佳的选择。

程序的执行也不是一成不变的,往往会要求程序能够在不同的场合下有不同的动作。这时就需要在代码中使用条件语句来做出不同的选择


二.分支结构的用法

循序结构具体怎么做,新手小白们若没有看过

C++保姆级入门教程(3)   if语句

可以点击链接学习学习


三.分支结构题目练习

以下就是一些对于掌握分支结构的题目

  

1.数的性质

题目描述

一些整数可能拥有以下的性质:

  • 性质 1:是偶数;
  • 性质 2:大于 44 且不大于 1212。

小 A 喜欢这两个性质同时成立的整数;Uim 喜欢这至少符合其中一种性质的整数;八尾勇喜欢刚好有符合其中一个性质的整数;正妹喜欢不符合这两个性质的整数。现在给出一个整数 xx,请问他们是否喜欢这个整数?

输入格式

输入一个整数 x(0\le x \le 1000)x(0≤x≤1000)

输出格式

输出这 44 个人是否喜欢这个数字,如果喜欢则输出 1,否则输出 0,用空格分隔。输出顺序为:小 A、Uim、八尾勇、正妹。

输入输出样例

输入 

12

输出 

1 1 0 0

(1)题目解析

先把所有人假设为不喜欢这个数,

然后根据每个人的喜好判断,

如果喜欢,

则值为11,否则为00,

最后输出。

ifif判断的根据:

性质 1:是偶数

性质 2:大于 4 且不大于 12

小A 喜欢这两个性质同时成立的数字;Uim 喜欢这至少符合其中一种性质的数字;八尾勇喜欢刚好有符合其中一个性质的数字;正妹喜欢不符合这两个性质的数字

(2)参考答案

#include <iostream>
using namespace std;
int a = 0, b = 0, c = 0, d = 0, n;
int main() 
{
	cin >> n;
	if (n % 2 == 0 && n > 4 && n <= 12) a = 1;
	if (n % 2 == 0 || n > 4 && n <= 12 || n % 2 == 0 && n > 4 && n <= 12) b = 1;
	if (n % 2 == 0 && n <= 4 && n > 12 || n > 4 && n <= 12 && n % 2 == 1) c = 1;
	if (n % 2 == 1 && n <= 4 || n % 2 == 1 && n > 12) d = 1;
	printf("%d %d %d %d\n", a, b, c, d);//这里需要很多的空格,用printf更方便
	//cout << a << " " << b << " " << c << " " << d;
	return 0;
}

2.月份天数

题目描述

输入年份和月份,输出这一年的这一月有多少天。需要考虑闰年。

输入格式

输入两个正整数,分别表示年份 yy 和月数 mm,以空格隔开。

输出格式

输出一行一个正整数,表示这个月有多少天。

输入输出样例

输入    1926 8

输出    31

输入    2000 2

输出    29

(1)题目解析

    这题具备一些常识就能过。

  1. 大月31天:1,3,5,7,8,10,12
  2. 小月30天:4,6,9,11
  3. 2月特殊: 平年28天,闰年29天

   四年一润,百年不润,四百年再润

        (小学内容)

     但是对Cpp(c++ pp不许要按Shift)的新手小白来说会比较不友好,因为分支很多并且复杂

  (2)参考答案

#include <iostream>
using namespace std;
int main()
{
	int n, m;  //long long 
	cin >> n >> m;
	if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) 
	{ 
		cout << "31" << endl;//如上文字 1 3 5 7 8 10 12 都是31天
		return 0;
	}
	if (m == 4 || m == 6 || m == 9 || m == 11) 
	{ 
		cout << "30" << endl;//如上文字 4 6 9 11都是30天
		return 0; 
	}
	if ((n % 400 == 0 || (n % 4 == 0 && n % 100 != 0)) && m == 2)
	{
		cout << "29" << endl;//如果是闰年那么输出29天
		return 0;
	}
	else cout << "28"; //如果不是那么输出28天
	return 0;
}

3.ABC

【题目描述】

三个整数分别为 A,B,CA,B,C。这三个数字不会按照这样的顺序给你,但它们始终满足条件:A < B < CA<B<C。为了看起来更加简洁明了,我们希望你可以按照给定的顺序重新排列它们。

【输入格式】

第一行包含三个正整数 A,B,CA,B,C,不一定是按这个顺序。这三个数字都小于或等于 100100。第二行包含三个大写字母 AA、BB 和 CC(它们之间没有空格)表示所需的顺序。

【输出格式】

在一行中输出 AA,BB 和 CC,用一个 (空格)隔开。

输入输出样例

输入

1 5 3
ABC

输出 

1 3 5

输入 #2

6 4 2
CAB

输出 #2

6 2 4

(1)题目解析

第一行:输入三个数x、y、z,这三个数不一定有序,我们设A为当中(x,y,z中)最小的,C为最大的,B为剩下的那个(非最小非最大)。)

现在你手里有ABC三个数了

第二行:输入ABC三个字母(任意顺序),输出对应的ABC(就是上一行那三个数)

//感谢 Lucaster_ 的翻译

(2)参考答案

#include<iostream>
using namespace std;
int a,b,c,i,x,y,z,sum;
char ch;
int main()
{
	cin>>x>>y>>z;
	sum=x+y+z;
	a=min(min(x,y),z);
	c=max(max(x,y),z);
	b=sum-a-c;
	for(i=1;i<=3;i++)
	{
		cin>>ch;
		if(ch=='A') cout<<a<<' ';
		if(ch=='B') cout<<b<<' ';
		if(ch=='C') cout<<c<<' ';
	}
	return 0;
}

四.max和min

我们上一《难题》用了一个很难的方法—— max and min

a=min(min(x,y),z);
c=max(max(x,y),z);

我们看一下这两条代码,再分解以下

int aa,cc,a,c;
int x,y,z;
aa=min(x,y);
a=min(aa,z);
cc=max(x,y)
c=max(cc,z);

首先解释以下min

比如aa=min(x,y),意思就是aa=x和y中小的一个

若x=10,y=8,aa=min(x,y),则aa=y //8

反之,max就是取大的

若x=10,y=8,aa=max(x,y),则aa=x //10

然后我们把新的知识联系到老知识里边

aa=min(x,y);
就等于
if(x>y) aa=y;
else aa=x;

aa=max(x,y);
就等于
if(x>y) aa=x;
else aa=y;

而第三题的那段代码就不用我解释了吧?

五.总结

本节课主要是讲解三道循序结构的题目,至此分支结构(if)思想博主已经分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下

包教包会,帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!


系列文章目录

 本期收录于博主的专栏——C++保姆级入门教程,适用于编程入门初学者,感兴趣的朋友们可以订阅,查看其它专栏。

C++保姆级入门教程_iecne的博客-CSDN博客

C++保姆级入门教程(1)   变量 输出 输入

C++保姆级入门教程(2)   算术运算和赋值

C++保姆级入门教程(3)   if语句

C++保姆级入门教程(4)   循环

C++保姆级入门教程(5)   顺序结构

C++保姆级入门教程(6)   分支结构


感谢每一个观看本篇文章的朋友,更多精彩敬请期待:iecne的博客_CSDN博客-C++保姆级入门教程领域博主

文章存在借鉴,如有侵权请联系修改删除!

;