c++理论题

更新时间:2024-06-22 02:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1. ++和--运算符可以作用于常量。 (2分) 1. True False

2. 整型数据和字符型数据的类型不同,它们之间不能进行运算。 (2分) 2. True False

3. 变量的类型经过强制类型转换运算后其类型就改变了。 (2分) 3. True False

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

5. true值可以表示任何非0值,false值也可以表示0值。 (2分) 5. True False

6. 表达式由常量、变量、运算符、函数、圆括号等按一定规则组成的式子。但单独的常量或变量不是表达式。 (2分) 6. True False

7. 实型数赋值给整型时,仅取整数部分赋值,当整数部分的值超出整型变量的范围时,产生溢出,结果出错。 (2分) 7. True False

8. C++中逗号也是一种运算符,在所有运算符中优先级最低。 (2分) 8. True False

9. 字符串常量:简称字符串,它们是用双引号括起来的字符序列,例如,“Hello,world!\\n”。 (2分) 9. True False

10. 字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算 (2分) 10. True

False

11. 用const修饰的标识符称为符号常量因为符号常量同样需要系统为其分配内存,所以又称为const变量符号常量在使用之前一定要先进行声明 (2分) 12. C++语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。 (2分) 13. C++语言标识符是以字母或下划线下开头的,由字母,数字和下划线组成的字符串。 (2分) 14. 一个赋值表达式中使用多个赋值运算符可实现多个变量赋值的功能,如表达式(x=y=z=2)与操作序列(z=2;y=z;x=y;)是等价的。 (2分) 15. 变量是在程序的执行过程中其值可以改变的量。变量有数据类型和初值。变量在使用之前必须首先声明其类型和名称。 (2分) 16. 字符值是以ASCII码的形式存放在变量的内存单元之中的。如x的十进制ASCII码是120,y的十进制ASCII码是121。 (2分) 17. 字符常量只能用单引号括起来,不能用双引号或其它括号。 (2分) 18. void是无值,而不是0,因为0也是一个值。 (2分) 19. 声明语句中使用的符号“=”称为初始化符,它不是赋值运算符。 (2分) 20. 条件表达式的形式为: 11. True

False

12. True

False

13. True

False

14. True

False

15. True

False

16. True

False

17. True

False

18. True

False

19. True

False

20. True

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

选择题

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

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

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

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

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

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

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

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

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

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

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

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

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

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

A15. 以下程序段的输出结果是( )。 int x=10, y=10; cout<

D16. 字符串\的长度是( )。 (2分)

A. 18 B. 16 C. 14 D. 13

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

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

D19. 下列说法中错误的是() (2分) A. char A; //定义了字符型变量A

B. int x=2; //定义了x整型变量,其中,x的初值为2 C. 如给整型变量j赋初值2004,可写成:int j(2004); D. 变量名中可以包含特殊符号。

D20. 算术表达式的值的类型的规定,其中错误的是()。 (2分) A. 若参与运算的两个操作数(或运算分量)都为整型时,则运算结果为int型。 B. 若参与运算的两个操作数(或运算分量)中至少有一个是单精度型,并且另一个不是双精度型时,则结果为float&

C. 若参与运算的两个操作数(或运算分量)中至少有一个是双精度型,则运算结果为双精度型。

D. 算术表达式的值的类型的直接有机器进行转化。

一、判断题(每小题2分,共20分)

1. switch结构case语句后的多个语句必须放在花括号中。 答案:F。

2. 要在if选择结构体中包括多条语句,就要把这些语句放在花括号中。复合语句可

以放在程序中出现单个语句的任何地方。 答案:T

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

4. do/while重复结构执行循环体之后再测试循环条件,因此,do/while结构至少执行循

环体一次。

答案:T

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

6. 大多数程序中,每个case面的语句之后要包括一个break语句。几个case可以不执

行相同语句。

答案:F

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

答案:T

8. 如果表达式x>y为true或ay&&a

答案:F

9. for重复结构处理计数器控制循环的所有细节。for结构的一般格式如下:

for(expression1, expression2, expression3) statement

