【C++】基础练习(一)||从C到C++&函数

简介: 【C++】基础练习(一)||从C到C++&函数

从C 到C++

⭐️C++是在C语言基础山改进发展而来的,是C语言的一个超集。

1.关于C语言和C++的关系,以下说法正确的是:A

A.C++兼容C语言

B.C语言部分兼容C++

C.C++部分兼容C语言

D.C语言兼容C++

分析:兼容:指包含,包括了。

2.关于C语言和C++编译器,以下说法正确的是:D

A.C语言编译器能编译C语言和C++源代码

B.C++编译器只能编译C++源代码

C.C++编译器只能编译C语言源代码

D.C++编译器能编译C语言和C++源代码

⭐️标准输入输出是利用库中的cin和cout这两个流对象

⭐️输入输出流可理解为河流,"<<“放入一艘船,”>>"捞出一艘船。

1.在C++中使用流进行输入输出,其中用于屏幕输出的对象是:D

A.cin

B.cerr

C.cfile

D.cout

💫分析:cerr是标准错误输出对象流,cin是标准输入对象流,没有cfile。

2.C++中的标准输入输出是通过输入输出库中的输入输出流对象实现的,写出一条向屏幕打印整型变量n的输出语句:std::cout<<n

3.若要在C++源文件中使用标准输入输出流,则必须要通过 #include <iostream> 包含所需的头文件。

⭐️string类是C++的字符串类,提供(封装)了许多工具(成员函数)供使用。

1.若将string s=“ABCDE”,则以下说法错误的是:C

A.s[2]=‘c’,则将s内容变为“ABcDE”

B.s.clear();将s内容清空,变为空字符串

C.cout<<s.length();将输出6

D.s.append(“123”);将s的内容变为“ABCDE123”

💫分析:string已经对char[]进行了封装,字符串结束符’\0’不属于字符串的有效内容,因此string类字符串的长度就是字符串内容的长度,将输出5。

⭐️前自增(减)运算符先自增(减)再计算表达式,后自增(减)反之。

1.循环

while(int i=0) i--;

执行次数是:A

A.0

B.1

C.2

D.无穷

2.已知i=5,j=0,下列各式中,使j的值为6的表达式是:A

A.

j=i+(++j); //j先自增,j=1 j=6

B.

j=j+i++;//j=j+i=5 i=i+1=6

C.

j=++i-j--//i=i+1=6 j=i-j=6-0=6 j=j-1=5

D.

j=i+++j;// j=(i++)+j j=i+j=5 i=i+1=6

⭐️bool变量的值为判断结果true(真)或false(假),其实质是1或0

1.在该程序中,while循环执行的次数和程序输出的结果是:C

A.0,1

B.5,0

C.5,1

D.8,0

int a[]={5,1,2,7,-1,13,-2,9};
bool b=false;
int i=0;
while(!b)
{
    if (a[i]<0)
        {b=true;}
     i++;
}
cout<<b;

2.下列循环利用两个布尔变量来判断int数组a中是否存在连续的两个0。则(1)处代码应为:D

A.

B.

C.flag1=false

D.flag2=true

bool flag1=false,flag2=false;
for (int i=0;i<sizeof(a)/sizeof(int);i++)
{
    if (a[i]==0)
    {
        if(flag1)
        {
            _____(1)_____;
            break;
        }
        flag1=true;
    }
    else  flag1=false;            
}
cout<<(flag2?"yes":"np");

💫分析:

flag1用来标记是否已经发现一个0

flag2用来标记是否已经发现连续的两个0

a[i]为0时若flag1已经为true,则遭到连续的两个0,因此减flag2置true,并离开循环。

函数

⭐️为了避免歧义,默认参数应当放在形参列表的最后面。

⭐️默认参数应当在函数声明里设置。

1.在C++中,下列关于参数默认值的描述中正确的是:C

A.设置参数默认值时,应当全部设置

B.设置参数默认值后,调用函数不能再对参数赋值

