12.6每日一题(备战蓝桥杯程序的控制结构)
- [题目 1638: 【入门】判断正负数或零](#题目 1638: 【入门】判断正负数或零)
- [题解 1638: 【入门】判断正负数或零](#题解 1638: 【入门】判断正负数或零)
- [题目 1348: 【入门】求绝对值](#题目 1348: 【入门】求绝对值)
- [题解 1348: 【入门】求绝对值](#题解 1348: 【入门】求绝对值)
- [题目 1033: 【入门】判断奇偶数](#题目 1033: 【入门】判断奇偶数)
- [题解 1033: 【入门】判断奇偶数](#题解 1033: 【入门】判断奇偶数)
- [题目 2152: 奇偶ASCII值判断](#题目 2152: 奇偶ASCII值判断)
- [题解 2152: 奇偶ASCII值判断](#题解 2152: 奇偶ASCII值判断)
- [题目 1034: 【入门】两数比大小](#题目 1034: 【入门】两数比大小)
- [题解 1034: 【入门】两数比大小](#题解 1034: 【入门】两数比大小)
- [题目 2153: 判断是否为两位数](#题目 2153: 判断是否为两位数)
- [题解 2153: 判断是否为两位数](#题解 2153: 判断是否为两位数)
- [题目 2154: 收集瓶盖赢大奖](#题目 2154: 收集瓶盖赢大奖)
- [题解 2154: 收集瓶盖赢大奖](#题解 2154: 收集瓶盖赢大奖)
- [题目 2155: 判断一个数能否同时被3和5整除](#题目 2155: 判断一个数能否同时被3和5整除)
- [题解 2155: 判断一个数能否同时被3和5整除](#题解 2155: 判断一个数能否同时被3和5整除)
- [题目 2156: 判断能否被3,5,7整除](#题目 2156: 判断能否被3,5,7整除)
- [题解 2156: 判断能否被3,5,7整除](#题解 2156: 判断能否被3,5,7整除)
- [题目 2157: 有一门课不及格的学生](#题目 2157: 有一门课不及格的学生)
- [题解 2157: 有一门课不及格的学生](#题解 2157: 有一门课不及格的学生)
- [题目 2158: 晶晶赴约会](#题目 2158: 晶晶赴约会)
- [题解 2158: 晶晶赴约会](#题解 2158: 晶晶赴约会)
- [题目 2159: 骑车与走路](#题目 2159: 骑车与走路)
- [题解 2159: 骑车与走路](#题解 2159: 骑车与走路)
- [题目 2160: 分段函数](#题目 2160: 分段函数)
- [题解 2160: 分段函数](#题解 2160: 分段函数)
- [题目 2161: 计算邮资](#题目 2161: 计算邮资)
- [题解 2161: 计算邮资](#题解 2161: 计算邮资)
- [题目 1039: 【入门】求三个数的最大数](#题目 1039: 【入门】求三个数的最大数)
- [题解 1039: 【入门】求三个数的最大数](#题解 1039: 【入门】求三个数的最大数)
- [题目 1045: 【入门】判断能否构成三角形](#题目 1045: 【入门】判断能否构成三角形)
- [题解 1045: 【入门】判断能否构成三角形](#题解 1045: 【入门】判断能否构成三角形)
- [题目 1646: 【基础】闰年判断](#题目 1646: 【基础】闰年判断)
- [题解 1646: 【基础】闰年判断](#题解 1646: 【基础】闰年判断)
- [题目 2162: 点和正方形的关系](#题目 2162: 点和正方形的关系)
- [题解 2162: 点和正方形的关系](#题解 2162: 点和正方形的关系)
- [题目 2163: 简单计算器](#题目 2163: 简单计算器)
- [题解 2163: 简单计算器](#题解 2163: 简单计算器)
- [题目 2164: 求一元二次方程](#题目 2164: 求一元二次方程)
- [题解 2164: 求一元二次方程](#题解 2164: 求一元二次方程)
题目 1638: 【入门】判断正负数或零
题目描述
输入一个整数,判断它是正数、负数或零。
输入输出要求:
输入的数是正数时,输出该数>0
输入的数是负数时,输出该数<0
输入的数是0时,输出 0=0
样例输入1
5
样例输出1
5>0
样例输入2
-7
样例输出1
-7<0
样例输入3
0
样例输出3
0=0
输入
一个整数n
输出
按题目要求输出判断结果
样例输入
plain
6
样例输出
plain
6>0
来源/分类
[分支问题]
题解 1638: 【入门】判断正负数或零
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
if(n > 0){
printf("%d>0",n);
}else if(n == 0){
printf("%d=0",n);
}else{
printf("%d<0",n);
}
return 0;
}
题目 1348: 【入门】求绝对值
题目描述
数学中有一个绝对值的概念,正数的绝对值是本身,负数的绝对值是它的相反数(相反数的概念,5的相反数数-5,-2的相反数是2),0的绝对值任然是0。请从键盘读入一个整数n(n可能是整数,也可能是负数),求出n的绝对值。(7.1)
输入
一个整数n,可能是正整数,也可能是负整数
输出
n的绝对值
样例输入
plain
-5
样例输出
plain
5
来源/分类
[分支问题]
题解 1348: 【入门】求绝对值
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
printf("%d",abs(n));
return 0;
}
题目 1033: 【入门】判断奇偶数
题目描述
输入一个整数,判断是否为偶数。是输出"y e s",否则输出"n o"。
输入
输入只有一行,包括1个整数。
输出
输出只有一行。(注意输出格式,具体请看下方提示)
样例输入
plain
2
样例输出
plain
y e s
提示
要注意空格!!!!!!!!
来源/分类
[分支问题]
题解 1033: 【入门】判断奇偶数
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
if(n % 2 == 0){
printf("y e s");
}else {
printf("n o");
}
return 0;
}
题目 2152: 奇偶ASCII值判断
题目描述
任意输入一个字符,判断其ASCII是否是奇数,若是,输出YES,否则,输出NO。例如,字符A的ASCII值是65,则输出YES,若输入字符B(ASCII值是66),则输出NO。
输入
输入一个字符。
输出
如果其ASCII值为奇数,则输出YES,否则,输出NO。
样例输入
plain
A
样例输出
plain
YES
来源/分类
[信息学奥赛一本通] [if选择结构]
题解 2152: 奇偶ASCII值判断
#include<iostream>
#include<cstdio>
using namespace std;
char c;
int main()
{
scanf("%c",&c);
int x = (int)c;
if(x % 2 == 1){
puts("YES");
}else{
puts("NO");
}
return 0;
}
题目 1034: 【入门】两数比大小
题目描述
有A,B两个不相等的数,请将其中较大数打印出来。
输入
输入只有一行,包括2个整数。之间用一个空格分开。输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
输出
输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
样例输入
plain
45 78
样例输出
plain
78
来源/分类
[分支问题]
题解 1034: 【入门】两数比大小
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a , b;
int main()
{
scanf("%d %d",&a,&b);
printf("%d",max(a,b));
return 0;
}
题目 2153: 判断是否为两位数
题目描述
判断一个正整数是否是两位数(即大于等于10且小于等于99)。若该正整数是两位数,输出1,否则输出0。
输入
一个正整数,不超过1000。
输出
一行。若该正整数是两位数,输出1,否则输出0。
样例输入
plain
54
样例输出
plain
1
来源/分类
[信息学奥赛一本通] [if选择结构]
题解 2153: 判断是否为两位数
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
if(n >= 10 && n <= 99){
puts("1");
}else {
puts("0");
}
return 0;
}
题目 2154: 收集瓶盖赢大奖
题目描述
某饮料公司最近推出了一个"收集瓶盖赢大奖"的活动:如果你拥有10个印有"幸运"、或20个印有"鼓励"的瓶盖,就可以兑换一个神秘大奖。现分别给出你拥有的印有"幸运"和"鼓励"的瓶盖数,判断是否可以去兑换大奖。若可以兑换大奖,输出1,否则输出0。
输入
一行,包含两个整数,分别是印有"幸运"和"鼓励"的瓶盖数,用一个空格隔开。
输出
一行。若可以兑换大奖,输出1,否则输出0。
样例输入
plain
11 19
样例输出
plain
1
来源/分类
[信息学奥赛一本通] [if选择结构]
题解 2154: 收集瓶盖赢大奖
#include<iostream>
#include<cstdio>
using namespace std;
int a , b;
int main()
{
scanf("%d %d",&a,&b);
if(a >= 10 || b >= 20){
puts("1");
}else {
puts("0");
}
return 0;
}
题目 2155: 判断一个数能否同时被3和5整除
题目描述
判断一个数n 能否同时被3和5整除,如果能同时被3和5整除输出YES,否则输出NO。
输入
输入一行,包含一个整数n。( -1,000,000 < n < 1,000,000)
输出
输出一行,如果能同时被3和5整除输出YES,否则输出NO。
样例输入
plain
15
样例输出
plain
YES
来源/分类
[信息学奥赛一本通] [if选择结构]
题解 2155: 判断一个数能否同时被3和5整除
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
if(n % 3 == 0 && n % 5 == 0){
puts("YES");
}else {
puts("NO");
}
return 0;
}
题目 2156: 判断能否被3,5,7整除
题目描述
给定一个整数,判断它能否被3,5,7整除,并输出以下信息:
1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格);
2、只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者3 7或者5 7,中间用空格分隔);
3、只能被其中一个数整除(输出这个除数);
4、不能被任何数整除,输出小写字符'n',不包括单引号。
输入
输入一行,包括一个整数。
输出
输出一行,具体见题目描述
样例输入
plain
105
样例输出
plain
3 5 7
来源/分类
[信息学奥赛一本通][if选择结构]
题解 2156: 判断能否被3,5,7整除
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
if(n % 3 == 0 && n % 5 == 0 && n % 7 == 0){
printf("%d %d %d",3,5,7);
}else if(n % 3 == 0 && n % 5 == 0 && n % 7 != 0){
printf("%d %d",3,5);
}else if(n % 3 == 0 && n % 5 != 0 && n % 7 == 0){
printf("%d %d",3,7);
}else if(n % 3 != 0 && n % 5 == 0 && n % 7 == 0){
printf("%d %d",5,7);
}else if(n % 3 == 0 && n % 5 != 0 && n % 7 != 0){
printf("%d",3);
}else if(n % 3 != 0 && n % 5 == 0 && n % 7 != 0){
printf("%d",5);
}else if(n % 3 != 0 && n % 5 != 0 && n % 7 == 0){
printf("%d",7);
}else{
printf("%c",'n');
}
return 0;
}
题目 2157: 有一门课不及格的学生
题目描述
给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。若该生恰好有一门课不及格,输出1;否则输出0。
输入
一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩。
输出
若该生恰好有一门课不及格,输出1;否则输出0。
样例输入
plain
50 80
样例输出
plain
1
来源/分类
[信息学奥赛一本通] [if选择结构]
题解 2157: 有一门课不及格的学生
这里要考虑如果都是不及格怎么办
#include<iostream>
#include<cstdio>
using namespace std;
int a , b;
int main()
{
scanf("%d %d",&a,&b);
if(a < 60 && b < 60){
puts("0");
} else if(a < 60 || b < 60){
puts("1");
}else{
puts("0");
}
return 0;
}
题目 2158: 晶晶赴约会
题目描述
晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1、3、5有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出YES;如果不能则输出NO。注意YES和NO都是大写字母!
输入
输入有一行,贝贝邀请晶晶去看展览的日期,用数字1到7表示从星期一到星期日。
输出
输出有一行,如果晶晶可以接受贝贝的邀请,输出YES,否则,输出NO。注意YES和NO都是大写字母!
样例输入
plain
2
样例输出
plain
YES
来源/分类
[信息学奥赛一本通] [switch语句]
题解 2158: 晶晶赴约会
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
if(n == 1 || n == 3 || n == 5){
puts("NO");
}else{
puts("YES");
}
return 0;
}
题目 2159: 骑车与走路
题目描述
在清华校园里,没有自行车,上课办事会很不方便。但实际上。并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,是骑车快还是走路快。如果骑车快,输出一行"Bike";如果走路快,输出一行"Walk";如果一样快,输出一行"All"。
输入
输入一行,包含一个整数n,表示一次办事要行走的距离,单位为米。
输出
输出一行,如果骑车快,输出一行"Bike";如果走路快,输出一行"Walk";如果一样快,输出一行"All"。
样例输入
plain
120
样例输出
plain
Bike
提示
数据范围
1≤n≤200
来源/分类
[信息学奥赛一本通] [switch语句]
题解 2159: 骑车与走路
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
double x = n / 1.2;
double r = (n / 3.0) + 50;
if(r < x){
puts("Bike");
}else if(r == x){
puts("All");
}else{
puts("Walk");
}
return 0;
}
题目 2160: 分段函数
题目描述
编写程序,计算下列分段函数y=f(x)的值。结果保留到小数点后三位。
输入
一个浮点数N(0 ≤ N < 20)。
输出
输出 N 对应的分段函数值:f(N)。结果保留到小数点后三位。
样例输入
plain
1.0
样例输出
plain
1.500
来源/分类
[信息学奥赛一本通] [switch语句]
题解 2160: 分段函数
#include<iostream>
#include<cstdio>
using namespace std;
double x;
int main()
{
scanf("%lf",&x);
if(x >= 0 && x < 5){
printf("%.3lf",-x + 2.5);
}else if(x >= 5 && x < 10){
printf("%.3lf",2 - 1.5 * (x - 3) * (x - 3));
}else{
printf("%.3lf",x / 2 - 1.5);
}
return 0;
}
题目 2161: 计算邮资
题目描述
根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内(包括1000克), 基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。
输入
输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。
输出
输出一行,包含一个整数,表示邮费。
样例输入
plain
1200 y
样例输出
plain
17
来源/分类
[信息学奥赛一本通] [switch语句]
题解 2161: 计算邮资
#include<iostream>
#include<cstdio>
using namespace std;
int a , sum;
char c;
int main()
{
scanf("%d %c",&a,&c);
if(c == 'y'){
sum += 5;
if(a <= 1000){
printf("%d",8 + sum);
}else{
a -= 1000;
int x = a / 500;
if(a % 500 > 0){
printf("%d",(8 + sum) + (x * 4) + 4);
}
}
}else{
if(a <= 1000){
printf("%d",8);
}else{
a -= 1000;
int x = a / 500;
if(a % 500 > 0){
printf("%d",(8 + sum) + (x * 4) + 4);
}
}
}
return 0;
}
题目 1039: 【入门】求三个数的最大数
题目描述
已知有三个不等的数,将其中的最大数找出来。
输入
输入只有一行,包括3个整数。之间用一个空格分开。
输出
输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
样例输入
plain
1 5 8
样例输出
plain
8
来源/分类
[分支问题]
题解 1039: 【入门】求三个数的最大数
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a , b , c;
int main()
{
scanf("%d %d %d",&a,&b,&c);
printf("%d",max(a,max(b,c)));
return 0;
}
题目 1045: 【入门】判断能否构成三角形
题目描述
输入三个整数,表示3条线段的长度,判断这三条线段能否构成三角形。能构成就输出'Yes',否则输出'No'。
三角形的判断标准是:任意两边之和要大于第三边,比如有一个三角形的三条边分别为:3 5 7,这个三角形的三条边就满足3 + 5 > 7且3 + 7 > 5,且5 + 7 > 3,因此这三条边能够构成三角形;
再比如,一个三角形的三条边为3 8 5,那么因为3+5不满足大于8,就不能构成三角形。
输入
三个整数
输出
Yes or No
样例输入
plain
3 8 5
样例输出
plain
No
来源/分类
[分支问题]
题解 1045: 【入门】判断能否构成三角形
#include<iostream>
#include<cstdio>
using namespace std;
int a , b , c;
int main()
{
scanf("%d %d %d",&a,&b,&c);
if(a + b > c && a + c > b && b + c > a){
puts("Yes");
}else{
puts("No");
}
return 0;
}
题目 1646: 【基础】闰年判断
题目描述
输入年份,判断是否为闰年。如果是,则输出"yes",否则输出"no"。
提示:闰年的判断有两个条件,只需满足一个即可
1.能够被4整除但不能被100整除的为闰年;
2.能够被400整除的为闰年;
输入
一个四位整数,表示年份。
输出
闰年输出"yes",否则输出"no"。
样例输入
plain
1996
样例输出
plain
yes
来源/分类
[分支问题]
题解 1646: 【基础】闰年判断
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
if(n % 4 == 0 && n % 100 != 0 || n % 400 == 0){
puts("yes");
}else{
puts("no");
}
return 0;
}
题目 2162: 点和正方形的关系
题目描述
有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断一个给定的点是否在这个正方形内(包括正方形边界)。如果点在正方形内,则输出yes,否则输出no。
输入
输入一行,包括两个整数x、y,以一个空格分开,表示坐标(x,y)。
输出
输出一行,如果点在正方形内,则输出yes,否则输出no。
样例输入
plain
1 1
样例输出
plain
yes
来源/分类
[信息学奥赛一本通] [switch语句]
题解 2162: 点和正方形的关系
#include<iostream>
#include<cstdio>
using namespace std;
int x , y;
int main()
{
scanf("%d %d",&x,&y);
if((x >= -1 && x <= 1) && (y >= -1 && y <= 1)){
puts("yes");
}else{
puts("no");
}
return 0;
}
题目 2163: 简单计算器
题目描述
一个最简单的计算器,支持+, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。然而:
\1. 如果出现除数为0的情况,则输出:Divided by zero!
\2. 如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!
输入
输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。
输出
输出只有一行,一个整数,为运算结果。然而:
1.如果出现除数为0的情况,则输出:Divided by zero!
2.如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!
样例输入
plain
1 2 +
样例输出
plain
3
来源/分类
[信息学奥赛一本通] [switch语句]
题解 2163: 简单计算器
计算除法的时候我们的被除数不能为0
#include<iostream>
#include<cstdio>
using namespace std;
int a , b ;
char c;
int main()
{
scanf("%d %d %c",&a,&b,&c);
if(c == '+'){
printf("%d",a + b);
}else if(c == '-'){
printf("%d",a - b);
}else if(c == '*'){
printf("%d",a * b);
}else if(c == '/'){
//这里要考虑被除数是否为0
if(b == 0){
puts("Divided by zero!");
return 0;
}
printf("%d",a / b);
}else{
puts("Invalid operator!");
}
return 0;
}
题目 2164: 求一元二次方程
题目描述
输入
输入一行,包含三个浮点数a,b,c(它们之间以一个空格分开),分别表示方程ax2+bx+c=0的系数。
输出
输出一行,表示方程的解。
若两个实根相等,则输出形式为:"x1=x2=...";
若两个实根不等,在满足根小者在前的原则,则输出形式为:"x1=...;x2=...";
若无实根输出"No answer!"。
所有输出部分要求精确到小数点后5位,数字、符号之间没有空格。
样例输入
plain
-15.97 19.69 12.02
样例输出
plain
x1=-0.44781;x2=1.68075
来源/分类
[信息学奥赛一本通][switch语句]
题解 2164: 求一元二次方程
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
double a , b , c;
int main()
{
scanf("%lf %lf %lf",&a,&b,&c);
if (a == 0) { // 一次方程 ax + b = 0
if (b == 0) {
printf("No answer!");
} else {
printf("x=%.5f", -c / b);
}
} else { // 二次方程 ax^2 + bx + c = 0
double delta = b * b - 4 * a * c;
if (delta > 0) { // 有两个实根
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
printf("x1=%.5f;x2=%.5f", x2, x1);
} else if (delta == 0) { // 有两个相等的实根
double x = -b / (2 * a);
printf("x1=x2=%.5f", x);
} else { // 没有实根
printf("No answer!");
}
}
return 0;
}