返回顶部
  • 管理
  • 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;
    }
    
    posted @ 2021-02-19 11:36  QYcccccccc  阅读(143)  评论(0)    收藏  举报