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