笔试强训第八天--求最小公倍数+两种排序方法

A

函数重载的条件:在相同作用域,函数名字相同,参数列表不同的一系列函数。

参数列表包括:参数个数不同、参数类型不同、类型顺序不同。

 

E

A:声明指针时不需要初始化,在访问前让其是合法访问的就可以。

B:如果ra是a的别名,ra=b;是指把b的值赋给ra,ra仍是a的引用,不能被改变

E:引用在底层是使用指针来实现的,引用的本质就是一个指针。

 

 B

 

B

调用时机:

一、用类对象构造另一个类对象

A a1;A a2(a1);

 二、传递参数

void Func(A a){};

 三、返回值

A Func(A a){ return a};

 

 D

构造x,

1:x作为参数,拷贝给u

2:v用u构造

3:w用v构造

4:w拷贝给临时变量返回

5:f(x)传给u

6:v用u构造

7:w用v构造

8:w拷贝给临时变量返回

9:用该返回值构造y 

但是编译器会将 第四步的临时变量直接做参数u给下一次调用 少调用一次。

在第九步时,直接用第八步的临时变量 少调用一次

 

D

一元是指有一个参数,二元是指有两个参数

运算符重载有两种情况:

一、重载成类的成员函数。需要的形参个数是看到的形参个数+1,默认有this指针做第一个参数。

二、重载成类的友元函数。需要的形参个数等于看到的形参个数,且至少有一个参数是类类型的对象

 D

先定义的后析构。先构造全局对象,在构造局部静态对象,最后才构造普通对象,然而析构对象的顺序是完全按照构造的相反顺序进行的

 

 D

cla *p=new cla;//调用一次构造 n =1

delete p;//调用一次析构 n=0

此时调用函数 返回0

 

 C

静态性:编译阶段就确定了

动态性:多态

 悬挂引用

void swap(int& left,int& right)
{
    int tmp=left;
    left=right;
    right=tmp;
}
int main()
{
    int a=10;
    int* p=NULL;
    swap(a,*p);
    return 0;
}

这里编译不报错,因为*p仅是拿到了地址,并未操作。进入到swap函数中将right赋值给left时进程退出。

编程题

求最小公倍数

求最小公倍数__牛客网

思路:求最小公倍数的公式为 两数相乘/最小公约数

#include <iostream>
using namespace std;
int gcd(int a,int b)
{
    if(b==0) return a;
    else
    {
        return gcd(b,a%b);    
    }
}
int main()
{
    long long a,b;
    cin>>a>>b;
    cout<<a*b/gcd(a,b)<<endl;
    return 0;
}

 两种排序方法

两种排序方法_牛客题霸_牛客网

思路:阅读理解

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
    int n;
    cin>>n;
    vector<string>v(n);
    for(auto& str:v)
    {
        cin>>str;
    }
    bool Lsort=true;
    bool Csort=true;
    for(int i=1;i<n;i++)
    {
        if(v[i-1]>v[i])
        {
            Csort=false;
            break;
        }
    }
    for(int i=1;i<n;i++)
    {
        if(v[i-1].size()>v[i].size())
        {
            Lsort=false;
            break;
        }
    }
    if(Csort==true&&Lsort==true)
    {
        cout<<"both"<<endl;
    }
    else if(Csort==true&&Lsort==false)
    {
        cout<<"lexicographically"<<endl;
    }
    else if(Lsort==true&&Csort==false)
    {
        cout<<"lengths"<<endl;
    }
    else
    {
        cout<<"none"<<endl;
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值