每日刷题-6

2023-11-17

目录

一、选择题

二、算法题

1.Fibonacci数列

2.合法括号序列判断


一、选择题

1、

解析:内联函数是一种可以提高函数执行效率的方法,它的原理是编译时在函数调用点直接展开函数体的代码,从而避免了函数调用的开销。

但是,内联函数也有一些限制和缺点,比如:

  • 内联函数不能包含复杂的结构控制语句,例如循环语句和 switch 语句,否则会导致代码膨胀和效率降低。
  • 内联函数不能是直接递归函数,即自己内部还调用自己的函数,否则会造成无限循环或栈溢出。
  • 内联函数的定义必须出现在内联函数第一次被调用之前,否则编译器无法展开函数体。
  • 内联函数只是对编译器的一个建议,编译器可以根据函数的复杂度和调用频率来决定是否真正进行内联。

因此,适宜采用内联函数的情况是:函数代码少、频繁调用,并且没有复杂的流程控制和递归调用。这样可以最大程度地利用内联函数的优势,提高程序的运行速度。答案选C。

2、

解析:缺省参数(默认参数):在声明和定义函数时,可以给函数的参数带上一个默认值;在调用函数时,如果用户没有传递实参,则使用定义时所给的默认值,如果用户传递了实参,就使用用户传递的实参。
全缺省参数:每个参数都有默认值;
半缺省参数:部分参数具有默认值,并且默认值必须从右往左依次给出,例如:

void f(int a, int b = 20, int c = 10)编译成功 
void f(int a = 10, int b, int c = 20)编译失败。答案为D。

3、

解析:类定义2种方式:
1、可以将声明和成员函数的定义全部放在类中
2、类中只放成员变量和成员函数的声明,成员函数的定义可以放在.cpp文件中定义,注意:成员函数名前必须添加类名
class:默认访问权限private;struct:默认的访问权限public
建议:将成员变量设置为private将成员函数设置为public。答案为A。

4、

解析:构造函数的特点有以下几点:

  • 构造函数的名称必须与类名相同,区分大小写;
  • 构造函数没有返回值,也不能用void修饰
  • 构造函数可以用任何访问修饰符(public、protected和private)修饰;
  • 构造函数不能用static、final、abstract和synchronized等关键字修饰;
  • 构造函数不能被覆写(override);
  • 构造函数可以被重载(overload),以参数的个数、类型及顺序区分;重载意味着一个类里可以有多个构造函数,构造函数1可以调用构造函数2完成对象初始化,通过this关键字:this(参数1,参数2…)实现;答案为C。

5、

解析:一般来说,使用初始化列表比在构造函数内部赋值更高效,因为初始化列表可以直接调用成员变量的构造函数,而不需要先调用默认构造函数再进行赋值。而且,有些情况下必须使用初始化
(1)常量成员,因为常量只能初始化不能赋值,所以必须放在初始化列表里面
(2)引用类型,引用必须在定义的时候初始化,并且不能重新赋值,所以也要写在初始化列表里面
(3)没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数或其他合适的构造函数初始化。答案选B。

6、

解析:如果将运算符符重载成类的成员函数,形参个数要比该运算符需要的参数个数少1,因为成员函数具有隐藏的this指针。如果类中具有单个参数的构造函数,该构造函数具有类型转换的作用,对于B选项,编译器在编译代码节点,会调用单参构造函数将3转换为BigNumber的对象
但是D选项第一个参数不是对象,没有this指针,所以错误,

 

7、

解析:友元函数是C++中的一种特殊函数,它具有访问类中私有成员的权限,即使该函数不是类的成员函数。友元函数可以在类内部声明为友元或在类外部声明为友元。
D是错误的,友元函数是有关键字friend修饰,但是调用的时候不是通过指针this调用的,因为友元函数不属于任何类没有this指针。
 

二、算法题

1.Fibonacci数列

解析:找到两个斐波那契数,使得F[i]<=n<=fF[i+1],然后计算n到两个数之间的距离。

代码:

#include <iostream>
using namespace std;

int main() {
    int n;
    while(cin>>n)
    {
        int f0=0,f1=1,f2=1;
        int step=0;
        while(n>f2)
        {
            f0=f1;
            f1=f2;
            f2=f1+f0;
        }
       step=(f2-n)<(n-f1)?(f2-n):(n-f1);
       cout<<step;

    }
}

2.合法括号序列判断

解析:本题考察对栈的应用。用栈结构实现,栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有,则说明不匹配。当把字符串遍历完全之后,检查栈是否为空,为空则说明是合法括号序列。

代码:

class Parenthesis {
  public:
    bool chkParenthesis(string A, int n) {
        stack<char> sc;
        for (auto ele : A) {
            switch (ele) {
                case '(':
                    sc.push(ele);
                    break;
                case ')': {
                        if (sc.empty() || sc.top() != '(')
                            return false;
                        else
                            sc.pop();
                    }
                    break;
                default:
                    return false;
            }
        }
        return true;
    }
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每日刷题-6 的相关文章

随机推荐

  • c语言编译defined,#if defined(__GNUC__)的意思是不是如果使用的是GCC编译器?

    满意答案 wcctf05 2015 05 22 采纳率 58 等级 8 已帮助 414人 是的 就是编译器选择 参考以下内容 Compiler name and version macros are predefined by all C
  • : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi

