从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.函数重载的目的是: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.不确定是否会进行内联展开