C.设置参数默认值时,应当从右向左设置

D.只能在函数定义时设置参数默认值

注意:默认参数应当写在函数声明里。

2.以下代码中,编写带默认参数的函数正确的是:B

A.

int func(int a ,int b=2);  //声明
int func(int a,int b=1){...} //定义

B.

int func(int a,int b=2) {...}//声明同时定义

C.

int func(int a,int b=2,int c);//声明
int func(int a,int b,int c){...}//定义

D.

int func(int a,int b);//声明
int func(int a,int b=2){...}//定义

💫分析:函数声明是对外表明了函数的名字、返回值和参数列表,它就是函数的身份证。

只能在函数声明中设置参数默认值,不可以再函数定义中设置。

⭐️引用的本质是已定义变量的别名,因此不可以存在空应用。

⭐️除函数形参外,其他引用定义时必须赋初始值。

1.以下程序段中a和b两处空行应分别填入:D

void swap(______a______)
{
    temp=a;
    a=b;
    b=temp;
}
//...省略
int m=10,n=20;
swap(________b________)

A.int a,int b 和m,n

B.int &a,int &b和&m,&n

C.int *a,int *b和&m,&n

D.int &a,int &b和m,n

💫分析:类型& 变量名 是定义一个该类型的引用

C选项的错误之处,在于,如果填入C的话,那么a和b为指针变量,存放的是地址,那么swap函数体内的a应该为 a,b改为b.

⭐️函数重载三要素:

  1. 名称相同
  2. 参数列表不同
  3. 调用不产生匹配歧义

⭐️仅有返回值不用不能构成重载!

1.函数重载的目的是:B

A.减少函数提供的代码冗余

B.方便调用方便编写代码,提高可读性

C.减少程序运行时的内存

D.提高程序运行效率

2.以下哪些项不能与int func(int int)构成重载函数:C

A.int func(int&,int&)

B.int func(int,int,int);

C.string func(int,int)

D.string func(int string);

⭐️若一函数功能简单,则函数调用的额外开销占比较高。

⭐️inline 关键字只是建议编译器将函数内联,是否内联由编译器自行决定

⭐️函数内联发生在编译时,提高的是运行时效率

1.下列哪个类型函数不适合声明为内联函数:A

A.函数体语句较多

B.函数体语句较少

C.函数执行时间较长

D.函数执行时间较短

2.在内联函数中允许使用的是:D

A.if-else语句

B.switcj语句

C.赋值语句

D.以上都允许

3.关于下列函数,说法正确的是:D

inline int func(int a,int b)
{
    return a+b;
}

A.将在预编译阶段进行内联展开

B.将在编译时进行内联展开

C.将在运行时进行内联展开

D.不确定是否会进行内联展开

相关文章
|
2月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
2月前
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
69 6
|
2月前
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
30 0
C++ 多线程之线程管理函数
|
2月前
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
34 3
|
2月前
|
编译器 C语言 C++
详解C/C++动态内存函数(malloc、free、calloc、realloc)
详解C/C++动态内存函数(malloc、free、calloc、realloc)
308 1
|
2月前
|
存储 编译器 C++
C++入门3——类与对象2-1(类的6个默认成员函数)
C++入门3——类与对象2-1(类的6个默认成员函数)
41 1
|
2月前
|
安全 编译器 C++
【C++篇】C++类与对象深度解析(三):类的默认成员函数详解
【C++篇】C++类与对象深度解析(三):类的默认成员函数详解
21 3
|
2月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
53 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
2月前
|
存储 编译器 C++
【C++】掌握C++类的六个默认成员函数:实现高效内存管理与对象操作(二)
【C++】掌握C++类的六个默认成员函数:实现高效内存管理与对象操作
|
3月前
|
编译器 C++
【C++核心】函数的应用和提高详解
这篇文章详细讲解了C++函数的定义、调用、值传递、常见样式、声明、分文件编写以及函数提高的内容,包括函数默认参数、占位参数、重载等高级用法。
28 3