    出现这种报错的原因一定是sql语句写错了 报错 分析 解决方案 在这种报错的情况下 1 看字段是否写错 2 是否多逗号或者少写逗号 3 sql语句本身语法有没有错误
  • ecere ide安装

    上一篇 无 跨平台Ecere语言 Windows MacOSX Linux BSD Android IDE没什么特别名字 我管它叫ec ide好了 里面的3d例子挺好的 主要opengl 3ds 也有Dx的 图片支持bmp jpg png
  • Python爬虫实战-小说网站爬虫开发

    需求 从http www kanunu8 com book3 6879爬取 动物农场 所有章节的网址 再通过一个多线程爬虫将每一章的内容爬取下来 在本地创建一个 动物农场 文件夹 并将小说中的每一章分别保存到这个文件夹中 每一章保存为一个文
  • 自学Python04-学会Python中的空格

    Python中的空格和其他语言不同 其他语言空格可能会被编译器忽略 但是在这里有严格的语法意义 比如一行正常的代码 如果前面多了空格就出错 所有新语句必须顶格编写 空格何时用 主要用来表示函数 语句 if for in 的结构 def Fi
  • Mybatis-Plus使用或“or”问题,及使用方法

    最近在使用Mybatis Plus 发现在拼接条件的时候 and和or会出问题 比如下面这种 QueryWrapper userWrapper new QueryWrapper userWrapper lambda eq name name
  • 19.STM32睡眠模式

    1 低功耗模式 就是CPU不需要继续执行时候 可以利用低功耗模式来节省功耗 3种低功耗模式 1 睡眠模式内核停止 外设 系统时钟仍然运行 2 停止模式 所有时钟停止 电源工作 但寄存器和SRAM内容保存 3 待机模式 所有内核电源关闭 只有
  • nmake 的 makefile

    宏定义 有些宏定义未用到 ROOT C Program Files x86 Microsoft Visual Studio 8 VC 系统include以及lib根目录 ROOT INCLUDE ROOT Include ROOT atlm
  • Python:Matplotlib数据可视化

    Python Matplotlib数据可视化 一 基础语法与常用参数 1 1基础语法与绘图风格 1 1 1创建画布与创建子图 1 1 2添加画布内容 1 1 3保存与展示图形 1 1 4绘图风格 2 1动态rc参数 2 1 1 线条常用的r
  • 静默安装VC_redist.x64.exe

    始 为了使vs17开发的程序在新装的win10系统跑起来 过程 1 到微软官网 下载运行时库vc redist Download Visual C Redistributable Packages for Visual Studio 201
  • c语言协程[1]_基础协程实现

    协程的本质是利用程序语言语法来实现逻辑上的多任务的编程 很多年前 我在小单片机上一直想跑操作系统 奈何Flash和RAM一直没有合适的 后来想自己怼个操作系统 结果拖延症犯了 到现在也无果 rtt freertos真香 后来一直在想有啥更好
  • devtools热更新报错 javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Admin

    项目场景 spring boot version 2 4 2 spring cloud version 2020 0 1 spring cloud alibaba version 2021 1 问题描述 在配置过devtools热更新之后
  • (zz)I/O PAD design

    http tw myblog yahoo com Calvin Horng article mid 1272 next 1257 l f fid 5 同事設計一塊電路板 不知道為什麼一通電 主要的IC開始發燙起來 我看了一看IC的Datas
  • fastreport designer.exe界面设置为中文

    fastreport 安装好后 界面默认是英文 在安装时我明明选择了安装中文语言包的 打开designer exe后显示的还是英文 原来要显示中文是需要设置designer exe的 设置如下 1 菜单栏 File gt Select La
  • C语言系列:6、结构

    C语言系列 6 结构 文章目录 C语言系列 6 结构 1 结构的基本知识 2 结构和函数 3 结构数组 4 指向结构的指针 5 自引用结构 6 表查找 7 类型定义 8 联合 9 位字段 结构是一个或多个变量的集合 这些变量可能为不同的类型
  • KEIL仿真调试问题

    Q1 如何使用keil调试程序 A1 第一个表示跳转到下一个程序状态 第二个表示跳转到下一行 在主程序中的时候也是直接跳转到主程序的下一行 第三个表示 watch窗口可以查看变量的数值 Q2 使用MDK进行软件设计时没有使用ST官方的模板而
  • js中async与await详解

    引言 JavaScript 是一门基于事件驱动和异步编程的语言 而异步编程是 JavaScript 中最常用的编程方式之一 在异步编程中 我们通常使用回调函数或 Promise 对象来处理异步操作的结果 而在 ES2017 中 引入了 as
  • JDBC连接mysql数据库

    JDBC连接mysql数据库 JDBC 使用java语言操作关系数据库的一套API 是一套标准接口 可以操作不同的关系型数据库 先复习一下 在idea里面输出hello public static void main String args
  • 在Docker中安装Gitea

    目录 在Docker中安装Gitea 1 拉取最新Gitea官方镜像 2 实例化一个Gitea容器 3 Gitea需要数据源 因此使用mysql作为后端数据库 4 在mysql中创建一个新数据库 起名gitea 5 访问Gitea主页htt
  • 每日刷题-6

    目录 一 选择题 二 算法题 1 Fibonacci数列 2 合法括号序列判断 一 选择题 1 解析 内联函数是一种可以提高函数执行效率的方法 它的原理是编译时在函数调用点直接展开函数体的代码 从而避免了函数调用的开销 但是 内联函数也有一