Programer_Sanust:2020年-蓝桥杯C++初级组江苏省省赛题目解析大全

2020年-蓝桥杯C++初级组江苏省省赛题目解析大全

  • 转载须知:本文欢迎转载,转载时请标注出处!
    • PS:未经允许转载的别让我找到啊!
  • 1.双面打印
    • 题目描述
    • 题目解析
    • AC代码
  • 2.求完数
    • 题目描述
    • 题目解析
    • AC代码
  • 3.求阴影部分面积
    • 题目描述
    • 题目解析
    • AC代码
  • 4.判断分数
    • 题目描述
    • 题目解析
    • AC代码
  • 5.节气
    • 题目描述
    • 题目解析
    • AC代码

Hello,大家好,我是Sanust,今天我给大家带来的是蓝桥杯C++初级组省赛题目的解析

注:这些是本人比赛时真实的代码不要问我为什么能参加比赛因为我才五年级……


转载须知:本文欢迎转载,转载时请标注出处!

PS:未经允许转载的别让我找到啊!

1.双面打印

题目描述

在2020年这个漫长的寒假里,虽然小蓝和他的同学们都在家里,但依旧通过网课的方式坚持学习,而老师们也依旧会布置作业和发放各种电子版的学习资料。为了方便小蓝的学习,妈妈会把老师发放的材料打印出来。而为了环保,妈妈一般都进行双面打印,也就是一张纸的正反面都打印出相应的内容。举个例子来说:如果一份电子材料有3页,那么需要2张纸进行打印;如果一份电子材料有4页,那么还是需要2张纸进行打印。现在已经知道了一份电子版的学习材料的页数N,你能帮小蓝计算一下需要几张纸吗?

输入样例:

7

输出样例:

4

题目解析

这题很简单,读入需要打印的页数,把它/2并向下取整,之后再把原数%2
/2是有多少纸可以双面打印,%2是多少纸只打一面

AC代码

#include
using namespace std;
int n,ans;//ans同样可以不定义
int main()
{
    cin>>n;
    ans=floor(n/2)+n%2;//floor是为了防止出现向上取整的情况
    cout<<ans;
    return 0;
}

2.求完数

题目描述

因子:因子也叫因数,例如3×5=15,那么3和5是15的因子。同时15×1=15,那么1和15也是15的因子。 1,3,5,15 这四个因子是15的所有因子。

完数:如果一个数等于不含它本身的其他因子之和,则称该数为‘完数’。如6的因子有1,2,3,6,且1+2+3= 6,因此6是完数。

题目描述: 输入一个正整数N(0

题目解析

这题我一开始用vector写挂了,后来用了其他的思路就AC了

Main函数比较简单,遍历一遍,借助一个check函数来判断
check函数同样遍历一遍,如果能被整除并不是要判断的数就加上这个因子
最后判断一下是否相等再return传回Main函数

AC代码

#include
using namespace std;
int n,ans=0;
bool check(int n)
{
    int sum=0;
    for (int i=1;i<=n;i++)
        if (n%i==0&&i!=n) sum+=i;
    if (sum==n) return true;
    else return false;
}
int main()
{
    cin>>n;
    for (int i=1;i<n;i++)
        if (check(i))
        {
           cout<<i<<endl;
           ans++;
        }
    cout<<'*'<<ans;
    return 0;
}

3.求阴影部分面积

题目描述

用户输入一个正整数a(0

Programer_Sanust:2020年-蓝桥杯C++初级组江苏省省赛题目解析大全_第1张图片

题目解析

很简单,只要把半圆阴影移到三角那块就可以了,这样面积就是a*a/2了
只不过要保留两位小数,用double

AC代码

#include
using namespace std;
double n,ans=0.00;
int main()
{
    cin>>n;
    ans=n*n/4;
    cout<<fixed<<setprecision(2)<<ans;
    return 0;
}

4.判断分数

题目描述

受疫情的影响,2020年蓝桥杯大赛青少年创意编程C++组的省赛在网上进行。选择题有5道,都是单选题,每道30分,共计150分。每道选择题选对得30分,选错或不选得0分。
注意以下仅为假设,不代表本场考试选择题的真实答案,仅是针对本编程题假设的答案。
假设正确的答案为“DCBAD”,你能根据选手的提交情况,判定选手的选择题总分吗?
选手提交一个由5个字符组成的字符串,代表选手的选项。字符串仅能包含如下5种字符:“D”、“C”、“B”、“A”、“E”。其中“A”、“B”、“C”、“D”代表选手选择了某个选项,而“E”代表选手未做该题。求总分。

题目解析

先定义一个字符串存放答案,输入选手的选项,通过一个循环和答案比对,只有答对的才加分,最后直接输出

AC代码

#include
using namespace std;
string answer="DCBAD",n;
int sum=0; 
int main()
{
    cin>>n;
    for (int i=0;i<5;i++)
        if (n[i]==answer[i]) 
            sum+=30;
    cout<<sum;
}

5.节气

题目描述

夏至将至。《中国天文年历》显示,北京时间6月21日,也就是明天,夏至伴随着接天莲叶的碧,和映日荷花的红,即将盛装登场。夏至是中国“二十四节气”的第十个节气,“二十四节气”被列入联合国教科文组织人类非物质文化遗产名录。在国际气象界,这一已有千年历史的时间认知体系被誉为“中国第五大发明”。
春雨惊春清谷天,夏满芒夏暑相连。秋处露秋寒霜降,冬雪雪冬小大寒。二十四节气,在四季轮回流淌,每个节气都有它较为稳定的日子。下表给出了农历庚子年(公历2020年1月25日~2021年2月11日)中,二十四个节气的名称,公历具体日期及汉语拼音的缩写。

输入描述
整数M,N(2≤M≤12,1≤N≤31),M,N分别代表公历2020年的某月,某日。所给出的数据均为合法日期。

输出描述
如果当天恰好是一个节气,输出这个节气的汉语拼音缩写,如当天不是节气则输出下一个节气的汉语拼音缩写

Programer_Sanust:2020年-蓝桥杯C++初级组江苏省省赛题目解析大全_第2张图片

题目解析

这题花了我较长的时间
第一个点正好是节气的时间,最后一个点是12月21日后1月1日前的一天
先把月日和节气的节气缩写放在数组之中,先判断是否正好是节气,再进行判断最近的节气操作。
先判断是否是12月的边界特例,再判断其他情况
其他情况有两种:
1.日期超过了当前遍历的节气,直接continue
2.日期没有超过直接输出(因为第一次没有超过的一定是最近的)

AC代码

#include
using namespace std;
int x,y,month[25]={1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12},day[25]={5,20,4,19,5,20,4,19,5,20,5,21,6,22,7,22,7,22,8,23,7,22,7,21};
string jq[25]={"XH","DH","LC","YS","JZ","CF","QM","GY","LX","XM","MZ","XZ","XS","DS","LQ","CS","BL","QF","HL","SJ","LD","XX","DX","DZ"};
int main()
{
    cin>>x>>y;
    for (int i=0;i<24;i++)
        if (month[i]==x&&day[i]==y)
        {
            cout<<jq[i];
            return 0;
        }
    for (int i=0;i<24;i++)//12月末特例
    {
        if (x==12&&y>day[23])
        {
            cout<<jq[0];
            return 0;
        }
        else if (x>month[i]||y>day[i]) continue;//未到时间
        else if (x<=month[i]&&y<day[i])//寻找
        {
            cout<<jq[i];
            return 0;
        }   
    }
}

好了,这期文章就到这里了,我是Sanust,我们下期不见不散啊!

你可能感兴趣的:(比赛题解)