C++程序设计上练习答案_第1页
C++程序设计上练习答案_第2页
C++程序设计上练习答案_第3页
C++程序设计上练习答案_第4页
C++程序设计上练习答案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、单项选择题1.编写C++程序一般需经过的几个步骤依次是()A.编辑、调试、编译、连接B.编辑、编译、连接、运行C.编译、调试、编辑、连接D.编译、编辑、连接、运行答案:B2.设有定义inti;doublej=5;,则10+i+j值的数据类型是()intdoublefloatD.不确定答案:B.有关C++编译指令,以下叙述正确的是()C++每行可以写多条编译指令include指令中的文件名可含有路径信息C++的编译指令可以以#或〃开始C++中不管#if后的常量表达式是否为真,该部分都需要编译答案:B.在下列成对的表达式中,运算结果类型相同的一对是()7.0/2.0和7.0/25/2.0和5/27.0/2和7/28/2和6.0/2.0答案:A.在C++中不返回任何类型的函数应该说明为()intcharvoiddouble答案:C.决定C++语言中函数的返回值类型的是。A.return语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型答案:D.在C++中,函数原型不能标识()A.函数的返回类型.函数参数的个数C.函数参数类型D.函数的功能答案:D8.在inta=3,int*p=&a;中,*p的值是()A.变量a的地址值B.无意义C.变量p的地址值D.3答案:D.一个函数功能不太复杂,但要求被频繁调用,则应把它定义为。A.内联函数B.重载函数C.递归函数D.嵌套函数答案:A.适宜采用inline定义函数情况是。A.函数体含有循环语句B.函数体含有递归语句C.函数代码少、频繁调用D.函数代码多、不常调用答案:C.在函数定义中的形参属于。A.全局变量B.局部变量C.静态变量D.寄存器变量答案:B.C++语言中所有在函数中定义的变量,连同形式参数,都属于()A.全局变量B.局部变量C.静态变量D.函数答案:B.下列有关重载函数的说法中正确的是。A.重载函数必须具有不同的返回值类型B.重载函数参数个数必须相同C.重载函数必须有不同的形参列表D.重载函数名可以不同答案:C.使用地址作为实参传给形参,下列说法正确的是()A.实参是形参的备份B.实参与形参无联系C.形参是实参的备份D.实参与形参是同一对象答案:D.在C++中,使用流进行输入输出,其中用于屏幕输入。cincerrcoutclog答案:A.若有以下定义,则说法错误的是()inta=100,*p=&a;A.声明变量p,其中*表示p是一个指针变量B.变量p经初始化,获得变量a的地址C.变量p只可以指向一个整型变量D.变量p的值为100答案:DC++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是()A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念答案:D3.可替换#(16£inePI3.1415926的语句是()floatPI3.1415926;constfloatPI=3.1415926;constPI(3.1415926);const3.1415926;答案:B.如果一个函数没有返回值,则应选择下列说明符中的()。A.doubleB.voidC.intD.char答案:B.8.下列哪种默认参数的声明是不正确的(C)int max(int a, int b,intc,int d=0);int max(int a, int b,intc=0,intd=0);int max(int a=0,intb,intc=0, intd=0);int max(int a, int b=0,intc=0, intd=0);.包含哪种语句的函数不能声明为内联函数(A)A.循环 B.变量自增自减 C.if...else…D.变量声明.已知:constchar*ptr;那么ptr应该是(A)。A、指向字符串常量的指针B、指向字符串的常量指针C、指向字符的常量的指针D、指向字符常量的指针.11、在C++中,关于下列设置参数默认值的描述中,正确的是(C).A.不允许设置参数的默认值B.设置参数默认值只能在定义函数时设置C.设置参数默认值时,应该是先设置右边的再设置左边的D.设置参数默认值时,应该全部参数都设置二、填空题.开发一个C++语言程序的步骤通常包括编辑、、连接、运行和调试。答案:编译.假设inta=l,b=2;则表达式(++a/b)*b—的值为—。答案:2.〒面程序的输出结果为^include<iostream.h>voidmain(){intnum=2,i=6;do{i--;num++;}while(--i);cout<<num<<endl;}答案:5.由const修饰的对象称为—。答案:常对象.表达式cout<<end1还可表示为。答案:‘\n’.在C++中,访问一个指针所指向的对象的成员所用的指向运算符是___。答案:->.C++程序的源文件扩展名为___。答案:cpp.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是—的头文件。答案:自定义.C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取—方式。答案:传地址或引用.若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的—语句。答案:声明.在C++中有两种参数传递方式:传值和。答案:传引用或地址.在函数前面用—保留字修饰时,则表示该函数表为内联函数。答案:inline.C++是通过引用运算符—来定义一个引用的。答案:&.局部对象和全局对象中,在同一程序中—生存期最长。答案:全局对象.布尔类型标识符是()答案:bool.若要使用C++标准类库,需要指定相应的命名空间,所用的语句是 。答案:usingnamespacestd;.使用new为如1数组动态分配10个存储空间是一。答案:newint[10];.在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语句。答案:int*ip=newint[10];.8.C++中语句constchar*constp="hello";所定义的指针p和它所指的内容都不能被___。答案:修改.如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语句是___。答案:constdoublePI案.14159);或者constdoublePI=3.14159;.面向对象程序设计的3个主要性质是:、继承、。答案:封装,多态.使用cin和cout进行输入输出操作的程序必须包含头文件—答案:iostream.h三、改错题1.#include<iostream.h>voidmain(){inti,*p;i=10;*p=i;cout<<*p<<endl;)答案:*p=i;指针即地址没有被赋值。[修改]P=&i;2.以下程序实现交换a,b变量的值,请用下横线标出错误所在行并给出修改意见^include<iostream.h>voidswap(int&a,int&b){a=a+b;b=a-b;a=a-b;)voidmain(){inta=19,b=15;cout<<"a="<<a<<",b="«b«endl;swap(&a,&b);cout<<"a="<<a<<",b="«b«endl;)答案:swap(&a,&b);函数的形参是变量的引用,调用时的实参应该是地址。[修改1swap(a,b);四、完成程序题(本大题共5小题,每小题4分,共20分)1.下面是一个三角形三边,输出其面积C++程序,在下划线处填上正确的语句。^include<iostream.h>#include<math.h>voidarea(){doublea,b,c;cout<<"Inputabc:";if(a+b>c&&a+c>b&&c+b>a){doublel=(a+b+c)/2;cout«”Theareais:zr«s«endl;)elsecout<<"Error”<<endl;)voidmain(){area();}答案:cin>>a>>b>>c;,doubles=sqrt(l*(l-a)*(l-b)*(l-c));[解析]输入三个边的长度,由公式得出三角形的面积doubles=sqrt(l*(l-a)*(l-b)*(l-c));.下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。#include<iostream> ; ;voidmain(){doublerad;cout<<"rad=";cin>>rad;doublel=2.0*pi*rad;doubles=pi*rad*rad;cout<<"\nThelongis:"<<l<<endl;cout<<"Theareais:"<<s<<endl;}答案:usingnamespacestd,#definepi3.14159[解析]进行输入或输出要引入历5食621^所以usingnamespacestd;从标点看没有分号,所以使用宏定义,#definepi3.14159。.程序实现大写字母转换成小写字母。#include<iostream.h>voidmain(){chara; ;cin>>a;if()a=a+i;cout<<a<<endl;)答案:inti=32;,a>=A&&a<=Z[解析]大写字母变小写字母相差32,需要对i声明并初始化。大写字母变小写字母。要判断字符是大写字母。.在下面程序横线处填上适当内容,使程序执行结果为:S=2S=5S=9#include<iostream.h>voidsum(inti){staticints; ;cout<<"s="<<s<<endl;)voidmain(void){inti;for(i=0;)sum(i);)答案:s=s+i+2;,i<3,i++.下面程序段用来求三角形的面积,首先判断三边不符合组成三角形时,返回-1,符合时输出三角形面积。#include<iostream.h>#include<math.h>doublearea(doublea,doubleb,doublec){if(—)return-1;elsedoublear,1;l=(a+b+c)/2;ar=sqrt(1*(1-a)*(1-b)*(1-c));returnar;voidmain(){doublei=0,j=0,k=0;cout<<"输入三角形三边:”;cin»i»j»k;doubles=area(i,j,k);if(s<0)cout<<”不是三角形"<<endl;else答案:a+b>c||a+c>b||b+c>a,cout«s«endl;[解析]三角形组成规则:两边之和大于第三边。s<0不是三角形,是则输出s.参数顺序不同的函数重载,写出运行结果。#include<iostream>usingnamespacestd;voidinfo(char*name,intage){cout<X"名称:"〈〈name。",数量:"<<age〈〈endl;)voidinfo(intage,char*name){cout«"名称:”《name«”,数量:”«age«endl;intmain(){info("书包",16);info(18,〃笔记本〃);return0;).比较内部auto变量和内部static变量的不同,写出运行结果。#include<iostream>usingnamespacestd;voidtest(){intx=10; //动态变量xstaticinty=10;//静态变量ycout«"auto_x="<<x<<”,static_y="«y;)voidmain(){inti;for(i=0;i<3;i++)test();五、编程题1.求分段函数y=f(x)的值,f(x)的表达式如下:x2-1 (x<-1)y=x2 (-IWxWl)x2+1 (x>l)・#include<iostream>usingnamespacestd;voidmain(){floatx,y;cout«"Enterx:**;cin»x;if(x<-l)y=x*x-l;elseif(x>=-l&&x<=l)y=x*x;elsey=x*x+l;cout«"f(x)="«y«endl;}.用switch语句实现计算器的简单功能。#include<iostream>usingnamespacestd;voidmain(){floatx,y; 〃运算数charoper; 〃运算符break;break;break;cout«MEnterx,oper,y:cin»x»oper»y;switch(oper){casecout«,,x+y=,,«x+y«endl;case*-*:cout«,,break;break;break;case***:cout«nx*y=n«x*y«endl;case7,:if(y==O){cout«**divisoriszero!\nn;break;}cout«"x/y=n«x/y«endl;break;default:cout«"operatorhasnoeffect!\n";}}.求100以内的奇数之和#include<iostream>usingnamespacestd;voidmain(){inti=l,sum=0;whUe(i<=100){sum+=i;i+=2;}cout«,,sum=,,«suin«endl;}#include<iostream>usingnamespacestd;voidmain()inti=l,sum=O;do{sum+=i;i+=2;}while(i<=100);cout«"sum="«sum«endl;}#include<iostream>usingnamespacestd;voidmain(){inti,sum;sum=0;for(i=l;i<=100;i+=2)sum+=i;cout«,,sum=,,«suin«endl;}.输入一个整数,求出它的所有因子。#include<iostream>usingnamespacestd;voidmainQintn,k;cout«"Enterapositiveinteger:cin»n;cout«"Numbern«n«nFactorsfor(k=l;k<=n;k++)if(n%k==0)cout«k«"cout«endl;}.定义函数up(di),如字符变量ch是小写字母就转换成大写字母并通过up返回#include<iostream>usingnamespacestd;charup(charc){if(c>=97&&c<=123)return(c-32);elsereturnc;}voidmain()inti;chare;for(i=0;i<5;i++),否则字符ch不改变。{cin»c;cout«up(c)«n,)cout«endl;}.编写主程序输入实数r和整数n,用函数求r的ii次塞。#include<iostream.h>#include<math.h>doublepower(doublea,intb){inti;doubleresult=1.0;for(i=0;i<b;i++)result=result*a;returnresult;}voidmain(){doubler;intn;cout«"r=cin»r;cout«"n=cin»n;cout«rvv"的''vvnvv"次塞是:"«power(r,n)«endl;}.编写程序计算两个整数绝对值阶乘之差。#include<iostream>#include<math.h>usingnamespacestd;intfac(intn) 〃计算一个整数绝对值的阶乘{intif=l;n=abs(n);for(i=l;i<=n;i++)f=f*i;retum(f);}voidmain(){intx,y,cl,c2;cout«"pleaseenterx,y:cin»x»y;cl=fac(x);〃调用函数fac,求x绝对值的阶乘c2=fac(y);〃调用函数fac,求y绝对值的阶乘cout«“theoutcomeis”依sdcendl;}.用函数实现交换两个数a和b的值。方法一:简单变量作为函数形参(值传递)#include<iostream>usingnamespacestd;voidswap(intx,inty){inttemp;temp=x;x=y;y=temp;cout«,,x=n«x«n,y=n«y«endl;}voidmain(){inta=10,b=20;swap(a,b);cout«,,a="«a«n,b="«b«endl;}方法二:引用作为函数形参(地址传递)voidswap(int&x,int&y){inttemp;temp=x;x=y;y=temp;cout«nx=,,«x«",y="«y«endl;}voidmain(){inta=10,b=20;cout«,,a=,,«a«,,Jb="«b«endl;swap(a,b);cout«,,a=,,«a«*,Jb="«b«endl;}方法三:指针作为函数形参(地址传递)#include<iostream>usingnamespacestd;swap(int*p2){inttemp;temp=*pl;*pl=*p2;*p2=temp;}intmain(){inta=10,b=20;int*pa=&a,*pb=;swap(pa,&b);cout«,,a="«a«",b="«b;}9.输入a,b,c三个数,调用函数,得到其中最大数。方法一:简单变量作为函数形参(值传递)#include<iostream>usingnamespacestd;voidsort(int&a,int&b,int&c){intm;if(b>a){m=a;a=b;b=m;}if(c>a){m=a;a=c;c=m;}if(c>b){m=c;c=b;b=m;}}intmain(){inta,b,c,ma;cout«**Pleaseentera,b,c:"«endl;cin»a»b»c;sort(a,b,c);cout«a«w,w«b«w,w«c«endl;return0;}方法二:指针作为函数形参(地址传递)#include<iostream>usingnamespacestd;intmax(int*x,int*y,int*z); 〃函数声明intmain(){inta,b,c;cin»a»b»c;隔出3个数中的最大者cout«nmax(a,b,c)=隔出3个数中的最大者return0;}intmax(int*x,int*y,int*z) 〃函数定义{int*m=x;if(*y>*m)*m=*y;if(*z>*m)*m=*z;retum(*m);10.编写一个求方程ax2+bx+c=0的根的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。要求从主函数输入a,b,c的值并输出结果。#include<iostream.h>#include<math.h>voidequation_1(inta,intb,intc){doublex1,x2,temp;temp=b*b-4*a*c;x1=(-b+sqrt(temp))/(2*a*1.0);x2=(-b-sqrt(temp))/(2*a*1.0);cout<<“两个不相等的实根”<<endl;cout<<"x1="<<x1<<",x2="<<x2<<endl;}voidequation_2(inta,intb,intc){doublex1,x2,temp;temp=b*b-4*a*c;x1=(-b+sqrt(temp))/(2*a*1.0);x2=x1;cout<<“两个相等的实根”<<endl;cout<<"x1="<<x1<<",x2="<<x2<<endl;}voidequation_3(inta,intb,intc){cout<<“方程无解/两个虚根”<<endl;}voidmain(){inta,b,c;doubletemp;cou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论