C++练习题.docx
- 文档编号:3894731
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:26
- 大小:1.06MB
C++练习题.docx
《C++练习题.docx》由会员分享,可在线阅读,更多相关《C++练习题.docx(26页珍藏版)》请在冰豆网上搜索。
C++练习题
1[简答题]学生得记录由学号与成绩组成,N名学生得数据已放入主函数中得结构体数组s中,请编写函数fun,其功能就是:
把分数最高得学生数据放在b所指得数组中。
注意:
分数最高得学生可能不止一个,函数返回分数最高得学生人数。
注意:
部分源程序给出如下。
请勿改动主函数main与其她函数中得任何内容,仅在函数fun得花括号中填入您编写得若干语句。
试题程序:
参考解析:
【参考答案】
【考点分析】
本题考查:
结构体数组操作;用循环判断结构查找数组中得最大值。
【解题思路】
该程序使用两个循环判断语句,第1个循环判断语句得作用就是找出最大值;第2个循环判断语句得作用就是找出与max相等得成绩(即最高成绩)得学生记录,并存入b中。
【解题宝典】’
对于如何找出数组中最大值(多个相等)得方法,我们已经不陌生。
如何对结构体数组进行类似操作呢?
掌握以下语句:
2[单选题]下列定义数组得语句中,正确得就是()。
参考答案:
A
参考解析:
数组说明得一般形式为:
类型说明符数组名[常量表达式]。
B选项中N就是变量,不能用变量定义数组长度。
c选项中数组长度就是非法得一串数字。
定义数组时必须为其指明长度,D选项中数组长度为空,所以非法。
3[单选题]若有以下程序段
则以下选项中值为6得表达式就是
A、P->nB、(*p)、nC、p->n++D、++(P->n)
参考答案:
D
参考解析:
本题考查结构体变量得引用,其中a为定义得结构体数组,D选项中P->n为5,++(P->11)为6,所以D选项正确。
4[单选题]有以下程序
程序运行后得输出结果就是
A、4B、8C、9D、6
参考答案:
B
参考解析:
本题考查宏定义,宏定义只就是做个简单得替换,执行NUM=(N+l+1)*N+1/2=8,选项B正确。
5[单选题]有以下程序
程序要求输出结构体中成员a得数据,以下不能填入横线处得内容就是
A、a、aB、*P、aC、P->aD、(*p)、a
参考答案:
B
参考解析:
本题考查结构体变量得引用,题目中要求输出结构体中成员a得数据,P为指针,*P为结构体变量,那么*P、a可以表示为结构体中成员a得数据。
6[单选题]若有定义语句:
doublea,*P=&a;以下叙述中错误得就是()。
A、定义语句中得*号就是-个间址运算符
B、定义语句中得木号就是-个说明符
C、定义语句中得P只能存放double类型变量得地址
D、定义语句中,P=&a把变量a得地址作为初值赋给指针变量P
参考答案:
A
参考解析:
在变量定义doublea,*P:
&a;中,}号就是一个指针运算符,而非间址运算符,所以A错误。
7[单选题]设有以下程序段:
以下叙述正确得就是()。
A、只有变量c得定义就是合法得
B、只有变量a,b,c得定义就是完全合法得
C、所有变量得定义都就是完全合法得
D、只有变量a,b得定义就是完全合法得
参考答案:
D
参考解析:
float“8]={1、0,2、0};定义了一个包含8个float型元素得数组,并初始化了数组得前2项,其她项就是随机数。
intb[1]={0},定义了只有一个int型元素得数组,并初始化为0。
charc[]={¨A”,”B¨};定义一个char型数组,大小有初始化元素决定,但初始化值就是字符串,类型不兼容,编译出错。
chard=…1’;定义一个char型变量,但就是初始化赋值字符串,类型不兼容,编译出错。
因此只有a,b定义与初始化正确。
故答案为D选项。
8[单选题]有以下程序:
程序运行后得输出结果就是()。
A、1002,ZhangDa,1202、0
B、1002,ChangRon9,1202、0
C、1001,ChangRon9,1098、0
D、1001,ZhangDa,1098、0
参考答案:
D
参考解析:
本题考查结构体得相关操作以及传值、传址得区别,该题中调用f函数后,会生成参数a得一个副本,而不会改变a得值,所以a值维持原值,选项D正确。
9[单选题]有以下程序:
则以下函数调用语句错误得就是()。
A、k:
f(a,B、;B、k:
add(a,B、;C、k=(*f)(a,B、;D、k=*(a,B、;
参考答案:
D
参考解析:
D选项中+f(a,b)表示调用后返回一个指向整型数据得地址指针,即该函数得返回值为指针类型,所以不能将其赋值给整形变量k。
10[单选题]程序调试得任务就是()。
A、设计测试用例
B、验证程序得正确性
C、发现程序中得错误
D、诊断与改正程序中得错误
参考答案:
D
参考解析:
程序调试得任务就是诊断与改正程序中得错误。
1[填空题]下列给定程序中,函数fun得功能就是进行数字字符转换。
若形参ch中就是数字字符‘0’~‘9’,则将‘0’转换成‘9’,‘1’转换成‘8’,‘2’转换成‘7’,…,‘9’转换成‘0’;若就是其她字符则保持不变;并将转换后得结果作为函数值返回。
请在程序得下画线处填入正确得内容并将下画线删除,使程序得出正确得结果。
注意:
部分源程序给出如下。
不得增行或删行,也不得更改程序得结构!
试题程序:
参考解析:
【参考答案】
(1)char
(2)ch<=~9(3)’O’
【考点分析】
本题考查:
函数定义,注意函数定义得一般形式以及有参函数与无参函数得区别;if语句条件表达式,本题得条件表达式就是判断数字字符;函数返回值,其一般形式为“return表达式;”。
【解题思路】
填空l:
函数定义时,类型标识符指明了函数得类型,函数得类型实际上就是函数返回值得类型,所以此处应该填入char。
填空2:
通过if条件语句判断字符串中字符就是否为数字字符,即大于等于字符‘0’,同时小于等于字符‘9’。
填空3:
return语句完成函数返伺操作,要实现字符转换,完整语句为return~9一(ch一~0)。
【解题宝典】、
有参函数定义,其一般形式为:
类型标识符函数名(形式参数列表)
{声明部分
语句
}
在形参列表中给出得参数称为形式参数,它们可以就是各种类型得变量,各参数之间用逗号分隔。
在进行函数调用时,主调函数将赋予这些形式参数实际得值。
形参也就是变量,必须在形参列表中给出类型说明。
2[单选题]以下叙述中错误得就是()。
A、gets函数用于从终端读人字符串
B、getehar函数用于从磁盘文件读人字符
C、fputs函数用于把字符串输出到文件
D、fwrite函数用于以二进制形式输出数据到文件
参考答案:
B
参考解析:
本题考查字符处理函数与文件操作函数。
属于基础知识,其中B选项9etchar函数就是用于从终端读人一个字符。
3[单选题]以下选项中合法得实型常量就是( )
A、0B、3、13e-2、1C、、914D、2、0*10
参考答案:
C
参考解析:
A选项为整型数据。
B选项中e后面必须为整数。
D选项就是表达式,不就是常量,所以选择C。
4[单选题]有以下程序段:
以下选项中不能正确引用字符串得就是()。
A、3B、p[3]C、str[2]D、*P
参考答案:
A
参考解析:
tp[3]一p[3][0]就是一个字符,不就是字符串,选项A错误。
P[3]与str[2]与+P分别代表了ddd,eec,flaa。
答案为A选项。
5[单选题]有以下程序(strcpy为字符串复制函数,streat为字符串连接函数)
程序运行后得输出结果就是
A、a12xyzB、bc2yzC、a2yzD、12yz
参考答案:
C
参考解析:
本题考查字符串处理函数strcpy与streat,执行完strcpy(a+1,b+2);后,a变为a2,执行完strcat(a,c+1)后,a变为a2yz,所以答案为C选项。
6[单选题]在软件开发中,需求分析阶段产生得主要文档就是()。
A、软件集成测试计划
B、软件详细设计说明书
C、用户手册。
D、软件需求规格说明书
参考答案:
D
参考解析:
需求分析阶段得工作可以概括为:
需求获取、需求分析、编写需求规格说明书、需求评审四个方面。
所以选择D。
7[单选题]若有以下程序
则程序得输出结果就是
A、1,2,3,4B、2,1,2,-1C、5,1,2,-1D、2,2,2,4
参考答案:
参考解析:
第一个if语句得判断条件中就是逻辑或表达式,所以只要有一个运算对象为真结果就为真,且如果前面得已经为真,后面得表达式不再进行执行判断。
执行第一个if判断条件时a得值为2,整个表达式得值为真,b得值不变,c得值为2。
判断第二个if条件为逻辑与表达式。
只有两个运算对象均非零,才为真,第一个表达式c==3,不成立,不再判断第二个运算对象,所以不执行d=-1操作与a=5操作。
所以结果为选项D。
8[单选题]下面选项中得程序段,没有编译错误得就是
参考答案:
A
参考解析:
本题考查字符数组得初始化以及指向字符串得指针,B选项不能直接将字符串赋值给数组名,C选项不能将两个字符数组直接互相赋值,D选项中不能这样定义charmark[],必须指定长度或者直接初始化。
9[单选题]以下选项中关于程序模块化得叙述错误得就是()。
A、可采用自底向上、逐步细化得设计方法把若干独立模块组装成所要求得程序
B、把程序分成若干相对独立、功能单一得模块,可便于重复使用这些模块
C、把程序分成若干相对独立得模块,可便于编码与调试
D、可采用自顶向下、逐步细化得设计方法把若干独立模块组装成所要求得程序
参考答案:
A
参考解析:
程序模块化思想中,可以采用自顶向下、逐步细化得方法。
所以选项A中“自底向上”得说法就是错误得。
10[单选题]已知大写字母A得ASCIl码值就是65,小写字母a得ASCIl码值就是97。
以下不能将变量C中得大写字母转换为对应小写字母得语句就是()。
A、C=(。
A’+C、%26一"a"
B、c=c+32
C、c=c一"A"+"a"
D、c=(c一’A")%26+-a"
参考答案:
A
参考解析:
根据题意可知,小写字母比与之对应得大写字母得ASCⅡ码大32。
A选项中字符A加上c表示得大写字符再对字母个数26取余,本身这个表达式没有任何含义,所以选择A选项。
1[单选题]以下叙述中正确得就是
A、如果函数带有参数,就不能调用自己
B、所有函数均不能接受函数名作为实参传入
C、函数体中得语句不能出现对自己得调用
D、函数名代表该函数得入口地址
参考答案:
B
参考解析:
本题考查函数调用相关知识,B选项中函数可以接受函数名作为实参传人,引用函数名也就是指针,C、A选项就是错误得,因为递归函数就能调用自己。
2[单选题]有以下程序:
程序运行时,输入得值在哪个范围才会有输出结果()。
A、小于3得整数
B、不等于10得整数
C、大于3或等于10得整数
D、大于3且不等10得整数
参考答案:
D
参考解析:
根据代码可知如果x得值小于等于3,执行空语句,不进行打印操作。
如果x得值大于3,再判断x得值就是否不等于l0,如果不等于l0就打印X得值,所以选择D选项。
3[单选题]设有以下语句:
inta=1,b=2,c;c=a^(b<<2);执行后,c得值为()。
A、7B、9C、8D、6
参考答案:
B
参考解析:
b为2,二进制为00000010,执行左移两位操作后为000011300,然后与a00000001做异或操作结果为00001001、即十进制得9。
4[单选题]以下叙述中正确得就是
A、循环发生嵌套时,最多只能两层
B、三种循环for,while,do-while可以互相嵌套
C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误
D、for语句得圆括号中得表达式不能都省略掉
参考答案:
B
参考解析:
A选项中,循环发生嵌套时,没有规定层数;C选项中,循环嵌套时,书写代码时没有要求必须缩进;D选项中,for语句得圆括号中得表达式都可以省掉。
因此B选项正确。
5[单选题]以下程序依次把从终端输入得字符存放到f文件中,用#作为结束输入得标志,则在横线处应填入得选项就是
A、ch,”fname
”B、fp,chB、chC、ch,fp
参考答案:
D
参考解析:
本题考查fpute函数,该函数将字符ch写到文件指针fp所指向得文件得当前写指针得位置。
函数格式:
intfputc(intn,),因此答案为D选项。
6[单选题]有以下程序:
程序运行后得输出结果就是()。
参考答案:
A
参考解析:
结构体s中n代表数组得实际长度,a就是个定长数组。
函数f()对结构体s内得a数组元素使用冒泡法进行递增排序。
因此最终数组得元素就是一个递增序列。
故答案为A选项。
7[单选题]有如下得说明与定义
则以下叙述中正确得就是
A、(P++)->a与P++->a都就是合语法得表达式,但二者不等价
B、语句++P->a;得效果就是使P增1
C、语句++P->a;得效果就是使成员a增1
D、语句´P->s++;等价于(*P)->s++;
参考答案:
C
参考解析:
本题考查结构体变量得引用,++P->a得效果就是使成员a增1,P++->a不合法,*P->s++为字符e,与(*P)->s++不等价。
8[单选题]有以下程序:
执行时输入:
6<回车>,则输出结果就是()。
A、6B、8C、7D、5
参考答案:
C
参考解析:
后置自增运算:
k++表示先运算,后自如。
if(t++<6)p血ff(“%d\n”,t);elseprinff(“%d、n”,t);t得初值为6,t++<6,则条件为假,执行prinff(“%d、n”,t一),此时t=7,打印t值为k之后进行自减操作t=6。
因此打印得结果为7。
故答案为C选项。
9[单选题]有以下程序
程序运行后得输出结果就是
A、46B、44C、22D、24
参考答案:
D
参考解析:
本题主要考查指针与数组。
首先通过P=a使P指向数组得第1个元素,所以输出2;在输出2以后,由于P++,即P就指向数组得第2个元素,**k就就是取出P所指向元素得值,而P指向得就是数组得第2个元素,即输出4。
因此D选项正确。
10[单选题]在一个C源程序文件中所定义得全局变量,其作用域为()。
A、由具体定义位置与extem说明来决定范围
B、所在程序得全部范围
C、所在函数得全部范围
D、所在文件得全部范围
参考答案:
A
参考解析:
全局变量得作用域就是从声明处到文件得结束。
所以选择A)。
1[填空题]给定程序中,函数fun得功能就是:
计算形参X所指数组中N个数得平均值(规定所有数均为正数),将所指数组中大于平均值得数据移至数组得前部,小于等于平均值得数据移至X所指数组得后部,平均值作为函数值返回,在主函数中输出平均值与移动后得数据。
例如,有l0个正数:
46、30、32、40、6、17、45、15、48、26,平均值为30、500000。
移动后得输出为:
46、32、40A5、48、30、6、17、15、26。
请在程序得下画线处填入正确得内容并把下画线删除,使程序得出正确得结果。
注意:
部分源程序在文件BLANKl、C中。
不得增行或删行,也不得更改程序得结构!
试题程序:
参考解析:
(1)sdN
(2)j++(3)一1
【解题思路】
填空l:
由原程序可知,av代表得就是平均值,而平均值得求法就是所有数得总与除以数得个数,因而本空应该填写s/N。
填空2:
y数组代表暂时存放X数组,if(X[i]>av)表达得就是当x数组中得数大于平均值时,应该把这些大于平均值得数放在y数组得前半部分,因而此空应该填y[j++]。
填空3:
此空表明当x[i]不等于什么时,X[i]中得数要赋值给Y数组,由题意可知此空只能填写一1。
2[单选题]有以下程序:
程序运行后得输出结果就是()。
A、10,One*Dream!
B、9,One*Dream!
C、9,One*WorldD、10,One*World
参考答案:
A
参考解析:
P就是指向二维字符数组第二行One+Dream!
得数组指针,所以长度就是l0,打印输出得也就是该字符串。
3[简答题]学生得记录由学号与成绩组成,N名学生得数据已放入主函数中得结构体数组s中,请编写函数fun,其功能就是:
把分数最高得学生数据放在b所指得数组中。
注意:
分数最高得学生可能不止一个,函数返回分数最高得学生人数。
注意:
部分源程序给出如下。
请勿改动主函数main与其她函数中得任何内容,仅在函数fun得花括号中填入您编写得若干语句。
试题程序:
参考解析:
【考点分析】
本题考查:
结构体数组操作;用循环判断结构查找数组中得最大值。
【解题思路】
该程序使用两个循环判断语句,第1个循环判断语句得作用就是找出最大值;第2个循环判断语句得作用就是找出与max相等得成绩(即最高成绩)得学生记录,并存入b中。
【解题宝典】’
对于如何找出数组中最大值(多个相等)得方法,我们已经不陌生。
如何对结构体数组进行类似操作呢?
掌握以下语句:
4[单选题]有以下程序:
程序运行后得输出结果就是()。
A、7B、10C、8D、9
参考答案:
D
参考解析:
调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用f(f(a,b),f(a,c));即调用f(3,6)函数返回9。
5[单选题]有以下程序
程序得输出结果就是
A、9B、14C、10D、15
参考答案:
D
参考解析:
考查函数得递归调用,只需要一步一步递归调用fun函数即可,执行fun(5)=5+(4+(3+(2+fun
(1))))=15。
所以答案为D选项。
1[单选题]表达式:
(im)((double)9/2)一9%2得值就是()。
A、0B、3C、4D、5
参考答案:
B
参考解析:
先将整型数据9强制转换成double型,然后除以2得到得结果与double型保持一致,即为4、5,然后将4、5强制转换成整型数据4,然后计算9%2得值为1,最后计算4一l得值为3,所以选择B选项。
2[单选题]有以下程序:
程序运行后得输出结果就是()。
A、LoB、30C、0D、64
参考答案:
D
参考解析:
本题目中静态局部变量x,在静态存储区内分配存储单元。
在程序整个运行期间都不释放。
所以第一次循环s得值为2,第二次循环中,返回得x得值为4,所以s得值为8,第三次循环,返回得x得值为8,所以S得值为64、
3[单选题]有以下程序:
程序运行后得输出结果就是()。
A、8B、2C、4D、1
参考答案:
A
参考解析:
第一次调用m=f(f(f
(1))),第二次为m=f(f
(2)),第三次为m=f(4),即返回值为8。
4[单选题]若变量已正确定义,以下选项中非法得表达式就是
A、a!
=4||'b'B、'a'=1/2*(x=Y=20,x*3)C、'a'%4
13)'A'+32
参考答案:
B
参考解析:
A选项中'a'即表示a为字符常量,再给'a'赋值1/2*(x=Y=20,x*3),就是不正确得。
因此B选项正确。
5[单选题]若有以下程序
则程序得输出结果就是
A、0,3,2,2,1,0,3,1,
B、1,4,3,3,2,1,4,2,
C、5,6,5,6,5,6,5,6,
D、6,7,6,7,6,7,6,7,
参考答案:
A
参考解析:
本题考查二维字符数组得运用,题目中首先定义了一个一维字符数组,从三层for循环可以瞧出要找得就是w数组中每个字符在二维数组中得位置,比如d字母,在a数组中就就是0,3其她字符类似,所以本题答案为A。
1[单选题]下面关于“EOF”得叙述,正确得就是
A、EOF得值等于0
B、EOF就是在库函数文件中定义得符号常量
C、文本文件与二进制文件都可以用EOF作为文件结束标志
D、对于文本文件,fgetc函数读入最后一个字符时,返回值就是EOF
参考答案:
B
参考解析:
在c语言中,或更精确地说成c标准函数库中表示文件结束符(endoffile)。
在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志得文件,必须就是文本文件。
在文本文件中,数据都就是以字符得ASCII代码值得形式存放。
我们知道,ASCII代码值得范围就是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。
2[单选题]若有定义:
inta,h;通过语句:
scanf(”%d;%d”,&a,&B、;,能把整数3赋给变量a,5赋给变量b得输入数据就是()。
A、35B、3,5C、3;5D、35
参考答案:
C
参考解析:
输入数据得格式必须与seanf()得格式控制串完全匹配,所以输入时必须在3与5之间输入“;”。
3[单选题]有以下程序:
程序运行后得输出结果就是()。
A、02356B、0235C、235D、2356
参考答案:
C
参考解析:
k得值为5,逐个对caBe语句进行匹配,均不匹配,执行default下得语句n=0;k一一。
再执行case2:
ca804:
后面得语句n+=2;k一一;。
执行break语句跳出switch判断,打印n得值,即2。
经过第一次循环后,k得值为3,然后进行k>0&&ll<5条件判断为真。
第二次执行循环体,执行case3:
后面得语句n+=1;k一一;。
再执行break语句跳出循环,此时打印n得值3,此时k得值为2。
第三次执行循环体k得值为2,满足条件,执行case2:
case4:
后面得语句n+=2;k一一;。
执行break语句跳出循环体。
打印n得值5。
此时n不满足条件k>0&&n<5,所以结束循环。
整个程序得打印结果为235。
4[单选题]有以下程序:
程序运行后得输出结果就是()。
A、9B、8C、7D、10
参考答案:
A
参考解析:
题目中静态局部变量a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。
所以第-次调用函数执行n+=a++;时a先与n相加在再进行自增。
n得值为4,a得值为2,且a变量执行完后空间没有释放。
再执行s:
。
+f(a)时,s得值为4,调用f(a)函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 练习题