其中expression1初始化循环控制变量,expression2是循环条件,expression3递增 控制变量。

答案:F

10.goto语句只能从循环体内跳到循环体外,不能从循环体外跳到循环体内。 答案:T

二、选择题 (每题3分,共45分)

1. 若k为整型,以下while循环体中的语句执行( )k=2; while(k=0) {

cout<

A. 无限次 B. 0次 C. 1次 D. 2次

答案:B

2. 在下列选项中,会构成死循环的是( )。

A. int

i=100;

B. for(;;);

C. int

k=10000; 。

D. int s=36;

答案:B

3. 为了避免在嵌套的条件语句if…else中产生二义性,C++规定else子句总是与

( )配对。

A.其之前最近且尚未配对的if语句 B.其之前最近的if语句 C.其之后最近的if语句 D.缩排位置相同的if语句

答案:A

4. C++中循环语句while和do…while的主要区别是( )。

A. do…while的循环体至少无条件执行一次

B. while的循环控制条件和do…while的循环控制条件的控制方式是相反的 C. do…while允许从外部转到循环体内,while不允许 D. while的循环体不能是复合语句

答案:A

5. 对于省略了循环控制表达式2的循环语句“for(表达式1; ; 表达式3)”,可理

解为( )。

A. for(表达式1; false; 表达式3) B. for(表达式1; true; 表达式3)

C. for(表达式1; 表达式1; 表达式3) D. for(表达式1; 表达式3; 表达式3)

答案:B

6. 执行语句“for(i=1; i<4; i++)…”,后变量i的值为( )。

A. 1 B. 3 C. 4 D. 未知

答案:C

7. 下面关于for循环语句的叙述中,正确的是( )。

A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判断表达式 C. 在for循环中,不能用break语句跳出循环体

D. for循环的循环体可以包含多条语句,但必须用大括号括起来

答案:D

8. 若有以下程序段:

for(m=1; m<=100; m++) {

cin>>y;

if (y<0) continue; cout<

则下面正确的说法是( )。 A. 当y<0时整个循环结束 B. 当y>=0时什么也不输出 C. cout语句永远也不执行 D. 最多输出100个非负整数

答案:D

9. 以下程序段中的do…while循环( m=-1; do {

m=m*m; }while(!m); A. 是死循环 B. 执行一次 C. 执行两次 D. 执行无数次

答案:B

10. 语句“whilea(!x) ...”等价于( A. while(x==0) …

B. while(x!=1) … C. while(x!=0) ...

)。

)。D. while(x==1) ...

答案:A

11. 设有程序段

int k=10; while(k=0) k=k-1; 则下面描述中正确的是( ) A. 循环执行10次 B. 无限循环

C. 循环体语句一次也不执行 D. 循环体语句执行一次 答案: C

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

13. 下列描述正确的是( )

A. 表示m>n为true或n&&m

B. switch语句结构中必须有default语句 C. if语句结构中必须有else语句

D. 如果至少有一个操作数为true,则包含“||”运算符的表达式为true 答案: D

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(;;); 答案: A

15. 有以下程序

#include using namespace std; int main() { int a=5,b=0,c=0;

if(a=b+c)cout<<″***″<

下列选项叙述正确的是( ) A. 有语法错不能通过编译 B. 可以通过编译但不能通过连接 C. 输出***

D. 输出$$$ 答案: D

三、程序填空题 (本大题35分) 1.

本题分值:每空3分,共6分。

题目描述:输入一个字符,如果是小写英文字母,则将其循环后移5个位置后输出,输出, 如'a'变成'f','v'变成'a';如果不是小写字母, 原样输出。 代码:

#include using namespace std; int main() { } 答案: (1) c+=5 (2) c-=21

2.本题分值:每空2分,共6分。

题目描述:服装店经营套服,也单件出售。若购买数量不少于50套,则每套80元;不足50套的每套90元;只买上衣每件60元;只买裤子每条 45元。现在输入所买上衣c和裤子t的数量,计算应付款m。

char c; cin>>c;

if (c>='a' && c<='u') __(1)__ ; else if (c>='v' && c<='z') __(2)__ ; cout<

代码:

#include using namespace std; int main() { } 答案: (1) c==t (2) c>t (3) c>=50 参考答案:zy2-t2.cpp

3.本题分值:每空3分,共6分。

int c, t, m; cin>>c>>t; if( else

if ( __(2)__ ) else

if ( __(3)__ ) else

m=c*80+(t-c)*45; m=c*90+(t-c)*45;

if ( t>=50 ) m=t*80+(c-t)*60; else

m=t*90+(c-t)*60;

//请输入上衣和裤子的数量 //完全配套时

__(1)__ )

if ( c>=50 ) m=c*80; else

m=c*90;

cout<

//输出所花的钱数

题目描述:计算1-3+5-7+…+97-99的值,以下是该函数的程序段,请将未完成的部分填入,使之完整。 代码:

#include using namespace std; int main() {

int i, t=1, s=0; for(i=1; i<101; i+=2) { }

cout<

4.本题分值:每空3分,共9分。

题目描述:最多从键盘输入10个整数,边输入边判断,遇到第1个能被7整除的数时结束输入,并输出此数。若未遇到,输出“未遇到”,以下是该函数的程序段,请将未完成的部分填入,使之完整。 代码:

#include

(1) t*=i (2) t=-t/i

__(1)__; s=s+t; __(2)__;

//计算t的值,使t在-1与1之间交替变化

//根据上次t的值计算数列中第i项的值

using namespace std; int main() { } 参考答案: (1) cin>>a (2) break (3) i==11

5. 本题分值:每空2分,共8分。

题目描述:输出100~1000之间其各位数字之和为5的整数及这些数的个数,以下是实现该功能的程序,请将未完成的部分填入,使之完整。

int i, a;

for(i=1; i<11; i++) { }

if (__(3)__) cout<<\未遇到\return 0;

__(1)__; if (a%7==0) { }

cout<

//退出循环

//输入一个整数

代码:

#include using namespace std; int main( ) { } 答案: (1)1000 (2)i (3)!=5 (4)count++

int i, s, k, count=0; for(i=100; i<=__(1)__; i++) { }

cout<

s=0; k=__(2)__;

//将i存到k中

//从个位开始依次取出k的每位数字//如果各位数字之和不为5,继续

while(k) { s=s+k; k=k/10; } if (s__(3)__) continue; cout<

//记录满足条件的个数的变量count加1

加到s中 处理下一个数

一、判断题(每小题2分,共20分)

3. C++中允许对数组的大小作动态定义,即可用变量定义数组的大小。 答案:F。

2. 字符数组不要求它的最后一个字符为'\\0',甚至可以不包含'\\0'。 答案:T

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

答案:F

4. 数组定义 int a[10]; 表示数组名为a,此数组有10个元素。 答案:T

5. char c[]={\与char c[]=\等价。 答案:T

6. 设已有说明: char c1[10],c2[10]; 下面程序片段是合法的。c1={\ c2=c1; 答案:F

7. 字符数组初始化如:char aStr[]={\不可省略花括弧,简单地写为char aStr[]=\答案:F

8. 对数组元素赋初值称为数组的初始化,例如: int a[10];

a={1,3,5,6,7}; 答案:F

9. 如果数组的元素类型是字符型(char),则此数组就是字符数组。字符数组的每个元素只能存放一个字符(存放字符的ASCII代码)。 答案:T

10. C++中数组的起始下标为0,最大下标值比常量表达式小一。 答案:T

二、选择题 (每题3分,共45分)

1. 以下对一维数组a的正确定义是( )。

A.char a(10); B.int a[ ]; C.int k=5, a[k];

D.char a[ ]={'a', 'b', 'c'};

答案:D

2. 下面关于C++字符数组的叙述中,错误的是( )。

A.字符数组可以存放字符串

B.字符数组的字符可以整体输入、输出

C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.可以用关系运算符对字符数组中的字符比较大小

答案:C

3. 下面程序段的运行结果是( )。

char x[5]={'a', 'b', '\\0', 'c', '\\0'}; cout<

A.'a''b' B.ab C.ab c D.abc

答案:B

4. 下面关于数组的叙述中,正确的说法是( )。

A.在定义一个数组时必须指定数组长度 B.必须用常量表达式来定义一个数组的长度

C.对数组进行初始化时大括号中的数据个数必须和数组的长度相同 D.定义一个一维数组时必须对数组进行初始化

答案:B

5. 在数组中,数组名表示( )。 A. 数组第 1 个元素的首地址 B.数组第 2 个元素的首地址

C. 数组所有元素的首地址 D.数组最后 1 个元素的首地址

答案:A

6. 若有以下说明,则数值为 4 的表达式是( )。

int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d, g ; A.a[g-c] B.a[4]

C. a['d'-'c'] D. a['d'-c]

答案:D

7. 下列语句中,正确的是 ( )。

A. char a[3][ ]={'abc', '1'}; B. char a[ ][3] ={'abc', '1'}; C. char a[3][ ]={'a', \D. char a[ ][3] ={ \

答案:D

8. 字符串的长度是( ) A.串中不同字符的个数 B.串中不同字母的个数

C.串中所含字符的个数且字符个数大于零 D.串中所含字符的个数

答案:D

9. 下面关于数组的初绐化正确的是( ) 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′};

答案:A

10. 设有数组定义:char array[]=″China″;,则数组array所占的空间为( )

A.4个字节 B.5个字节 C.6个字节 D.7个字节

答案:C

11. 若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设a[0][0]位于数组的第一个位置上)( ) A.i*m+j B.j*m+i C.i*m+j-1 D.i*m+j+1

答案:A

12. 以下程序段的输出结果是( ) void main() { char x=0x41;

cout<

A.41 B.65 C.A D.B

答案:C

13. 对以下说明语句的正确理解是( ) int a[10]={6,7,8,9,10};

A.将5个初值依次赋给a[1]至a[5] B.将5个初值依次赋给a[0]至a[4] C.将5个初值依次赋给a[6]至a[10]

D.因为数组长度与初值的个数不相同,所以此语句不正确。

答案:B

14. 下面哪一项是不正确的字符串赋值或赋初值的方式( )。 A. char *str; str=\

B. char str[7]={'s','t','r','i','n','g'}; C. char str1[10];str1=\

D. char str1[]=\

答案:C

15. 设有定义:char s[12]=\则cout<

A. 6 B. 7

C. 11 D. 12

答案:A

三、程序填空题 (本大题35分) 1.

本题分值:每空3分,共6分。

题目描述:设有一矩阵a要求这一矩阵的主对角线之和,请将未完成的部分填入,使之完整。 代码:

#include using namespace std; int main() {

int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; for(i=0;i<3;i++)

for(j=0;j<3;j++)

if ( __(1)__) sum=sum+__(2)__;

cout<

本题分值:每空2分,共10分。

题目描述:从键盘输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。请将未完成的部分填入,使之完整。

代码:

#include using namespace std; int main() {

int a[5],max,min,i,j,k; for(i=0;i<5;i++) cin>>a[i]; min=a[0]; k=0;

for(i=1;i<5;i++)

//寻找最小数及其位置

if (a[i]

min=a[i]; __(1)__;

//记住其最小数所在位置k

max=a[0]; j=0;

for (i=1;i<5;i++)

if (a[i]>max) { }

max=a[i]; __(2)__;

//寻找最大数及其位数

a[k]= __(3)__; __(4)__;

cout< }

cout<

答案: (1) k=i (2) j=i (3) max

(4) a[j]=min (5) j 3.

本题分值:每空3分,共9分。

题目描述:将数组的各个元素倒过来存储。例如,a的10个元素分别为:1、12、-32、64、15、26、3、8、9、4,作逆序处理后其值为:4、9、8、3、26、15、64、-32、12、1。 代码:

#include using namespace std; int main() {

int i,t,a[10]; for(i=0;i<10;i++) cin>>a[i]; for(i=0;i<5;i++) {

__(1)__;

__(2)__;

__(3)__;

}

for(i=0;i<10;i++) cout<

本题分值:每空2分,共4分。

题目描述:从键盘输入一个英文句子,统计其中含有多少个单词,单词之间用空格分隔的程序。请将未完成的部分填入,使之完整。 代码:

#include using namespace std; int main( ) {

char s[81],c1,c2; int i,num; i=0;

return 0;

num=0; c1=' ';

cin.getline(s,80); // 输入英文句子 while(s[i]) {

c2=s[i];

if (i>0) c1=__(1)__; if (c1==' ' && c2!=' ') num++; __(2)__; }

cout<

5. 本题分值:每空2分,共6分。

题目描述:下面是去掉字符串中的所有空格的程序,请将未完成的部分填入,使之完整。 代码:

#include using namespace std; int main() {

char s[81];

return 0;

int i,n;

cin.getline(s,80); i=0; n=0;

while(__(1)__) {

if (s[i]==' ') {

__(2)__; continue; }

s[n]=s[i]; n++; i++; }

s[n]=__(3)__; cout<

return 0;

一、判断题(每小题2分,共20分)

1. 主函数可以调用除自己以外的任何函数,子函数可以调用除主函数外的任何函数,包括它自己。 答案:T

2. 主函数中定义的变量可以在其他函数中使用,主函数可以使用其他函数中定义的变量。 答案:F

3. 不同的函数中不能使用相同的变量名。 答案:F

4. 函数的某个参数有默认值时,其后面的参数都必须有默认值。 答案:T

5. 模板函数的真正代码是在运行函数时产生。 答案:F

6. void f(int a,char b,float c=1)与void f(int m,char n)互为重载函数。 答案:F

7. 内联函数可以减少函数的调用,提高程序的运行速度。 答案:T

8. 函数执行过程中通过 return 语句将函数值返回,当一个函数不需要返回值,需要使用 void 作为类型名。 答案:T

9. C++中,函数允许嵌套定义,允许嵌套调用 。 答案:F

10. 各个函数在程序中定义的顺序是一定的,它们的顺序影响程序运行时的执行顺序和程序运行结果。 答案:F

二、选择题 (每题3分,共45分) 1. 下列叙述错误的是( )

A. 一个函数中可以有多条return语句 B. 调用函数必须在一条独立的语句中完成 C. 函数中通过return语句传递函数值 D. 主函数main也可以带有形参 答案:B

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

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

4. 必须用一对大括号括起来的程序段是( )。

A.switch语句中的case标号语句 B. if语句的分支 C. 循环语句的循环体

D. 函数的函数体 答案:D

5. 在函数的返回值类型与返回值表达式类型的描述中,错误的是( )。

A.函数返回值的类型是在定义函数时确定的,在函数调用时不能改变 B. 函数返回值得类型就是返回值表达式的类型

C. 函数返回值的类型与返回值表达式类型不同时,函数表达式类型应该转换成返回值类型

D. 函数返回值的类型决定了返回值表达式的类型 答案:B

6. 在函数的定义格式中,下面各组成部分中,( )是可以省略的。

A.函数名

B. 函数数据类型说明 C. 函数体 D. 函数参数 答案:D

7. 下面叙述中错误的是( )。

A.调用函数必须在一条独立的语句中完成 B. 一个函数中可以有多条return语句 C. 函数中通过return语句传递函数值 D. 主函数名main也可以带有形参 答案:A

8. 非数组、指针或引用型变量做实参时,它和对应形参之间的数据传递方式是( )。

A.地址传递 B. 单向值传递 C. 双向值传递 D. 由用户指定传递方式 答案:B

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

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

11. 以下程序有语法性错误,有关错误原因的正确说法是( )int main() {

)。 )。 。 int a=5,k; void prt_char(); ……

k=prt_char(); …… }

A. 语句void prt_char();有错,它是函数调用语句,不能用void说明。 B. 变量名不能使用大写字母。

C. 函数说明和函数调用语句之间有矛盾。 D. 函数名不能使用下划线。 答案:C

12. 正确的函数原型形式为( )。

A.void fun(void) ;

B.double fun(int x;int y);

C.int fun(int=0,int);

D.double fun(int x,y)

答案:A

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); 答案:C

14. 以下叙述中正确的是( )。 A.构成C++程序的基本单位是函数 B.可以在一个函数中定义另一个函数 C.main()函数必须放在其他函数之前

D.所有被调用的函数一定要在调用之前进行定义 答案:A

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

三、程序填空题 (本大题35分) 1.

本题分值:每空3分,共12分。

题目描述:以下程序计算4名学生3门课程成绩的平均分。在主函数中给定各门课程的成绩和输出计算得到的各平均分,avg函数用于计算各课程的平均分。 代码:

#include using namespace std; int main() {

void avg(int m[][3],float n[]);

int d[4][3]={88,66,93,84,75,68,97,98,89,90,71,82};

float a[3];

avg(__(1)__); //调用avg函数求平均分

for(int i=0;i<3;i++) cout<<__(2)__<<\输出3门课程的平均分 return 0; }

void avg(int m[][3],float n[]) {

int i,j,s; for(i=0;i<3;i++) {

__(3)__; for(j=0;j<4;j++) {

s+=__(4)__; //求4名学生某门课程的总分 n[i]=s/4.0; } } } 答案: (1) d,a (2) a[i] (3) s=0 (4) m[j][i] 2.

本题分值:每空3分,共9分。 题目描述:求n!。

代码:

#include using namespace std; int main() { }

// 求n的阶乘 long fact(int n) {

long f;

long fact(int n); int n; long p;

cin>>n; //请输入一个正整数 if (n<1) return 0; __(1)__;

cout<

if (n<=1) } 答案:

(1) p=fact(n) (2) f=1

else

__(3)__; // 递归调用函数fact() __(2)__;

return f;

(3) f=n*fact(n-1) 3.

本题分值:每空3分,共9分。

题目描述:以下程序中的函数compare()实现库函数strcmp()的功能。当两个字符串完全相同是,得到0;当第一个字符串小时,得到一个负数;当第一个字符串大时,得到一个正数。 代码:

#include using namespace std; int main() { }

int compare(char s[],char t[]) {

int i;

int compare(char s[],char t[]); char a[20],b[20]; int k; gets(a); gets(b);

k=compare(__(1)__); cout<

//输入一个字符串到字符数组a中,以回车键结束

}

for(__(2)__;s[i]==t[i];i++)

if(s[i]=='\\0')

__(3)__;

return s[i]-t[i];

参考答案: (1) a,b (2) i=0 (3) return 0 4.

本题分值:空(1)2分,空(2)3分,共5分。

题目描述:写出判断某数为素数(素数是指只能被自己和1整除的数)的函数。是素数返回1,不是素数返回0。

代码:

#include using namespace std; #include int main() {

int prime(int ); int i,k; cin>>i; k=__(1)__;

}

cout <

int prime(int n) { } 答案: (1)prime(i) (2)n%m==0

课后作业-5-指针

一、判断题(每小题3分,共48分) 1. 函数的返回值不能是指针。 答案:F

2. 变量的指针,其含义是指该变量的值。 答案:F

3. 指针前用*来取出变量的内存地址。 答案:F

int m;

for(m=2;m<=sqrt(n);m++)

if(__(2)__) return 0;

return 1;

4. 指针加减一个整数时,不能使指针指向未知区域。 答案:T

5. 指针变量可以加上一个非整型量。 答案:F

6. 两个同类型的指针可以相加。 答案:F

7. 指针变量不能作为函数的参数。 答案:F

8.对指针只要赋给一个地址值就可以了。 答案:F

9. 指针是地址变量。 答案:T

10.char *str=”good!”;是正确的语句。 答案:T

11. 指针的类型必须与其指向的变量的类型必须相同。 答案:T

12.用new所开辟的动态存储空间,释放时必须使用delete。

本文来源:https://www.bwwdw.com/article/e5h3.html

Top