2021寒假DLY一阶段部分题解
2021寒假DLY一阶段部分题解
一、买铅笔
【分析】
这道题目有两个限制条件:
- 铅笔要整包购买且购买的支数要大于等于需要的支数
- 找出三种铅笔购买价格的最小值
首先,整包购买的话就需要我们判断需要的铅笔数n是否能够整除每一袋的支数,如果不能那么就要多买一袋
计算出所需的袋数*对应的单价得到三种铅笔的总价格
找出三种铅笔的价格x,y,z的最小值,输出即可,找出最小值的方法请查看代码里的注释。
【参考代码】
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,x1,x2,y1,y2,z1,z2,x,y,z;
cin>>n>>x1>>x2>>y1>>y2>>z1>>z2; //按照题目要求输入单价和支数
if(n%x1!=0){ //如果不能整包购买
x=(n/x1+1)*x2; //需要多加一包
}
else
x=(n/x1)*x2;
if(n%y1!=0){
y=(n/y1+1)*y2;
}
else
y=(n/y1)*y2;
if(n%z1!=0){
z=(n/z1+1)*z2;
}
else
z=(n/z1)*z2;
//找出x,y,z的最小值,这里的方法很多
//方法一:可以直接列举判断所有x,y,z的大小情况,输出其中的最小值
//方法二:也可以使用三数排序的思想把最小值存在x里输出
x=min(x,min(y,z));//这里是代码量最少的写法,使用min函数,随着学习的进行这样的系统函数会经常用到,需要多积累
cout<<x;
return 0;
}
二、温度转换
【分析】
这道题目难度不大,主要是考查保留位数,变量数据类型和整数与整数运算
着重说一下保留位数的方法,有两种:
方法一:cout语句——C++输出语句
cout输出语句默认保留小数点后6位。想要保留其他位数,就需要进行输出控制,具体的语句就是:
cout << fixed << setprecision(你想保留的位数) << 输出的值/变量 << endl;
例:对变量c进行小数点后5位保留
cout << fixed << setprecision(5) << c << endl;
方法二:printf()语句——C语言输出语句
由于C++语言兼容C语言的语法,所以在乘机货物收费一题中,也提到了printf语句保留位数的方法。它与cout都能实现输出的效果,用法为:printf(“%.xlf”, 输出的值/变量);
例:对变量c进行小数点后5位保留
printf(“%.5lf”, c);
其他注意事项请查看代码注释。
【参考代码】
#include <bits/stdc++.h>
using namespace std;
int main(){
double c,f; //注意c和f的数据类型
cin>>f;
c=5*(f-32)/9.0; //整数与小数运算才能得到小数
cout << fixed << setprecision(5) << c << endl; //保留位数
// printf("%.5lf",c); //另外一种方法
return 0;
}
三、判断三角形
【分析】
本题主要考查对三角形判断条件的书写。
普通三角形的定义:“任意两边之和大于第三边”
等腰三角形满足任意有两边相等即可
等边三角形满足三边相等
将这些条件翻译成对应的判断条件,并且理清判断逻辑即可。
判断逻辑:
如果是三角形
输出Yes triangle
如果是等腰三角形
输出Isosceles triangle
如果是等边三角形
输出Equilateral triangle
否则
输出Not triangle
【参考代码】
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
if((a+b)>c&&(b+c)>a&&(a+c)>b){
cout<<"Yes triangle"<<endl;
if(a==b||a==c||b==c)
cout<<"Isosceles triangle"<<endl;
if(a==b&&b==c)
cout<<"Equilateral triangle"<<endl;
}
else
cout<<"Not triangle"<<endl;
return 0;
}
四、月份天数
【分析】
本题是判断闰年一题的变式,切入点可以从月份入手。
月份分为大、小、平月,而闰年和非闰年的区别在于平月(即2月)
所以判断的逻辑可以这样的去设计:
如果是大月
输出31
如果是小月
输出30
如果是平月
如果是闰年
输出29
如果是平年
输出28
【参考代码】
#include <bits/stdc++.h>
using namespace std;
int main(){
int m,y;
cin>>y>>m;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) //大月
cout <<31<<endl;
if(m==4||m==6||m==9||m==11) //小月
cout <<30<<endl;
if(m==2){ //平月
if((y%4==0)&&(y%100!=0)||(y%400==0)) //闰年:普通闰年和世纪闰年
cout <<29<<endl;
else //平年
cout <<28<<endl;
}
return 0;
}

浙公网安备 33010602011771号