C++入门——选择结构1

ps:该系列文章为C++入门相关题目的题解,帮助巩固知识.

1.数值变换

【问题描述】编写一程序,从键盘输入一个三位正整数,然后反向输出对应的数,如果输入的数不是三位正整数,则输出-1。

【输入形式】从键盘输入三位的正整数。

【输出形式】输出交换后的正整数值。

【输入样例】356 

【输出样例】653

【样例说明】从键盘输入的正整数值为356,将该数的个位与百位互换,所得结果为653.如果输入的正整数为300,则输出为3。

【题目解析】分别得到个位、十位、百位的数值,然后依次输出。注意特殊情况,代码如下:

#include<iostream>
using namespace std;
int main()
{
	int x;
	cin >> x;
	if (x < 100 || x>999)
		cout << -1;//判断是否为三位数
	else {
		int a = x % 10;//个位数
		if (a != 0) cout << a;//不为0则输出
		int b = x / 10 % 10;//十位
		if (b != 0) cout << b;
		int c = x / 100;
		cout << c;
	}
	return 0;
}

2.水仙花数

【问题描述】判断一个数是否为“水仙花数”,如果是则输出YES,否则输出NO。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153=13+53+33。

【输入形式】一个数

【输出形式】YES或者NO(必须大写)

【样例输入】1

【样例输出】NO

【样例输入】153

【样例输出】YES

【样例说明】1不是水仙花数,所以输出NO;153是水仙花数,所以输出YES

【题目解析】首先判断是否为三位数,然后判断各位数字的立方和等于该数本身。代码如下:

#include<iostream>
using namespace std;
int main()
{
	int x;
	cin >> x;
	int a = x % 10;//个位数
	int b = x / 10 % 10;//十位
	int c = x / 100;//百位
	if (x < 100 || x>999)
		cout <<"NO";
	else {
		if(a*a*a+b*b*b+c*c*c==x)
			cout << "YES";
		else cout << "NO";
	}
	return 0;
}

3.判断3或7的倍数

【问题描述】编写程序,输入一个数,判断其是否是3或7的倍数,分4种情况输出:是3的倍数但不是7的倍数时输出1,不是3的倍数但是7的倍数时输出2,是3的倍数也是7的倍数时输出3,不是3的倍数也不是7的倍数时输出4。 

【输入形式】一个数

【输出形式】一个数

【样例输入】21

【样例输出】3

【样例说明】21既是3的倍数,又是7的倍数,属于第3种情况,输出3

很容易理解,代码如下:

#include<iostream>
using namespace std;
int main()
{
	int x;
	cin >> x;
	if (x % 3 == 0 && x % 7 != 0)//情况1
		cout << 1;
	else if (x % 3 != 0 && x % 7 == 0)//情况2
		cout << 2;
	else if (x % 3 == 0 && x % 7 == 0)//情况3
		cout << 3;
	else//情况4
		cout << 4;
	return 0;
}

4.计算某年某月的天数

【问题描述】编写程序计算某年某月的天数。输入年份year和月份month,输出该月份的天数。 

【输入形式】两个数字,中间用空格隔开

【输出形式】一个数字

【样例输入】2012 2

【样例输出】29

【样例说明】2012年2月有29天

【题目解析】大月31天:1、3、5、7、8、10、12;小月30天:4、6、9、11;二月分为闰年:29天,平年28天;闰年判断标准:如果一个年份能被4整除但不能被100整除,那么这个年份就是闰年。例如,2004年和2020年都是闰年。如果一个年份是整百年份(如1900年、2000年),它必须能被400整除才是闰年。例如,1900年不是闰年,而2000年是闰年。

代码如下:

#include<iostream>
using namespace std;
int main()
{
	int y,m;//年,月
	cin >> y >> m;
	if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
		cout << 31;
	else if (m == 4 || m == 6 || m == 9 || m == 11)
		cout << 30;
	else {
		if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
			cout << 29;
		else cout << 28;
	}
	return 0;
}

5.三个整数找最大值

【问题描述】输入3个整数,输出其中最大数。

【样例输入】1 3 2

【样例输出】3

【样例说明】1、3、2这三个数中最大值是3

【题目解析】两者比较后再与第三者比较

#include<iostream>
using namespace std;
int main()
{
	int a, b, c;
	cin >> a >> b >> c;
	if (a > b)
	{
		if (a > c)
			cout << a;
		else
			cout << c;
	}
	else
	{
		if (b > c)
			cout << b;
		else
			cout << c;
	}
	return 0;
}

或者直接用max(x,y)比较,如下:

#include<iostream>
using namespace std;
int main()
{
	int a, b, c;
	cin >> a >> b >> c;
	cout << max(max(a, b), c);
	return 0;
}

选择结构第一部分就到这里,代码无情,人间有情,欢迎大家点赞评论加收藏。内容如有问题希望大家在评论区指点一二。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值