0.1063

五煦查题

快速找到你需要的那道考题与答案

超星C++语言程序设计_2期末答案(学习通2023题目答案)

32 min read

超星C++语言程序设计_2期末答案(学习通2023题目答案)

第一章 C++语言概述

第一章 C++语言概述 单元测验

1、超星C++程序的语言程基本构成单位是( )。
A、序设习通函数
B、计期函数和过程
C、末答超文本过程
D、案学子程序

2、题目一个C++程序总是答案从( )开始执行。
A、超星主函数
B、语言程主过程
C、序设习通子程序
D、计期主程序

3、末答以下有关C++程序的案学叙述正确的是( )。
A、题目每行中只能写一条语句
B、main函数必须位于程序的最前面
C、一条语句可以写在数行中
D、对程序进行编译时可发现注释中的拼写错误

4、C++语言是以( )语言为基础逐渐发展演变而成的一种程序设计语言。
A、Pascal
B、C
C、B
D、Simula 67

5、C++程序在使用cin、cout完成输入、输出时,需要使用include预处理命令包含头文件iostream,预处理命令以( )开始。
A、#
B、;
C、//
D、{

第二章 基础知识

第二章 基础知识 单元测验

1、下列数据中,不合法的实型数据的是()。
A、0.123
B、123e3
C、2.1e3.5
D、789.0

2、若有定义: int a=7; float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是()。
A、2.500000
B、2.750000
C、3.500000
D、0.000000

3、设变量a是int型,f是float型,i是double型,则表达式10+’a’+i*f值的数据类型为()。
A、int
B、float
C、double
D、不确定

4、若有以下说明语句“char s=92;”,则该语句()。
A、使s的值包含1个字符
B、说明不合法,s的值不确定
C、使s的值包含4个字符
D、使s的值包含3个字符

5、若变量已正确定义并赋值,以下符合C++语言语法的表达式是()。
A、a:= b+1;
B、a=b=c+2;
C、int 18.5%3;
D、a=a+7=c+b;

6、在C++语言中,逻辑值“真”用()表示。
A、true
B、大于0的数
C、非0整数
D、非0的数

7、下列可用于C++语言用户标识符的一组是()。
A、void, define, WORD
B、a3_b3, _123, Car
C、For, -abc, IF Case
D、2a, DO, sizeof

8、下列选项中非法的表达式为()。
A、0<=x<100
B、i=j==0
C、(char)(65+3)
D、x+1=x+1

9、一个C++程序的执行从()。
A、本程序的main函数开始,到本程序的main函数结束
B、本程序的main函数开始,到本程序的最后一个函数结束
C、本程序的第一个函数开始,到本程序的main函数结束
D、本程序的第一个函数开始,到本程序的最后一个函数结束

10、设有定义“int x; double y; ”及语句“x=y; ”,则下面正确的说法是()。
A、将y的值四舍五入为整数后赋给x
B、将y的整数部分赋给x
C、该语句执行后x与y相等
D、将x的值转换为实数后赋给y

11、下面4个选项中,均是合法整型常量的选项是()。
A、160 -0xff 011
B、123.5 01a 0xe
C、-01 1,986,012 0663
D、-2e3.2 0.234 1e0

12、下面4个选项中,均是合法实数的选项是()。
A、160. 0.12 e3
B、123.5 2e-4 123.
C、-0.18 2e 0e1
D、-2e3.2 0.234 1e0

13、下面4个选项中,均是合法转义字符的选项是()。
A、'\' '\\' '\n'
B、'\\' '\017' '\n'
C、'\018' '\f' 'xab'
D、'\\0' '\101' 'x1f'

14、已知“int a,b; ”,用语句“cin>>a>>b; ”输入a,b的值时,不能作为输入的分隔符的是()。
A、,
B、空格键
C、Enter键
D、Tab键

15、以下程序段的输出结果是()。 int x=10, y=10; cout<<x--<<", "<<--y<<endl;
A、10,9
B、9,10
C、10,10
D、9,9

16、有一个字符串在程序中表示为"\Name\\Address\n",则该字符串的长度是()。
A、18
B、16
C、14
D、13

17、若有定义“int x; ”,则下面不能将x的值强制转换成双精度数的表达式是()。
A、(double) x
B、double(x)
C、(double) (x)
D、x (double)

18、已知x,y 为整型,z为实型,ch为字符型,则下列表达式中正确的是()。
A、z=(x+y)++
B、x+y=z
C、y=ch+x
D、y=z%x

19、下列说法中错误的是()。
A、char A; //定义了字符型变量A
B、int x=2; //定义了x整型变量,其中,x的初值为2
C、如给整型变量j赋初值2004,可写成:int j(2004);
D、变量名中可以包含特殊符号

20、算术表达式的值的类型的规定,其中错误的是()。
A、若参与运算的两个操作数(或运算分量)都为整型时,则运算结果为int型
B、若参与运算的两个操作数(或运算分量)中至少有一个是单精度型,并且另一个不是双精度型时,则结果为float型
C、若参与运算的两个操作数(或运算分量)中至少有一个是双精度型,则运算结果为双精度型
D、算术表达式的值的类型的直接有机器进行转化

21、++和--运算符可以作用于常量。

22、整型数据和字符型数据的类型不同,它们之间不能进行运算。

23、变量的类型经过强制类型转换运算后其类型就改变了。

24、C++提供自增(++)和自减(--)运算符,可以将变量加1或减1。如果运算符放在变量前面,则变量先加1(减1),然后在表达式中使用。如果运算符放在变量后面,则变量先在表达式中使用,然后加1(减1)。

25、true值可以表示任何非0值,false值也可以表示0值。

26、表达式由常量、变量、运算符、函数、圆括号等按一定规则组成的式子。但单独的常量或变量不是表达式。

27、实型数赋值给整型时,仅取整数部分赋值,当整数部分的值超出整型变量的范围时,产生溢出,结果出错。

28、C++中逗号也是一种运算符,在所有运算符中优先级最低。

29、字符串常量:简称字符串,它们是用双引号括起来的字符序列,例如,“Hello,world!\n”。

30、字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。

31、用const修饰的标识符称为符号常量因为符号常量同样需要系统为其分配内存,所以又称为const变量符号常量在使用之前一定要先进行声明。

32、C++语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。

33、C++语言标识符是以字母或下划线开头的,由字母,数字和下划线组成的字符序列。

34、一个赋值表达式中使用多个赋值运算符可实现多个变量赋值的功能,如表达式(x=y=z=2)与操作序列(z=2;y=z;x=y;)是等价的。

35、变量是在程序的执行过程中其值可以改变的量。变量有数据类型和初值。变量在使用之前必须首先声明其类型和名称。

36、字符值是以ASCII码的形式存放在变量的内存单元之中的。如'x'的十进制ASCII码是120,'y'的十进制ASCII码是121。

37、字符常量只能用单引号括起来,不能用双引号或其它括号。

38、void是无值,而不是0,因为0也是一个值。

39、声明语句中使用的符号“=”称为初始化符,它不是赋值运算符。

40、条件表达式的形式为: <表达式1>?<表达式2>:<表达式3>   其含义为若<表达式1>的值为“真”,则条件表达式取<表达式2>的值;否则取<表达式3>的值。

第三章 控制结构

第三章 控制结构 单元测验

1、k为整型,以下while循环体中的语句执行()。 k=2; while(k=0) { cout<<k; k--; cout<<" "; }
A、0次
B、无限次
C、1次
D、2次

2、在下列选项中,会构成死循环的是()。
A、for(;;);
B、int i=100;
C、int k=10000;
D、int s=36;

3、为了避免在嵌套的条件语句if…else中产生二义性,C++规定else子句总是与()配对。
A、其之前最近且尚未配对的if语句
B、其之前最近的if语句
C、其之后最近的if语句
D、缩排位置相同的if语句

4、C++中循环语句while和do…while的主要区别是()。
A、do…while的循环体至少无条件执行一次
B、while的循环控制条件和do…while的循环控制条件的控制方式是相反的
C、do…while允许从外部转到循环体内,while不允许
D、while的循环体不能是复合语句

5、对于省略了循环控制表达式2的循环语句“for(表达式1; ; 表达式3)”,可理解为()。
A、for(表达式1; true; 表达式3)
B、for(表达式1; false; 表达式3)
C、for(表达式1; 表达式1; 表达式3)
D、for(表达式1; 表达式3; 表达式3)

6、执行语句“for(i=1; i<5;i++) cout<<i;”循环执行()次?
A、4
B、3
C、1
D、未知

7、面关于for循环语句的叙述中,正确的是()。
A、for循环的循环体可以包含多条语句,但必须用大括号括起来
B、for循环是先执行循环体语句,后判断表达式
C、在for循环中,不能用break语句跳出循环体
D、for循环只能用于循环次数已经确定的情况

8、若有以下程序段: for(m=1; m<=100; m++) { cin>>y; if (y<0) continue; cout<<m; } 则下面正确的说法是()。
A、最多输出100个非负整数
B、当y>=0时什么也不输出
C、cout语句永远也不执行
D、当y<0时整个循环结束

9、以下程序段中的do…while循环()。 m=-1; do { m=m*m; }while(!m);
A、执行一次
B、是死循环
C、执行两次
D、执行无数次

10、语句“while(!x) ...”等价于()。
A、while(x==0) …
B、while(x!=1) …
C、while(x!=0) ...
D、while(x==1) ...

11、设有程序段 int k=10; while(k=0) k=k-1; 则下面描述中正确的是()。
A、循环体语句一次也不执行
B、循环执行10次
C、无限循环
D、循环体语句执行一次

12、若给定条件表达式(M)?(a++):(a--),则其中表达式M()。
A、和(M!=0)等价
B、和(M==1)等价
C、和(M==0)等价
D、和(M!=1)等价

13、下列描述正确的是()。
A、如果至少有一个操作数为true,则包含“||”运算符的表达式为true
B、break语句可以用任何复合语句中
C、switch语句结构中必须有default语句
D、if语句结构中必须有else语句

14、以下for语句中不是死循环的是()。
A、for(int i=0;i<1;++i);
B、for(int i=0;;++i);
C、for(int i=1;i>0;++i);
D、for(;;);

15、有以下程序 #include<iostream> using namespace std; int main() { int a=5,b=0,c=0; if(a=b+c)cout<<″***″<<endl; else cout<<″$$$″<< endl; return 0; } 下列选项叙述正确的是()。
A、输出$$$
B、可以通过编译但不能通过连接
C、输出***
D、有语法错不能通过编译

16、switch结构case语句后的多个语句必须放在花括号中。

17、要在if选择结构体中包括多条语句,就要把这些语句放在花括号中。复合语句可以放在程序中出现单个语句的任何地方。

18、空语句就是在正常语句出现的地方放一个分号(;),表示不采取任何操作。

19、do/while重复结构执行循环体之后再测试循环条件,因此,do/while结构至少执行循环体一次。

20、break语句在while、for和do/while结构中执行时,将使程序立即退出这些结构。

21、每个case面的语句之后必须要包括一个break语句。几个case可以不执行相同语句。

22、continue语句用于循环语句中,并不终止本层循环,而只是绕过本次循环。

23、如果表达式x>y为true或a<b为true,则表达式(x>y&&a<b)为true。

24、for重复结构处理计数器控制循环的所有细节。for结构的一般格式如下: for(expression1, expression2, expression3) statement 其中expression1初始化循环控制变量,expression2是循环条件,expression3递增控制变量。

25、goto语句只能从循环体内跳到循环体外,不能从循环体外跳到循环体内。

第三章 控制结构 单元作业

1、编写程序,求能被7整除 且个位数字为9的所有三位数,将满足条件的数每10个一行显示,并输出满足条件的数的个数。 注意:答题时选择代码语言为“C/C++”,将程序代码填写在答题框内,并将程序的运行结果截屏保存为jpg文件上传附件。本题程序运行效果参考“图片1.jpg”。

2、编写程序,输入两个正整数m和n,求出这两个数的最大公约数并显示出来。 注意:答题时选择代码语言为“C/C++”,将程序代码填写在答题框内,并将程序的运行结果截屏保存为jpg文件上传附件。本题程序运行效果参考“图片2.jpg”。

3、编写程序。 猴子吃桃问题,猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第五天早上想再吃时,见只剩下一个桃子了。请编程求第一天共摘了多少个桃子? 注意:答题时选择代码语言为“C/C++”,将程序代码填写在答题框内,并将程序的运行结果截屏保存为jpg文件上传附件。

第四章 数组与字符串

第四章 数组与字符串 单元测验

1、以下对一维数组a的正确定义是( )。
A、char a[ ]={ ‘a’, ‘b’, ‘c’};
B、char a(10);
C、int k=5,a[k];
D、int a[ ];

2、下面不能够正确判断字符串s是空串的是( )。
A、if(s==‘\0’)
B、if(strlen(s)==0)
C、if(strcmp(s, “”)==0)
D、if(s[0]==0)

3、下面关于C++字符数组的叙述中,错误的是( )。
A、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
B、字符数组中字符串的字符可以整体输入、输出
C、字符数组可以存放字符串
D、可以用关系运算符对字符数组中的字符比较大小

4、判断字符串s1是否大于字符串s2,应当使用( )。
A、if(strcmp(s1,s2)>0)
B、if(strcmp(s1,s2))
C、if(strcmp(s2,s1)>0)
D、if(s1>s2)

5、若有定义:char strl[10],str2[ ]="student"; 以下能把str2中的字符串赋给strl的语句是( )。
A、for(int i=0; i<=strlen(str2); i++) str1[ i ]=str2[ i ];
B、str1="student";
C、str1=str2;
D、for(int i=0; str2[ i ]!=0; i++) str1[ i ]=str2[ i ];

6、若有定义int a[3][3]={ { 1, 2}, { 5}, { 2, 4, 8} }; 初始值5是数组a存储在内存中的第( )个元素。
A、4
B、3
C、2
D、5

7、若有定义:char strl[20]="a good ", str2[ ]="student"; 以下能将字符串str1变为"a good student"的语句是( )。
A、strcat(str1, str2);
B、strcpy(str1, str2);
C、str1 = str1 + str2;
D、str1 = str1 & str2;

8、若有以下说明,则数值为 4 的表达式是( )。 int a[12] ={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; char c=’a’, d, g ;
A、a['d'-c]
B、a[g-c]
C、a[4]
D、a['d'-'c']

9、下列语句中,正确的是( )。
A、char a[ ][3] ={ "a", "1"};
B、char a[3][ ]={ 'abc', '1'};
C、char a[ ][3] ={ 'abc', '1'};
D、char a[3][ ]={ 'a', "1"};

10、字符串的长度是( )。
A、串中所含字符的个数
B、串中不同字符的个数
C、串中不同字母的个数
D、串中所含字符的个数且字符个数大于零

11、下面关于数组的初绐化正确的是( )。
A、char str[ ]={ 'a', 'b', 'c'};
B、char str[2]={ 'a', 'b', 'c'};
C、char str[2][3]={ { ′a′,′b′}, { ′c′,′d′}, { ′e′,′ f′} };
D、char str()={ ′a′,′b′,′c′};

12、设有数组定义:char array[ ]="China";,则数组array所占的空间为( )。
A、6个字节
B、4个字节
C、5个字节
D、7个字节

13、对以下说明语句的正确理解是( )。   int a[10]={ 6, 7, 8, 9, 10};
A、将5个初值依次赋给a[0]至a[4]
B、将5个初值依次赋给a[1]至a[5]
C、将5个初值依次赋给a[6]至a[10]
D、因为数组长度与初值的个数不相同,所以此语句不正确

14、若有说明语句: int a[ ][3]={ 1, 2, 3, 4, 5, 6, 7, 8}; ,则数组a的行数为( )。
A、3
B、2
C、1
D、无确定值

15、若有定义int a[5]={ 0, 1, 3, 4, 5};,以下正确的数组元素引用是( )。
A、a[a[4]-1]
B、a[5]
C、a[a[4]]
D、a[a[0]-1]

16、初始化语句int a[3][4]={ { 1, 2}, , { 4, 6, 8, 10} };执行后,a[2][1]得到的初值是6。

17、说明语句int a[7]={ 5, 6, 7 };由于数组长度与初值个数不同,故该语句不正确。

18、double a[5][ ]是对二维数组a的正确说明。

19、字符数组可以存放字符串。

20、C++中允许对数组的大小作动态定义,即可用变量定义数组的大小。

21、字符数组不要求它的最后一个字符为'\0',甚至可以不包含'\0'。

22、在对全部数组元素赋初值时,可以不指定数组长度。

23、数组定义 int a[10]; 表示数组名为a,此数组可以存放10个整型元素。

24、char c[ ]={ "a book" }; 与char c[ ]="a book";等价。

25、设已有说明:char c1[10], c2[10]; 程序片段:c1={ "book"}; c2=c1; 是合法的 。

26、字符数组初始化如:char aStr[ ]={ "12345"}; 不可省略花括弧,简单地写为char aStr[ ]="12345";

27、对数组元素赋初值称为数组的初始化,例如:int a[10]; a={ 1,3,5,6,7};

28、如果数组的元素类型是字符型,则此数组就是字符数组。字符数组的每个元素只能存放一个字符,存放的是字符的ASCII代码。

29、C++中数组的起始下标为0,最大下标值比定义数组时的常量表达式小1。

第四章 数组与字符串 单元作业

1、输入整型数组的元素个数n,依次输入n个数组元素,求其中负数的和。 注意:答题时选择代码语言为“C/C++”,将程序代码填写在答题框内,并将程序的运行结果截屏保存为jpg文件上传附件。本题程序运行效果参考“作业1.jpg”。

2、求一个n阶矩阵的转置。输入n值及矩阵的所有元素,存储在二维数组a中,要求在a中进行转置。 注意:答题时选择代码语言为“C/C++”,将程序代码填写在答题框内,并将程序的运行结果截屏保存为jpg文件上传附件。本题程序运行效果参考“作业2.jpg”。

3、假设一个字符串中不含空格,输入该字符串并统计其中字母和非字母的个数。 注意:答题时选择代码语言为“C/C++”,将程序代码填写在答题框内,并将程序的运行结果截屏保存为jpg文件上传附件。本题程序运行效果参考“作业3.jpg”。

4、输入不含空格的字符串s及待删除的字符ch,将s中所有与ch相同的字符都删除掉,输出删除后得到的新串。要求直接在数组s中进行删除,得到的新串仍然在数组s中。 注意:答题时选择代码语言为“C/C++”,将程序代码填写在答题框内,并将程序的运行结果截屏保存为jpg文件上传附件。本题程序运行效果参考“作业4.jpg”。

第五章 指针

第五章 指针 单元测验

1、在基本数据类型相同的两个指针变量之间,不能进行的运算是( )。
A、<
B、=
C、+
D、-

2、以下程序段的运行结果是( )。 char x[5]={ 'a', 'b', '', 'c', ''}; cout<<x;
A、'a''b'
B、ab
C、ab c
D、abc

3、在一维数组中,数组名表示( )。
A、数组第1个元素的地址
B、数组第2个元素的地址
C、数组所有元素的地址
D、数组最后1个元素的地址

4、若有定义:int *p[3];,则以下表述中正确的是( )。
A、p是一个指向有3个元素的整型数组的指针
B、p是一个指向int型变量的指针
C、p是一个有3个元素的指针数组,每个元素是一个int型指针
D、p是一个数组,该数组的元素是指针p所指向的变量

5、若有定义:int k=1,a[10]={ 10,20,30,40}; int *p1=a,*p2=&a[2]; 则下列不能正确执行的语句是( )。
A、k=*p1+*p2;
B、p2=k;
C、p1=p2;
D、k=p2-p1;

6、设已有定义: char *st="how are you"; 下列程序段中正确的是( )。
A、char a[11]; strcpy(++a, st);
B、char a[11], *p; strcpy(p=a+1, &st[4]);
C、char a[11]; strcpy(a, st);
D、char a[ ], *p; strcpy(p=&a[1], st+2);

7、若有定义:int c[5], *p=c;,则以下正确的表达式是( )。
A、p+5
B、c++
C、&c+1
D、&c[0]

8、以下关于new和delete运算符的叙述中,错误的说法是( )。
A、由new运算符分配的内存空间,当程序执行结束时系统会自动收回
B、由new分配的内存空间是连续的
C、如果当前内存无足够的空间可分配,则new运算符返回NULL
D、对于程序中的静态数组占用的存储空间不能用delete来释放

9、以下字符串赋值的表达式中,不能正确赋值的是( )。
A、char s[ ] = "china";
B、char s[10]; s = "china";
C、char *s = "china" ;
D、char s[10] = { 'c','h','i','n','a',''};

10、能进行++和--运算的数据类型是( )。
A、指针
B、int
C、long
D、其它三项均可

11、以下正确的程序段是( )。
A、char str1[]="12345",str2[]="abcdef";strcpy(str1,str2);
B、char str[10], *st="abcde"; strcat(str,st);
C、char *st1="12345", *st2="abcde""; strcat(st1,st2);
D、char str[10]="", *st="abcde";strcat(str,st);

12、下面判断正确的是( )。
A、char *a="china"; 等价于char *a; *a="china";
B、char str[10]={ "china"}; 等价于char str[10]; str[ ]={ "china"};
C、char *s="china"; 等价于char *s; s="china";
D、char c[4]="abc",d[4]="abc"; 等价于char c[4]=d[4]="abc";

13、以下程序段的运行结果是( )。 char b[ ]="Basic",*p; for(p=b; p<b+5; p++) cout<<p<<' , ';
A、Basic, asic, sic, ic, c,
B、B, a, s, i, c,
C、c, ic, sic, asic, Basic
D、Basic,

14、以下程序段的输出结果为( )。 char a[ ]="language",*ptr=a; while(*ptr) { cout<<(char)(*ptr-32); ptr++; }
A、LANGUAGE
B、陷入死循环
C、语法有错
D、language

15、执行以下程序段后,y的值是( )。 int a[ ]={ 1,3,5,7,9}; int x=0,y=1, *ptr; ptr=&a[1]; while(!x) { y+=*(ptr+x); x++; }
A、1
B、2
C、4
D、24

16、以下语句不正确的是( )。
A、char a[6]="test";
B、char a[6],*p=a;p="test"
C、char *a;a="test";
D、char a[6],*p;p=a="test";

17、以下程序段的输出结果为( )。 int a, m=2, k=1, *p=&k; a=*p==m; cout<<a;
A、-1
B、0
C、1
D、2

18、指针必须先赋值后使用。

19、当指针p指向一维数组a的首址后,由于p[i]和a[i]都能引用数组元素,所以这里p和a是等价的。

20、int *p表示定义了一个指向int类型数据的指针变量p。

21、若有定义int a[4], *p=a, 则p++后p指向数组a所占内存的第2个字节。

22、相同类型的指针可以进行加减运算。

23、取地址运算&和取值运算*互为逆运算。

24、指针变量和许多变量一样可以进行四则运算。

25、指针p指向数组元素a[2],若要其指向a[4],执行p=p*2即可。

26、数组名可以代表该数组的起始地址。

27、因为字符数组和字符指针变量都能实现字符串的存储和运算,所以可以用如下方式对字符数组赋值: char s[15], *p=s="I love you!";

28、p是一个指针变量,(*p)++与*p++是等价的。

29、一个数组,其元素均为指针类型数据,称为指针数组。也就是说,指针数组中的每一个元素都相当于一个指针变量。

30、若有定义:int x, *p=&x;,则p是指针变量,*p是p所指向的变量。

31、C++中允许对数组的大小作动态定义,即可用变量定义数组的大小。

32、指针前用*运算来取出变量的内存地址。

33、可以用一个空指针赋给某个指针。

34、指针的类型必须与其指向的变量的类型相同。

35、动态分配的内存空间不能被初始化。

第五章 指针 单元作业

1、用指针处理从键盘输入的字符串,使其逆序并输出。重复这个过程直到输入空串为止。 注意:答题时选择代码语言为“C/C++”,将程序代码填写在答题框内,并将程序的运行结果截屏保存为jpg文件上传附件。本题程序运行效果参考“作业1.jpg”。

2、编写程序,根据用户输入的值n,建立长度为n的整型数组,再向数组输入n个元素的值,并求其所有元素之和。 注意:答题时选择代码语言为“C/C++”,将程序代码填写在答题框内,并将程序的运行结果截屏保存为jpg文件上传附件。本题程序运行效果参考“作业2.jpg”。

3、输入两个字符串a和b,并动态构造一个新的字符串c。要求是:将a和b对应字符中的较大者存入c对应的位置上,若a和b不一样长,则将较长字符串多出部分的字符全部依序存入c中。 注意:答题时选择代码语言为“C/C++”,将程序代码填写在答题框内,并将程序的运行结果截屏保存为jpg文件上传附件。本题程序运行效果参考“作业3.jpg”。

第六章 函数

第六章 函数 单元测验

1、下列叙述错误的是()。
A、一个函数中可以有多条return语句
B、调用函数必须在一条独立的语句中完成
C、函数中通过return语句传递函数值
D、主函数main也可以带有形参

2、在函数定义前加上关键字”inline”,表示该函数被定义为()。
A、重载函数
B、内联函数
C、成员函数
D、普通函数

3、数定义为Fun(int &k),变量定义n=100,则下面调用正确的是()。
A、Fun(20)
B、Fun(20+n)
C、Fun(n)
D、Fun(&n)

4、必须用一对大括号括起来的程序段是()。
A、switch语句中的case标号语句
B、if语句的分支
C、循环语句的循环体
D、函数的函数体

5、在函数的返回值类型与返回值表达式类型的描述中,错误的是()。
A、函数返回值的类型是在定义函数时确定的,在函数调用时不能改变
B、函数返回值得类型就是返回值表达式的类型
C、函数返回值的类型与返回值表达式类型不同时,函数表达式类型应该转换成返回值类型
D、函数返回值的类型决定了返回值表达式的类型

6、函数的定义格式中,下面各组成部分中,()是可以省略的。
A、函数名
B、函数数据类型说明
C、函数体
D、函数参数

7、下面叙述中错误的是()。
A、调用函数必须在一条独立的语句中完成
B、一个函数中可以有多条return语句
C、函数中通过return语句传递函数值
D、主函数名main也可以带有形参

8、非数组、指针或引用型变量做实参时,它和对应形参之间的数据传递方式是()。
A、地址传递
B、单向值传递
C、双向值传递
D、由用户指定传递方式

9、若用数组名作为函数调用的实参.则传递给形参的是()。
A、数组的首地址
B、数组第1个元素的值
C、数组中全部元素的值
D、数组元素的个数

10、若使用一维数组名作函数实参,则下面正确的说法是()。
A、必须在主调函数中说明数组的大小
B、实参数组类型与形参数组类型可以不同
C、必须在被调函数中说明数组的大小
D、实参数组名与形参数组名必须一致

11、以下程序有语法性错误,有关错误原因的正确说法是() int main() { int a=5,k; void prt_char(); …… k=prt_char(); …… }
A、语句void prt_char();有错,它是函数调用语句,不能用void说明
B、变量名不能使用大写字母
C、函数说明和函数调用语句之间有矛盾
D、函数名不能使用下划线

12、正确的函数原型形式为()。
A、void fun(void);
B、double fun(int x;int y);
C、int fun(int=0,int);
D、double fun(int x,y)

13、有函数原型void fun4 ( int &);下面选项中,正确的调用是()。
A、int x=2.17; fun4(&x);
B、int a=15; fun4(a*3.14);
C、int b=100; fun4(b);
D、fun4(256);

14、以下叙述中正确的是()。
A、构成C++程序的基本单位是函数
B、可以在一个函数中定义另一个函数
C、main()函数必须放在其他函数之前
D、所有被调用的函数一定要在调用之前进行定义

15、下面判断是否构成重载函数的条件中,错误的判断条件是()。
A、参数类型不同
B、参数个数不同
C、参数顺序不同
D、函数返回值不同

16、主函数可以调用除自己以外的任何函数,子函数可以调用除主函数外的任何函数,包括它自己。

17、主函数中定义的变量可以在其他函数中使用,主函数可以使用其他函数中定义的变量。

18、不同的函数中不能使用相同的变量名。

19、函数的某个参数有默认值时,其后面的参数都必须有默认值。

20、模板函数的真正代码是在运行函数时产生。

21、void f(int a,char b,float c=1)与void f(int m,char n)互为重载函数。

22、内联函数可以减少函数的调用, 提高程序的运行速度。

23、函数执行过程中通过 return 语句将函数值返回,当一个函数不需要返回值,需要使用 void 作为类型名。

24、C++中,函数允许嵌套定义,允许嵌套调用 。

25、各个函数在程序中定义的顺序是一定的,它们的顺序影响程序运行时的执行顺序和程序运行结果。

第六章 函数 单元作业

1、编写程序。 计算4名学生3门课程成绩的平均分。在主函数中给定各门课程的成绩和输出计算得到的各平均分,avg函数用于计算各课程的平均分。

2、编写程序,求出输入的一个正整数n的阶乘。要求设计递归函数求出n的阶乘。

3、编写程序。输入一个正整数判断其是否是质数。要求设计一个函数对正整数n是否是质数进行判断,是质数函数返回1,不是质数返回0。

第七章 结构体和共用体

第七章 结构体和共用体 单元测验

1、设有如下定义,若要通过px引用rec中的x域,正确的语句()。 struct aa { int x; float y; } rec, *px; px=&rec;
A、px.x;
B、px->x;
C、*px->x;
D、*px.x;

2、根据下面的定义,能输出字符串"Li"的语句是()。 struct person { char name[10]; int age; }; person stu[10]={ "Zhang",18, "Li",17, "Ma",18, "Huang",18};
A、cout<< stu[2].name<<endl;
B、cout<< stu[2].name[0]<<endl;
C、cout<< stu[1].name<<endl;
D、cout<< stu[1].name[0]<<endl;

3、以下程序的运行结果是()。 #include<iostream> using namespace std; int main() { struct date { int y,m,d; } today; cout<<sizeof(today); }
A、12
B、3
C、6
D、出错

4、设有以下说明语句,则下面的叙述不正确的是()。 struct abc { int m; float n; } stype;
A、struct是结构体类型的关键字
B、stype是用户定义的结构体类型名
C、m和n都是结构体成员名
D、stype是用户定义的结构体变量名

5、已知学生记录描述如下:下面对结构体成员"computer"的赋值方式正确是()。 struct student { int num; char name[8]; struct { float math; float engl; float computer; } mark; } std;
A、student.computer=84;
B、mark.computer =84;
C、std.mark.computer=84;
D、std.computer=84;

6、有如下定义 struct person{ char name[9]; int age;}; person Class[10]={ "Johu", 17, "Paul", 19, "Mary", 18, "Adam", 16}; 根据上述定义,能输出字母M的语句是( )。
A、cout<<Class[3].name;
B、cout<<Class[3].name[1];
C、cout<<Class[2].name[1];
D、cout<<Class[2].name[0];

7、有如下定义: struct date { int year, month, day; }; struct worklist { char name[20]; char sex; date birthday; }person; 对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是( )。
A、year=1958
B、birthday.year=1958
C、person.birthday.year=1958
D、person.year=1958

8、C++语言结构体类型变量在程序执行期间 ( )。
A、所有成员一直驻留在内存中
B、只有一个成员驻留在内存中
C、部分成员驻留在内存中
D、没有成员驻留在内存中

9、下面关于结构体概念的叙述中,正确的说法是( )
A、相同类型数据的集合称为结构体
B、不同类型数据的集合称为结构体
C、数据的集合称为结构体
D、整数的集合称为结构体

10、若有以下说明和语句,则以下引用方式中不正确的是( )。 struct worker { int no; char *name; }work, *p=&work;
A、work.no
B、(*p).no
C、p->no
D、work->no

11、共用体变量占据的内存空间大小是所有成员占据的空间大小之和。

12、结构体类型的成员名可以与结构体以外的变量名相同。

13、当在程序中定义了一个结构体类型,则将为此类型分配存储空间。

14、结构体变量占据的内存空间大小是所有成员占据的空间大小之和。

15、结构体的定义可以嵌套一个共用体。

16、结构体类型必须有类型名。

17、C++语言结构体类型变量在程序执行期间,所有成员驻留在内存中。

18、允许用户将不同类型的数据组合成一个有机的整体,这些数据互相联系;这种数据结构称为结构体。

19、结构体变量可以作为一个整体进行输入输出。

第八章 面向对象程序设计

第八章 面向对象程序设计 单元测验

1、以下选项中不是面向对象程序设计所具有的特性的是( )。
A、数据封装
B、继承
C、多态性
D、模板

2、在C++类中定义的成员,其默认访问权限为( )。
A、public
B、protected
C、private
D、static

3、下列关于类和对象的叙述中,错误的是( )。
A、一个类只能有一个对象
B、对象是类的具体实例
C、类是对某一类对象的抽象
D、类和对象的关系是一种数据类型与变量的关系

4、以下各类函数中,( )不是类的成员函数。
A、构造函数
B、析构函数
C、友元函数
D、拷贝构造函数

5、对于任意一个类,析构函数的个数最多为( )。
A、0
B、1
C、2
D、3

6、在一个类中,可以对一个操作符进行( )重载。
A、1种
B、不超过2种
C、不超过3种
D、多种

7、以下关于运算符重载的叙述中,正确的是( )。
A、通过运算符重载,可以定义新的运算符
B、有的运算,其运算符只能作为友元函数重载
C、若重载运算符‘+’,则相应的运算符函数名为:+
D、重载二元运算符时,必须声明两个形参

8、若可以在类外用p.a的形式访问派生类对象p的基类成员a,则a是( )。
A、公有继承的公有成员
B、公有继承的私有成员
C、公有继承的保护成员
D、私有继承的公有成员

9、C++中声明常量的关键字是( )。
A、extern
B、const
C、public
D、virtual

10、在表达式x+y*2中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符,则operator+和operator*分别有( )个参数。
A、2、2
B、2、1
C、1、2
D、1、1

11、下列程序划线处应填入的正确语句是( )。 class Base { public: void fun(){ cout<<"Base::fun"<<endl; } }; class Derived:public Base { public: void fun() { _____________ //显示调用基类的函数fun() cout<<"Derived::fun"<<endl; } };
A、fun();
B、Base.fun();
C、Base::fun();
D、Base->fun();

12、保护继承时,基类的( )在派生类中成为保护成员,不能通过派生类的对象直接访问。
A、任何成员
B、公有成员和保护成员
C、公有成员和私有成员
D、私有成员

13、类成员的访问权限中,( )只能被本类的成员函数和其友元函数访问。
A、share
B、public
C、protected
D、private

14、关于构造函数,下列说法不正确的是( )。
A、构造函数的名字和类名相同
B、构造函数在创建对象时自动执行
C、构造函数无任何函数返回类型
D、构造函数有且只有一个

15、在公有继承的情况下,基类非私有成员在派生类中的访问权限( )。
A、受限制
B、保持不变
C、受保护
D、不受保护

16、类A中的一个成员函数原型为:void Set(A &a);其中"A &a"的含义为( )。
A、指向类A的指针为a
B、将a的地址值赋给变量set
C、a是类A对象的引用,用来作函数Set的形参
D、变量A与a按位相与作为函数Set的参数

17、若一个类拥有多个构造函数,则这些构造函数函数之间为( )。
A、重复关系
B、拷贝关系
C、重载关系
D、继承关系

18、以下对派生类的描述中,错误的是( )。
A、一个派生类可以作为另外一个派生类的基类
B、派生类至少有一个基类
C、派生类的成员除了其自己的成员外,还包含了其基类的成员
D、从派生类中继承的基类成员的访问权限到派生类中保持不变

19、面向对象程序设计有四个主要特点,即抽象、封装、继承和多态。

20、非成员函数应声明为类的友元函数才能访问这个类的private成员。

21、派生类中的成员不能直接访问基类中的私有成员。

22、运算符重载函数必须是类的成员函数。

23、C++类的组成包括数据成员和成员函数,友元不是该类的成员函数。

24、友元函数是用关键字friend修饰的成员函数。

25、析构函数是一种函数体为空的成员函数。

26、析构函数和构造函数都可以重载。

27、派生类的构造函数一般有3项工作要完成:首先基类初始化,其次成员对象初始化,最后执行派生类构造函数体。

28、若派生类执行无参构造函数,则其基类必须定义有无参构造函数才能正常执行。

29、保护派生时,基类的公有成员成为派生类的公有成员;保护成员成为派生类的保护成员,私有成员成为派生类的保护成员。

30、创建对象时,需要显式调用类的构造函数对其进行初始化。

31、所谓私有成员是指只有类中的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。

32、对象数组的元素可以是不同类的对象。

33、由new运算符创建的动态对象,程序结束时系统会自动执行其析构函数。

《C++语言程序设计》课程考试--2021春

《C++语言程序设计》课程考试--客观题

1、以下语句中,不包含C++关键字的是( )。
A、x=sqrt(2);
B、while(x!=0) x--;
C、if(x<0) x++;
D、return x;

2、C++中运算对象必须是整型的运算符是( )。
A、%=
B、/
C、=
D、<=

3、有如下程序段: int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } cout<<“a=”<<a<<“,b=”<<b; 该程序段的输出结果是( )。
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2,b=2

4、下列数据中,不合法的实型数据的是( )。
A、0.123
B、123e3
C、2.1e3.5
D、789.0

5、在下列选项中,没有构成死循环的是( )。
A、int i=100; while(1){ i=i%100+1; if(i>100) break; }
B、for(;;);
C、int k=10000; do{ k++;} while(k>10000);
D、int s=36; while(s) --s;

6、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。
A、函数调用可以作为一个函数的实参
B、函数调用可以出现在计算表达式中
C、函数调用可以出现在输出语句中
D、函数调用可以出现在赋值运算符的左侧或右侧

7、以下函数的功能是( )。 fun(char *p2, char *p1) { while((*p2=*p1)!='\0') { p1++;p2++;} }
A、将p1所指字符串复制到p2所指内存空间
B、将p1所指字符串的地址赋给指针p2
C、对p1和p2两个指针所指字符串进行比较
D、检查p1和p2两个指针所指字符串中是否有'\0'

8、在C++中,各种类型数据在内存中所占用的字节数( )。
A、均为两个字节
B、由操作系统决定
C、由计算机字长决定
D、由编译器决定

9、已有定义:char s[]="china";char *p; p=s;则下列叙述正确的是( )。
A、s和p完全相同
B、数组s中的内容和指针变量p中的内容相等
C、s数组长度和p所指向的字符串长度相等
D、*p与s[0]相等

10、以下函数的返回值是( )。 fun(int *p) { return *p;}
A、不确定的值
B、形参p中存放的值
C、形参p所指存储单元中的值
D、形参p的地址值

11、以下叙述中正确的是( )。
A、全局变量的作用域一定比局部变量的作用域范围大
B、静态(static)类别变量的生存期贯穿于整个程序的运行期间
C、函数的形参属于全局变量
D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值

12、以下关于类概念的描述中,错误的是( )。
A、类是抽象数据类型的实现
B、类是具有共同行为的若干对象的统一描述体
C、类是创建对象的样板
D、类就是C语言中的结构体类型

13、以下有关析构函数的说法不正确的是( )。
A、析构函数和构造函数一样可以有形参
B、析构函数有且仅有一个
C、析构函数的功能是用来释放一个对象
D、析构函数无任何函数类型

14、关于拷贝构造函数,以下描述不正确的是( )。
A、拷贝构造函数是类的成员函数,函数名与类名相同
B、拷贝构造函数只有一个参数,并且是对某个对象的引用
C、每个类都必须有一个拷贝构造函数
D、要定义拷贝构造函数,必须指定返回类型

15、一个类的友元函数能够访问该类的
A、私有成员
B、保护成员
C、公有成员
D、所有成员

16、下列关于this指针的说法正确的是
A、在类的成员函数中this指针指向调用该函数的对象
B、this指针是指向类的指针
C、this指针存在于每个函数之中
D、this指针是指向类的成员函数的指针

17、运算符重载是对已有的运算符赋予多重含义,以下说法正确的是( )。
A、可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义
B、可以改变一个已有运算符的优先级和操作数个数
C、只能重载C++中已经有的运算符,不能定义新运算符
D、C++中已经有的所有运算符都可以重载

18、假定AA为一个类,a为该类的私有数据成员,GetValue()为该类的公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( )。
A、x.a
B、x.a()
C、x->GetValue()
D、x.GetValue()

19、在C++中,函数原型不能标识( )。
A、函数参数的个数
B、函数的返回值的类型
C、函数的功能
D、函数参数类型

20、若变量已正确定义并赋值,以下符合C++语法的表达式是( )。
A、a:=b+1
B、a=b=c+2
C、a=b%3.5
D、a=a+7=c+b

21、在C++中,数字029是一个( )。
A、八进制常量
B、十六进制常量
C、十进制常量
D、非法常量

22、若有int k=1,a[10]={ 10,20,30,40};int *p1=a,*p2=&a[2];则不能正确执行的语句是( )。
A、k=*p1+*p2;
B、p2=k;
C、p1=p2;
D、k=p2-p1;

23、设已有定义: char *st = "how are you"; 下列程序段中正确的是( )。
A、char a[11]; strcpy(++a,st);
B、char a[11], *p; strcpy(p=a+1,&st[4]);
C、char a[11]; strcpy(a,st);
D、char a[], *p; strcpy(p=&a[1], st+2);

24、有以下程序段 int m[][3]={ 1,4,7,2,5,8,3,6,9},i,j,k=2; for(i=0;i<3;i++) cout<<m[k][i]); 执行后输出结果是( )。
A、4 5 6
B、2 5 8
C、3 6 9
D、7 8 9

25、若使用一维数组名作函数实参,则下面正确的说法是( )。
A、必须在主调函数中说明数组的大小
B、实参数组类型与形参数组类型可以不同
C、必须在被调函数中说明数组的大小
D、实参数组名与形参数组名必须一致

26、若有声明语句char s1[10]=,s2[10]="books";则能将字符串“books”赋给数组s1保存的语句是( )。
A、strcat(s1,s2);
B、s1="books";
C、s1=s2;
D、strcpy(s2,s1);

27、以下程序段的输出结果是( )。 int x=10, y=10; cout<<x--<<", "<<--y<<endl;
A、10,9
B、9,10
C、10,10
D、9,9

28、以下函数的功能是( )。 fun(char *s1, char *s2) { int i=0; while(s1[i]==s2[i] && s2[i]!='\0') i++; return(sl[i]=='\0' && s2[i]=='\0'); }
A、将s2所指字符串赋给s1
B、比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0
C、比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0
D、比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

29、若有以下程序段,则下面正确的说法是( )。 for(m=1;m<=100;m++) { cin>>y; if (y<0) continue; cout<<m; }
A、当y<0时整个循环结束
B、当y>=0时什么也不输出
C、cout语句永远也不执行
D、最多输出100个非负整数

30、下列关于C++类的描述中错误的是( )。
A、类与类之间可以通过一些手段进行通信和联络
B、类用于描述事物的属性和对事物的操作
C、类与类之间可以通过封装而具有明确的独立性
D、类与类之间均是平等的关系

31、通过运算符重载,可以改变运算符原有的( )。
A、操作数类型
B、操作数个数
C、优先级
D、结合性

32、下列哪一种情况不会调用拷贝构造函数( )。
A、用派生类的对象去初始化基类对象时
B、将类的一个对象赋值给该类的另一个对象时
C、函数的形参是类的对象,调用函数进行形参和实参结合时
D、函数的返回值是类的对象,函数执行返回调用者时

33、类的友员函数的作用是( )。
A、加强类的封装性
B、提高程序的运行效率
C、实现数据的隐藏性
D、增加成员函数的种类

34、已知有类定义: class Point { private: int x,y; public: void setPoint(int x0,int y0) { x=x0; y=y0;} };以下说法中错误的是( )。
A、执行语句Point p2;后,可使用p2.setPoint(1,2);给p2的数据成员x、y赋值
B、由Point定义的对象,所需存储空间是数据成员x和y以及成员函数setPoint所占存储空间之和
C、执行语句Point px=new Point;后,需使用语句delete px;释放动态对象对应的存储空间
D、执行语句Point p1,*px=&p1;后,可使用px->setPoint(1,1);调用p1的成员函数setPoint

35、有如下类声明: class XA { private: int x; public: XA(int n){ x=n; } }; class XB: public XA { private: int y; public: XB(int a, int b); }; 在构造函数XB的下列定义中,正确的是( )。
A、XB::XB(int a,int b):x(a),XB(b){ }
B、XB::XB(int a,int b):x(a),y(b){ }
C、XB::XB(int a,int b):XA(a),y(b){ }
D、XB::XB(int a,int b):XA(a),XB(b){ }

36、在公有派生的情况下,有关派生类对象和基类对象的关系,不正确的叙述是( )。
A、派生类的对象可以直接访问基类中的成员
B、派生类的对象可以初始化基类的引用
C、派生类的对象可以赋给基类的对象
D、派生类的对象的地址可以赋给指向基类的指针

37、C++源程序中,在不同函数中可以使用相同名字的变量。

38、C++循环语句的循环体可以不含任何语句。

39、声明引用时,必须用一个变量实体对其初始化,则它们是共用同一存储空间的两个变量。

40、类的析构函数和构造函数都可以重载。

41、若类中定义了构造函数,创建对象时,将自动调用构造函数为对象进行初始化;若未定义构造函数,创建对象时则自动省略初始化的工作。

42、公有继承的派生类中的成员可以访问其基类中的私有成员。

43、友元函数是用关键字friend修饰的非成员函数。

44、为实现对象的计算要重新定义某个运算符时,该运算符重载函数必须定义成类的成员函数。

45、由new运算符创建的动态对象,在用delete运算符释放时会自动执行其析构函数。

46、可以通过赋值运算进行数据的类型转换。

47、switch语句中,每个case后的语句最后一定要包括一个break语句。

48、全局变量和局部变量是按照变量的生命期来划分的。

49、C++的语法规定,必须将程序中所有要使用到的变量集中定义在函数的开始处。

50、循环体可以不含任何语句,例如:while(i<100); 是合法的C++语句。

51、析构函数是一种函数体为空的成员函数。

52、以下程序段的运行结果为 。 int p[7]={ 11,13,14,15,16,17,18},i=0,k=0; while(i<7&&p[i]%2) { k=k+p[i]; i++; } cout<<k;

53、以下程序段的运行结果为 。 char str[]="xyz",*ps=str; while(*ps) ps++; for(ps--;ps-str>=0;ps--) cout<<ps<<" ";

54、已知有如下类A和类B的声明: class A { public: A(){ cout<<"1";} ~A(){ cout<<"2";} }; class B:public A { public: B(){ cout<<"3";} ~B(){ cout<<"4";} }; 若用B定义一个对象:B b;,然后程序结束,屏幕上将会输出 。

55、已知有如下类Point的声明: class Point { int x,y; public: Point(int px=0,int py=0); Point(Point &p); }; Point::Point(int px,int py):x(px),y(py) { cout<<'('<<px<<","<<py<<')'; } Point::Point(Point &p) { x=p.x; y=p.y; cout<<"Copy:"<<'('<<p.x<<","<<p.y<<')'; } 若执行以下语句,将会输出 。 Point p1(10,5),p2(p1),*pt; pt=new Point; delete pt;

56、已知i为整型变量,以下程序段的运行结果为 。 for(i=0;i<3;i++) switch(i) { case 1: cout<<i++; case 2: cout<<i; default: cout<<i; }

57、已知有如下函数定义: int func(int a) { static int c=1; c*=a; return c; } 若有整型变量b和i,且将b的值赋为1,执行以下循环语句后b的值变为 。 for(i=2;i<4;i++) b=b+func(i);

《C++语言程序设计》课程考试--编程题

1、数列有序

2、时间类

学习通C++语言程序设计_2

在学习C++语言程序设计的过程中,我们需要对一些基本概念和语法知识进行深入理解,这样才能够更好地掌握编程技术并写出高质量的代码。

C++基本语法

C++语言是一种面向对象的编程语言,在掌握对象、类、继承等概念的基础上,我们需要学习C++的一些基本语法,比如:

  • 变量:在C++中,我们需要先定义变量才能使用它们。定义变量时需要指定数据类型、变量名和初始值。
  • 运算符:C++中有许多运算符,比如算术运算符、赋值运算符、比较运算符等。
  • 流操作符:C++中使用流操作符(<< 和 >>)来进行输入和输出操作。
  • 控制语句:C++中的控制语句包括if语句、for循环、while循环等,用于控制程序的执行流程。
  • 函数:在C++中,函数是一段独立的代码块,用于完成特定的任务。函数的定义包括函数名、返回值类型、参数列表和函数体。

C++程序设计

在掌握了C++的一些基本语法后,我们可以开始进行程序设计。

数据类型的选择

在C++中,不同的数据类型有不同的存储方式和范围。我们需要根据程序的需要选择合适的数据类型。常用的数据类型包括:

  • 整型:用于表示整数,包括short、int、long和long long等。
  • 浮点型:用于表示有小数的数值,包括float和double等。
  • 字符型:用于表示单个字符,用单引号表示。
  • 字符串型:用于表示一串字符,用双引号表示。
  • 布尔型:用于表示真和假,只有两个取值:true和false。

函数的使用

在程序设计中,函数是非常重要的组成部分。我们可以通过函数的调用来完成特定的任务。在使用函数时,需要注意以下几点:

  • 函数的参数:函数定义时需要指定参数列表,调用函数时需要传递相应的参数。
  • 函数的返回值:函数可以返回一个值,也可以不返回值。如果返回值不为空,需要在函数定义时指定返回值类型。
  • 函数的重载:在C++中,函数的重载指的是同名函数可以接受不同的参数类型或参数个数。

C++程序调试

在编写C++程序的过程中,难免会出现一些错误。为了排除错误,我们需要进行程序调试。

常见错误类型

在C++程序中,常见的错误类型包括:

  • 语法错误:指程序中存在语法错误,比如拼写错误、缺少分号等。
  • 逻辑错误:指程序的逻辑出现了问题,导致程序不能正常运行,比如错误的if语句、错误的循环等。
  • 运行时错误:指程序在执行时出现了错误,比如数组越界、除以零等。

调试工具的使用

为了找出程序中的错误,我们可以使用调试工具来辅助调试。常用的调试工具包括:

  • 编译器:编译器会检查程序中的语法错误,并生成可执行文件。
  • 调试器:调试器可以在程序执行时逐步运行程序,并在运行过程中检查变量的值、函数调用等。
  • 日志文件:将程序的输出写入日志文件,可以帮助我们了解程序的运行过程。

在使用调试工具时,需要注意以下几点:

  • 逐步执行:在调试器中,需要逐步执行程序,并观察每个步骤的结果。
  • 断点:可以在程序中设置断点,使程序在执行到断点处停止,并观察程序运行情况。
  • 变量监视:可以在调试器中查看程序中变量的值,并进行修改。

总结

C++语言程序设计是一项极具挑战性的工作,需要不断地学习和实践。在学习的过程中,我们需要深入理解基本语法,掌握常见的数据类型和函数的使用方法,并学会使用调试工具排除程序中的错误。