C++程序设计上练习答案.docx
- 文档编号:8725625
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:18
- 大小:20.62KB
C++程序设计上练习答案.docx
《C++程序设计上练习答案.docx》由会员分享,可在线阅读,更多相关《C++程序设计上练习答案.docx(18页珍藏版)》请在冰豆网上搜索。
C++程序设计上练习答案
一、单项选择题之迟辟智美创作
1.编写C++法式一般需经过的几个步伐依次是()
A.编纂、调试、编译、连接
B.编纂、编译、连接、运行
C.编译、调试、编纂、连接
D.编译、编纂、连接、运行
谜底:
B
2.设有界说inti;doublej=5;,则10+i+j值的数据类型是()
A.int
B.double
C.float
D.不确定
谜底:
B
3.有关C++编译指令,以下叙述正确的是()
A.C++每行可以写多条编译指令
B.#include指令中的文件名可含有路径信息
C.C++的编译指令可以以#或//开始
D.C++中不论#if后的常量表达式是否为真,该部份都需要编译
谜底:
B
4.在下列成对的表达式中,运算结果类型相同的一对是()
A./和/2
B.5/和5/2
C./2和7/2
D.8/2和/
谜底:
A
5.在C++中不返回任何类型的函数应该说明为()
A.int
B.char
C.void
D.double
谜底:
C
6.决定C++语言中函数的返回值类型的是()
A.return语句中的表达式类型
B.调用该函数时系统随机发生的类型
C.调用该函数时的主调用函数类型
D.在界说该函数时所指定的数据类型
谜底:
D
7.在C++中,函数原型不能标识()
A.函数的返回类型
B.函数参数的个数
C.函数参数类型
D.函数的功能
谜底:
D
8.在inta=3,int*p=&a;中,*p的值是()
A.变量a的地址值
B.无意义
C.变量p的地址值
D.3
谜底:
D
9.一个函数功能不太复杂,但要求被频繁调用,则应把它界说为()
A.内联函数
B.重载函数
C.递归函数
D.嵌套函数
谜底:
A
10.适宜采纳inline界说函数情况是()
A.函数体含有循环语句
B.函数体含有递归语句
C.函数代码少、频繁调用
D.函数代码多、不常调用
谜底:
C
11.在函数界说中的形参属于()
A.全局变量
B.局部变量
C.静态变量
D.寄存器变量
谜底:
B
12.C++语言中所有在函数中界说的变量,连同形式参数,都属于()
A.全局变量
B.局部变量
C.静态变量
D.函数
谜底:
B
13.下列有关重载函数的说法中正确的是()
A.重载函数必需具有分歧的返回值类型
B.重载函数参数个数必需相同
C.重载函数必需有分歧的形参列表
D.重载函数名可以分歧
谜底:
C
14.使用地址作为实参传给形参,下列说法正确的是()
A.实参是形参的备份
B.实介入形参无联系
C.形参是实参的备份
D.实介入形参是同一对象
谜底:
D
15.在C++中,使用流进行输入输出,其中用于屏幕输入()
A.cin
B.cerr
C.cout
D.clog
谜底:
A
16.若有以下界说,则说法毛病的是()
inta=100,*p=&a;
A.声明变量p,其中*暗示p是一个指针变量
B.变量p经初始化,获得变量a的地址
C.变量p只可以指向一个整型变量
D.变量p的值为100
谜底:
D
17.C++对C语言做了很多改进,即从面向过程酿成为面向对象的主要原因是()
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必需用原型
D.引进了类和对象的概念
谜底:
D
18.3.可替换#definePI3.1415926的语句是()
A.floatPI3.1415926;
B.constfloatPI=3.1415926;
C.constPI(3.1415926);
D.const3.1415926;
谜底:
B
19.如果一个函数没有返回值,则应选择下列说明符中的().
A.doubleB.voidC.intD.char
谜底:
B
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)
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< } 谜底: 5 4.由const修饰的对象称为___. 谜底: 常对象 5.表达式cout< 谜底: ‘\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(3.14159);或者constdoublePI=3.14159; 21.面向对象法式设计的3个主要性质是: ______、继承、______. 谜底: 封装,多态 22.使用cin和cout进行输入输出把持的法式必需包括头文件___ 谜底: 三、改错题 1.#include voidmain() {inti,*p; i=10; *p=i; cout<<*p< } 谜底: *p=i;指针即地址没有被赋值. [修改]p=&i; 2.以下法式实现交换a,b变量的值,请用下横线标犯毛病所在行并给出修改意见. #include voidswap(int&a,int&b) {a=a+b; b=a-b; a=a-b; } voidmain() {inta=19,b=15; cout<<"a="< swap(&a,&b); cout<<"a="< } 谜底: swap(&a,&b);函数的形参是变量的引用,调用时的实参应该是地址. [修改]swap(a,b); 四、完成法式题(本年夜题共5小题,每小题4分,共20分) 1.下面是一个三角形三边,输出其面积C++法式,在下划线处填上正确的语句. #include #include voidarea() {doublea,b,c; cout<<"Inputabc: "; ________ if(a+b>c&&a+c>b&&c+b>a) {doublel=(a+b+c)/2; _______ cout<<"Theareais: "< } else cout<<"Error"< } voidmain() {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++法式,在下划线处填上正确的语句. #include _________; _________; voidmain() {doublerad; cout<<"rad="; cin>>rad; doublel=2.0*pi*rad; doubles=pi*rad*rad; cout<<"\nThelongis: "< cout<<"Theareais: "< 谜底: [解析]进行输入或输出要引入iostream,所以usingnamespacestd;从标点看没有分号,所以 使用宏界说,. 3.法式实现年夜写字母转换成小写字母. #include voidmain() {chara; _______; cin>>a; if(_______) a=a+i; cout< } 谜底: inti=32;,a>=A&&a<=Z [解析]年夜写字母变小写字母相差32,需要对i声明并初始化.年夜写字母变小写字母.要判断字 符是年夜写字母. 4.在下面法式横线处填上适当内容,使法式执行结果为: S=2 S=5 S=9 #include voidsum(inti) {staticints; _________; cout<<"s="< } voidmain(void) {inti; for(i=0;________) sum(i); } 谜底: s=s+i+2;,i<3,i++ 5.下面法式段用来求三角形的面积,首先判断三边不符合组成三角形时,返回-1,符合时输出三角形面积. #include #include doublearea(doublea,doubleb,doublec) {if(____) return-1; else { doublear,l; l=(a+b+c)/2; ar=sqrt(l*(l-a)*(l-b)*(l-c)); returnar; } } voidmain() {doublei=0,j=0,k=0; cout<<"输入三角形三边: "; cin>>i>>j>>k; doubles=area(i,j,k); if(s<0) cout<<"不是三角形"< else ______ } 谜底: a+b>c||a+c>b||b+c>a,cout< [解析]三角形组陈规则: 两边之和年夜于第三边.s<0不是三角形,是则输出s. 6.参数顺序分歧的函数重载,写出运行结果. #include usingnamespacestd; voidinfo(char*name,intage) {cout<<"名称: "< "< } voidinfo(intage,char*name) {cout<<"名称: "< "< } intmain() {info("书包",16); info(18,"笔记本"); return0; } 7.比力内部auto变量和内部static变量的分歧,写出运行结果. #include usingnamespacestd; voidtest() {intx=10;//静态变量x staticinty=10;//静态变量y cout<<"auto_x="< } voidmain() {inti; for(i=0;i<3;i++) test(); } 五、编程题 1.求分段函数y=f(x)的值,f(x)的表达式如下: x2―1(x<–1) y=x2(–1≤x≤1) x2+1(x>1) .#include usingnamespacestd; voidmain() { 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; cout<<"f(x)="< } 2.用switch语句实现计算器的简单功能. #include usingnamespacestd; voidmain() { floatx,y;//运算数 charoper;//运算符 cout<<"Enterx,oper,y: "; cin>>x>>oper>>y; switch(oper) { case'+': cout<<"x+y="< case'-': cout<<"x-y="< case'*': cout<<"x*y="< case'/': if(y==0) { cout<<"divisoriszero! \n"; break; } cout<<"x/y="< default: cout<<"operatorhasnoeffect! \n"; } } #include usingnamespacestd; voidmain() { inti=1,sum=0; while(i<=100) { sum+=i; i+=2; } cout<<"sum="< } #include usingnamespacestd; voidmain() { inti=1,sum=0; do { sum+=i; i+=2; }while(i<=100); cout<<"sum="< } #include usingnamespacestd; voidmain() { inti,sum; sum=0; for(i=1;i<=100;i+=2) sum+=i; cout<<"sum="< } 4.输入一个整数,求出它的所有因子. #include usingnamespacestd; voidmain() { intn,k; cout<<"Enterapositiveinteger: "; cin>>n; cout<<"Number"< for(k=1;k<=n;k++) if(n%k==0) cout< cout< } 5.界说函数up(ch),如字符变量ch是小写字母就转换成年夜写字母并通过up返回,否则字符ch不改变. #include usingnamespacestd; charup(charc) { if(c>=97&&c<=123) return(c-32); else returnc; } voidmain() { inti; charc; for(i=0;i<5;i++) {cin>>c; cout< } cout< } 6.编写主法式输入实数r和整数n,用函数求r的n次幂. #include #include doublepower(doublea,intb) { inti; doubleresult=1.0; for(i=0;i result=result*a; returnresult; } voidmain() { doubler; intn; cout<<"r="; cin>>r; cout<<"n="; cin>>n; cout< "< } 7.编写法式计算两个整数绝对值阶乘之差. #include #include usingnamespacestd; intfac(intn)//计算一个整数绝对值的阶乘 {inti,f=1; n=abs(n); for(i=1;i<=n;i++)f=f*i; return(f); } voidmain() {intx,y,c1,c2; cout<<"pleaseenterx,y: "; cin>>x>>y; c1=fac(x);//调用函数fac,求x绝对值的阶乘 c2=fac(y);//调用函数fac,求y绝对值的阶乘 cout<<“theoutcomeis”< } 交换两个数a和b的值. 方法一: 简单变量作为函数形参(值传递) #include usingnamespacestd; voidswap(intx,inty) {inttemp; temp=x;x=y;y=temp; cout<<"x="< } voidmain(){ inta=10,b=20; swap(a,b); cout<<"a="< } 方法二: 引用作为函数形参(地址传递) voidswap(int&x,int&y){ inttemp; temp=x;x=y;y=temp; cout<<"x="< } voidmain(){ inta=10,b=20; cout<<"a="< swap(a,b);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 练习 答案