C++程序设计练习答案Word文档格式.docx
- 文档编号:20638790
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:20
- 大小:21.71KB
C++程序设计练习答案Word文档格式.docx
《C++程序设计练习答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++程序设计练习答案Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
D.嵌套函数
10.适宜采用inline定义函数情况是()
A.函数体含有循环语句
B.函数体含有递归语句
C.函数代码少、频繁调用
D.函数代码多、不常调用
11.在函数定义中的形参属于()
A.全局变量
B.局部变量
C.静态变量
D.寄存器变量
12.C++语言中所有在函数中定义的变量,连同形式参数,都属于()
D.函数
13.下列有关重载函数的说法中正确的是()
A.重载函数必须具有不同的返回值类型
B.重载函数参数个数必须相同
C.重载函数必须有不同的形参列表
D.重载函数名可以不同
14.使用地址作为实参传给形参,下列说法正确的是()
A.实参是形参的备份
B.实参与形参无联系
C.形参是实参的备份
D.实参与形参是同一对象
15.在C++中,使用流进行输入输出,其中用于屏幕输入()
A.cin
B.cerr
C.cout
D.clog
16.若有以下定义,则说法错误的是()
inta=100,*p=&
a;
A.声明变量p,其中*表示p是一个指针变量
B.变量p经初始化,获得变量a的地址
C.变量p只可以指向一个整型变量
D.变量p的值为100
17.C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是()
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
18.3.可替换#definePI的语句是()
A.floatPI;
B.constfloatPI=;
C.constPI;
D.const;
19.如果一个函数没有返回值,则应选择下列说明符中的()。
A.doubleB.voidC.intD.char
20.8.下列哪种默认参数的声明是不正确的(C)
A.intmax(inta,intb,intc,intd=0);
B.intmax(inta,intb,intc=0,intd=0);
C.intmax(inta=0,intb,intc=0,intd=0);
D.intmax(inta,intb=0,intc=0,intd=0);
21.包含哪种语句的函数不能声明为内联函数(A)
A.循环B.变量自增自减...else…D.变量声明
22.已知:
constchar*ptr;
那么ptr应该是(A)。
A、指向字符串常量的指针
B、指向字符串的常量指针
C、指向字符的常量的指针
D、指向字符常量的指针
23.11、在C++中,关于下列设置参数默认值的描述中,正确的是(C).
A.不允许设置参数的默认值
B.设置参数默认值只能在定义函数时设置
C.设置参数默认值时,应该是先设置右边的再设置左边的
D.设置参数默认值时,应该全部参数都设置
二、填空题
1.开发一个C++语言程序的步骤通常包括编辑、___、连接、运行和调试。
编译
2.假设inta=1,b=2;
则表达式(++a/b)*b--的值为___。
2
3.下面程序的输出结果为___。
#include<
>
voidmain()
{intnum=2,i=6;
do
{i--;
num++;
}while(--i);
cout<
<
num<
endl;
}
5
4.由const修饰的对象称为___。
常对象
5.表达式cout<
end1还可表示为___。
‘\n’
6.在C++中,访问一个指针所指向的对象的成员所用的指向运算符是___。
->
7.C++程序的源文件扩展名为___。
cpp
8.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是___的头文件。
自定义
9.C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取___方式。
传地址或引用
10.若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的___语句。
声明
11.在C++中有两种参数传递方式:
传值和___。
传引用或地址
12.在函数前面用___保留字修饰时,则表示该函数表为内联函数。
inline
13.C++是通过引用运算符___来定义一个引用的。
&
14.局部对象和全局对象中,在同一程序中___生存期最长。
全局对象
15.布尔类型标识符是()
bool
16.若要使用C++标准类库,需要指定相应的命名空间,所用的语句是——————。
usingnamespacestd;
17.使用new为int数组动态分配10个存储空间是___。
newint[10];
18.在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语句___。
int*ip=newint[10];
19.8.C++中语句constchar*constp=“hello”;
所定义的指针p和它所指的内容都不能被___。
修改
20.如果要把PI声明为值为类型为双精度实数的符号常量,该声明语句是___。
constdoublePI;
或者constdoublePI=;
21.面向对象程序设计的3个主要性质是:
______、继承、______。
封装,多态
22.使用cin和cout进行输入输出操作的程序必须包含头文件___
三、改错题
1.#include<
voidmain()
{inti,*p;
i=10;
*p=i;
cout<
*p<
}
*p=i;
指针即地址没有被赋值。
[修改]p=&
i;
2.以下程序实现交换a,b变量的值,请用下横线标出错误所在行并给出修改意见。
voidswap(int&
a,int&
b)
{a=a+b;
b=a-b;
a=a-b;
{inta=19,b=15;
"
a="
a<
b="
b<
swap(&
a,&
b);
函数的形参是变量的引用,调用时的实参应该是地址。
[修改]swap(a,b);
四、完成程序题(本大题共5小题,每小题4分,共20分)
1.下面是一个三角形三边,输出其面积C++程序,在下划线处填上正确的语句。
voidarea()
{doublea,b,c;
Inputabc:
;
________
if(a+b>
c&
a+c>
b&
c+b>
a)
{doublel=(a+b+c)/2;
_______
Theareais:
s<
else
Error"
{area();
cin>
a>
b>
c;
,doubles=sqrt(l*(l-a)*(l-b)*(l-c));
[解析]输入三个边的长度,由公式得出三角形的面积doubles=sqrt(l*(l-a)*(l-b)*(l-c));
2.下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。
iostream>
_________;
{doublerad;
rad="
rad;
doublel=*pi*rad;
doubles=pi*rad*rad;
\nThelongis:
l<
Theareais:
usingnamespacestd,#definepi
[解析]进行输入或输出要引入iostream,所以usingnamespacestd;
从标点看没有分号,所以
使用宏定义,#definepi。
3.程序实现大写字母转换成小写字母。
{chara;
_______;
if(_______)
a=a+i;
inti=32;
,a>
=A&
a<
=Z
[解析]大写字母变小写字母相差32,需要对i声明并初始化。
大写字母变小写字母。
要判断字
符是大写字母。
4.在下面程序横线处填上适当内容,使程序执行结果为:
S=2
S=5
S=9
voidsum(inti)
{staticints;
s="
voidmain(void)
{inti;
for(i=0;
________)
sum(i);
s=s+i+2;
,i<
3,i++
5.下面程序段用来求三角形的面积,首先判断三边不符合组成三角形时,返回-1,符合时输出三角形面积。
doublearea(doublea,doubleb,doublec)
{if(____)
return-1;
{
doublear,l;
l=(a+b+c)/2;
ar=sqrt(l*(l-a)*(l-b)*(l-c));
returnar;
{doublei=0,j=0,k=0;
输入三角形三边:
i>
j>
k;
doubles=area(i,j,k);
if(s<
0)
不是三角形"
______
a+b>
c||a+c>
b||b+c>
a,cout<
[解析]三角形组成规则:
两边之和大于第三边。
0不是三角形,是则输出s。
6.参数顺序不同的函数重载,写出运行结果。
#include<
usingnamespacestd;
voidinfo(char*name,intage)
{cout<
名称:
name<
,数量:
age<
}
voidinfo(intage,char*name)
{cout<
intmain()
{info("
书包"
16);
info(18,"
笔记本"
);
return0;
}
7.比较内部auto变量和内部static变量的不同,写出运行结果。
#include<
voidtest()
{intx=10;
分段函数y=f(x)的值,f(x)的表达式如下:
x2―1(x<
–1)
y=x2(–1≤x≤1)
x2+1(x>
1)
.#include<
floatx,y;
cout<
Enterx:
"
cin>
x;
if(x<
-1)
y=x*x-1;
elseif(x>
=-1&
x<
=1)
y=x*x;
elsey=x*x+1;
f(x)="
y<
2.用switch语句实现计算器的简单功能。
求100以内的奇数之和
inti=1,sum=0;
while(i<
=100)
{
sum+=i;
i+=2;
sum="
sum<
do
}while(i<
=100);
inti,sum;
sum=0;
for(i=1;
i<
=100;
i+=2)
4.输入一个整数,求出它的所有因子。
intn,k;
Enterapositiveinteger:
n;
Number"
n<
Factors"
for(k=1;
k<
=n;
k++)
if(n%k==0)
cout<
5.定义函数up(ch),如字符变量ch是小写字母就转换成大写字母并通过up返回,否则字符ch不改变。
iostream>
charup(charc)
{
if(c>
=97&
c<
=123)
return(c-32);
else
returnc;
inti;
charc;
for(i=0;
i<
5;
i++)
{cin>
up(c)<
"
endl;
6.编写主程序输入实数r和整数n,用函数求r的n次幂。
>
doublepower(doublea,intb)
doubleresult=;
for(i=0;
b;
i++)
result=result*a;
returnresult;
doubler;
intn;
r="
r;
n="
r<
的"
n<
次幂是:
power(r,n)<
7.编写程序计算两个整数绝对值阶乘之差。
intfac(intn)用函数实现交换两个数a和b的值。
方法一:
简单变量作为函数形参(值传递)
#include<
voidswap(intx,inty)
{inttemp;
temp=x;
x=y;
y=temp;
x="
y="
voidmain(){
inta=10,b=20;
swap(a,b);
b="
}
方法二:
引用作为函数形参(地址传递)
x,int&
y){
inttemp;
方法三:
指针作为函数形参(地址传递)
swap(int*p1,int*p2)
{inttemp;
temp=*p1;
*p1=*p2;
*p2=temp;
intmain(){
int*pa=&
a,*pb=;
swap(pa,&
<
a<
b="
b;
9.输入a,b,c三个数,调用函数,得到其中最大数。
voidsort(int&
a,int&
b,int&
c)
{intm;
if(b>
a){m=a;
a=b;
b=m;
if(c>
a=c;
c=m;
if(c>
b){m=c;
c=b;
intmain()
{inta,b,c,ma;
Pleaseentera,b,c:
cin>
sort(a,b,c);
”,”<
c<
return0;
intmax(int*x,int*y,int*z);
编写一个求方程ax2+bx+c=0的根的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。
要求从主函数输入a,b,c的值并输出结果。
voidequation_1(inta,intb,intc){
doublex1,x2,temp;
temp=b*b-4*a*c;
x1=(-b+sqrt(temp))/(2*a*;
x2=(-b-sqrt(temp))/(2*a*;
两个不相等的实根"
x1="
x1<
x2="
x2<
voidequation_2(inta,intb,intc)
x2=x1;
两个相等的实根"
voidequation_3(inta,intb,intc)
方程无解/两个虚根"
inta,b,c;
doubletemp;
输入a,b,c的值"
方程为:
x*x+"
b<
x+"
c<
=0"
if(temp>
0)
equation_1(a,b,c);
if(temp==0)
equation_2(a,b,c);
if(temp<
equation_3(a,b,c);
11.用内联函数计算圆的面积。
inlinedoubleCalArea(doubleradius)
return*radius*radius;
doublearea,r;
求2个或3个正整数中的最大数,用带有默认参数的函数实现。
io
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 练习 答案