首页 > 编程语言 >【每日例题】蓝桥杯 c++ 手机尾数

【每日例题】蓝桥杯 c++ 手机尾数

时间:2023-11-10 16:34:48浏览次数:60  
标签:7777 int c++ 尾号 蓝桥 标准 规则 手机 例题

手机尾数

题目

30年的改革开放,给中国带来了翻天覆地的变化。2011全年中国手机产量约为11.72亿部。手机已经成为百姓的基本日用品!
给手机选个好听又好记的号码可能是许多人的心愿。但号源有限,只能辅以有偿选号的方法了。
这个程序的目的就是:根据给定的手机尾号(4位),按照—定的规则来打分。其规则如下:
1.如果出现连号,不管升序还是降序,都加5分。例如:5678,4321都满足加分标准。
2.前三个数字相同,或后三个数字相同,都加3分。例如:4888,6665,7777都满足加分的标准。注意:7777因为满足这条标准两次,所以这条规则给它加了6分。
3.符合AABB或者ABAB模式的加1分。例如:2255,3939,7777都符台这个模式,所以都被加分。注意:7777因为满足这条标准两次,所以这条标准给它加了2分。
4.含有:6,8,9中任何—个数字,每出现一次加1分。例如:4326,6875,9918都符合加分标准。其中,6875被加2分;9918被加3分。
尾号最终得分就是每条标准的加分总和!
要求程序从标佳输入接收数据,在标准输出上输出结果。

蓝桥杯 手机尾数

思路分析

  1. 题目要求多个输入,使用for循环即可。
  2. 有题目可知,所有加分规则都在针对四位数的每一位,为了方便处理,我们将手机尾号的四位数进行数位拆分
  3. 第一条连号规则使用if进行条件筛选即可
  4. 第二条与第三条规则都需要分开不同情况进行if判断
  5. 第四条规则可以通过调用函数解决

总而言之:该题是入门题目,只需要额外注意数位拆分还有不同规则加不同分即可。

代码

 

#include <iostream>
using namespace std;

int fun(int x)
{
    if((x==6)||(x==8)||(x==9))
        return 1;
    else
        return 0;
}

int main()
{
    int n;
    int num[100];//手机尾号数组
    int fenshu[100]={0};//分数
    int a,b,c,d;//手机尾号的四个数字
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>num[i];
    }
    for(int j=0;j<n;j++)
    {
        a=num[j]/1000;//第一位
        b=num[j]/100%10;//第二位
        c=num[j]%100/10;//第三位
        d=num[j]%10;//第四位
        //连号
        if(((a+1==b)&&(b+1==c)&&(c+1==d))||((a-1==b)&&(b-1==c)&&(c-1==d)))
        {
            fenshu[j]+=5;
        }
        //前三个数字相同
        if((a==b)&&(b==c))
        {
            fenshu[j]+=3;
        }
        //后三个数字相同
        if((b==c)&&(c==d))
        {
            fenshu[j]+=3;
        }
        //符合AABB关系
        if((a==b)&&(c==d))
        {
            fenshu[j]++;
        }
        //符合ABAB关系
        if((a==c)&&(b==d))
        {
            fenshu[j]++;
        }
        //出现6,8,9数字
        fenshu[j]+=fun(a);
        fenshu[j]+=fun(b);
        fenshu[j]+=fun(c);
        fenshu[j]+=fun(d);
    }
    for(int i=0;i<n;i++)
    {
        cout<<fenshu[i]<<endl;
    }
    return 0;
}

  

标签:7777,int,c++,尾号,蓝桥,标准,规则,手机,例题
From: https://www.cnblogs.com/hcrzhi/p/17824409.html

相关文章

  • C++ 杂项.md
    C++杂项大括弧{}在C++中,大括号{}可以用于多种目的,包括但不限于以下几种:初始化列表:大括号可以用于初始化数组、结构体、类和标准库容器等数据结构。例如:intarr[]={1,2,3,4,5};//初始化整型数组std::vector<int>vec={1,2,3,4,5};//初始化整型向量......
  • C++字符串详解
    C++大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的string类。string类处理起字符串来会方便很多,完全可以代替C语言中的字符数组或字符串指针。string是C++中常用的一个类,它非常重要,我们有必要在此单独讲解一下。使用string类需要包含头文件<string>,......
  • C++友元函数和友元类
    在C++中,一个类中可以有public、protected、private三种属性的成员,通过对象可以访问public成员,只有本类中的函数可以访问本类的private成员。现在,我们来介绍一种例外情况——友元(friend)。借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的private......
  • C++中的const成员变量和成员函数
    在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const可以用来修饰成员变量和成员函数。const成员变量const成员变量的用法和普通const变量的用法相似,只需要在声明时加上const关键字。初始化const成员变量只有一种方法,就是通过构造函数的初始化列表,这点在......
  • C++实现一键关闭桌面
    方法一:C++关闭桌面,explorer.exe#include<Windows.h>#include<TlHelp32.h>#include"resource.h"#pragmawarning(disable:4996)voidtaskkill(constchar*name){ HANDLEinfo_handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//拍摄系统中所有进......
  • C\C++的转义字符
    所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。转义字符意义ASCII码值(十进制)\a响铃(BEL)007\b退格(BS)008......
  • C/C++字符的使用
    在C/C++中有字符和字符数组,分别对应char和char[]。其中字符数组也称字符串。查阅头文件stdint.h可以看到如下两句关键的语句:typedefsignedcharint8_t;typedefunsignedcharuint8_t;那么char对应的是哪一个?网上找不到确切说法,据说这个和编译器有关。经过实验表明......
  • 静态代码分析工具Helix QAC 2023.3:将100%覆盖MISRA C++2023规则
    静态代码分析工具HelixQAC2023.3:将100%覆盖MISRAC++:2023®规则 HelixQAC2023.3预计将于2023年第四季度发布的新MISRAC++®指南,将100%覆盖MISRAC++:2023®规则。 此外,此版本扩展了对C++20语言支持,并改进了PerforceValidate平台和HelixQAC与Validate的集成,包括其他......
  • C++函数分文件编写
    1、创建.h后缀名的头文件并且声明需要调用的函数,并且给出通用输出流和输出流#include<iostream>usingnamespacestd;voidasd();2、创建.cpp后缀名的源文件并且调用刚刚定义的头文件#include"asd.h"voidasd(){ cout<<"HelloWorld!"<<endl;}3、在源文件中......
  • C++中获取数组长度
    #include<iostream>usingnamespacestd;template<classT>intlength(T&arr){//cout<<sizeof(arr[0])<<endl;//cout<<sizeof(arr)<<endl;returnsizeof(arr)/sizeof(arr[0]);}intmain(){i......