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

⭐️string类是C++的字符串类,提供(封装)了许多工具(成员函数)供使用。
1.若将string s=“ABCDE”,则以下说法错误的是:C
A.s[2]=‘c’,则将s内容变为“ABcDE”
B.s.clear();将s内容清空,变为空字符串
C.cout<
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.不确定是否会进行内联展开

你可能感兴趣的:(C++,c++,c语言,java)