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

下载本文档

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

文档简介

1、一、 单项选择题1. 编写C+程序一般需经过的几个步骤依次是A. 编辑、调试、编译、连接B. 编辑、编译、连接、运行C. 编译、调试、编辑、连接D. 编译、编辑、连接、运行答案:B2. 设有定义int i;double j5;,则10+i+j值的数据类型是A. intB. doubleC. floatD. 不确定答案:B3. 有关C+编译指令,以下表达正确的选项是A. C+每行可以写多条编译指令B. #include指令中的文件名可含有路径信息C. C+的编译指令可以以#或/开始D. C+中不管if后的常量表达式是否为真,该部分都需要编译答案:B4. 在以下成对的表达式中,运算结果类型相同的一

2、对是A. 和2B. 5和52C. 2和72D. 82和答案:A5. 在C+中不返回任何类型的函数应该说明为A. intB. charC. voidD. double答案:C6. 决定C+语言中函数的返回值类型的是A. return语句中的表达式类型B. 调用该函数时系统随机产生的类型C. 调用该函数时的主调用函数类型D. 在定义该函数时所指定的数据类型答案:D7. 在C+中,函数原型不能标识A. 函数的返回类型B. 函数参数的个数C. 函数参数类型D. 函数的功能答案:D8. 在int a=3,int *p=&a;中,*p的值是A. 变量a的地址值B. 无意义C. 变量p的地址值D.

3、3答案:D9. 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 A. 内联函数B. 重载函数C. 递归函数D. 嵌套函数答案:A10. 适宜采用inline定义函数情况是A. 函数体含有循环语句B. 函数体含有递归语句C. 函数代码少、频繁调用D. 函数代码多、不常调用答案:C11. 在函数定义中的形参属于A. 全局变量B. 局部变量C. 静态变量D. 寄存器变量答案:B12. C+语言中所有在函数中定义的变量,连同形式参数,都属于A. 全局变量B. 局部变量C. 静态变量D. 函数答案:B13. 以下有关重载函数的说法中正确的选项是A. 重载函数必须具有不同的返回值类型B. 重载函数

4、参数个数必须相同C. 重载函数必须有不同的形参列表D. 重载函数名可以不同答案:C14. 使用地址作为实参传给形参,以下说法正确的选项是A. 实参是形参的备份B. 实参与形参无联系C. 形参是实参的备份D. 实参与形参是同一对象答案:D15. 在C+中,使用流进行输入输出,其中用于屏幕输入A. cinB. cerrC. coutD. clog答案:A16. 假设有以下定义,则说法错误的选项是int a=100,*p=&a;A. 声明变量p,其中*表示p是一个指针变量B. 变量p经初始化,获得变量a的地址C. 变量p只可以指向一个整型变量D. 变量p的值为100答案:D17. C+对C语

5、言做了很多改良,即从面向过程变成为面向对象的主要原因是A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念答案:D183.可替换#define PI 3.1415926的语句是 A. float PI 3.1415926; B. const float PI=3.1415926;C. const PI(3.1415926);D. const 3.1415926;答案:B19如果一个函数没有返回值,则应选择以下说明符中的 。A. double B. void C. int D. char答案:B208.以下哪种默认参数的声明是不

6、正确的CA. int max(int a,int b,int c,int d=0);B. int max(int a,int b,int c=0,int d=0);C. int max(int a=0,int b,int c=0,int d=0);D. int max(int a,int b=0,int c=0,int d=0);21包含哪种语句的函数不能声明为内联函数A C.if.else 22已知:const char *ptr ; 那么ptr 应该是 A 。A、 指向字符串常量的指针B、 指向字符串的常量指针C、 指向字符的常量的指针D、 指向字符常量的指针2311、在C+中,关于以下设

7、置参数默认值的描述中,正确的选项是 C . A. 不允许设置参数的默认值 B.设置参数默认值只能在定义函数时设置 C.设置参数默认值时,应该是先设置右边的再设置左边的 D.设置参数默认值时,应该全部参数都设置 二、 填空题1. 开发一个C+语言程序的步骤通常包括编辑、_、连接、运行和调试。答案:编译2. 假设int a=1,b=2;则表达式(+a/b)*b-的值为_。答案:23. 下面程序的输出结果为_。#include <iostream.h>void main()int num=2,i=6;doi-;num+;while(-i);cout<<num<<e

8、ndl;答案:54. 由const修饰的对象称为_。答案:常对象5. 表达式cout<<end1 还可表示为_。答案:n6. 在C+中,访问一个指针所指向的对象的成员所用的指向运算符是_。答案:->7. C+程序的源文件扩展名为_。答案:cpp8. 在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是_的头文件。答案:自定义9. C+语言中如果调用函数时,需要改变实参或者返回多个值,应该采取_方式。答案:传地址或引用10. 假设函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的_语句。答案:声明11. 在C+中有两种参数传递方式:传值和_。答案:

9、传引用或地址12. 在函数前面用_保留字修饰时,则表示该函数表为内联函数。答案:inline13. C+是通过引用运算符_来定义一个引用的。答案:&14. 局部对象和全局对象中,在同一程序中_生存期最长。答案:全局对象15布尔类型标识符是答案:bool16假设要使用C+标准类库,需要指定相应的命名空间,所用的语句是。答案:using namespace std;17使用new为int数组动态分配10个存储空间是_。答案:new int10;18在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语句_。答案:int *ip=new int10;198. C

10、+中语句const char * const p=“hello”;所定义的指针p和它所指的内容都不能被_。答案:修改20 如果要把PI声明为值为类型为双精度实数的符号常量,该声明语句是_。答案:const double PI(3.14159);或者const double PI3.14159;21面向对象程序设计的3个主要性质是:_、继承、_。答案:封装,多态22使用cin和cout进行输入输出操作的程序必须包含头文件_答案:三、改错题1. #include <iostream.h>void main()int i,*p;i=10;*p=i;cout<<*p<&l

11、t;endl;答案:*p=i;指针即地址没有被赋值。修改p=&i;2. 以下程序实现交换a,b变量的值,请用下横线标出错误所在行并给出修改意见。#include <iostream.h>void swap(int &a,int &b)a=a+b;b=a-b;a=a-b;void main()int a=19,b=15;cout<<"a="<<a<<",b="<<b<<endl;swap(&a,&b);cout<<"a=&q

12、uot;<<a<<",b="<<b<<endl;答案:swap(&a,&b);函数的形参是变量的引用,调用时的实参应该是地址。修改swap(a, b);四、完成程序题(本大题共5小题,每题4分,共20分)1. 下面是一个三角形三边,输出其面积C+程序,在下划线处填上正确的语句。#include <iostream.h>#include <math.h>void area()double a,b,c;cout<<"Input a b c:"_if(a+b&g

13、t;c&&a+c>b&&c+b>a)double l=(a+b+c)/2;_cout<<"The area is:"<<s<<endl;elsecout<<"Error"<<endl;void main()area();答案:cin>>a>>b>>c;,double s=sqrt(l*(l-a)*(l-b)*(l-c);解析输入三个边的长度,由公式得出三角形的面积double s=sqrt(l*(l-a)*(l-b)

14、*(l-c);2. 下面是一个输入半径,输出其面积和周长的C+程序,在下划线处填上正确的语句。#include <iostream>_;_;void main()double rad;cout<<"rad="cin>>rad;double l=2.0*pi*rad;double s=pi*rad*rad;cout<<"n The long is:"<<l<<endl;cout<<"The area is:"<<s<<endl;答

15、案:解析进行输入或输出要引入iostream, 所以using namespace std;从标点看没有分号,所以使用宏定义,。3. 程序实现大写字母转换成小写字母。#include <iostream.h>void main()char a;_;cin>>a;if(_)a=a+i;cout<<a<<endl;答案:int i=32;,a>=A && a<=Z解析大写字母变小写字母相差32,需要对i声明并初始化。大写字母变小写字母。要判断字符是大写字母。4. 在下面程序横线处填上适当内容,使程序执行结果为:S=2S=5

16、S=9#include <iostream.h>void sum(int i)static int s;_;cout<<"s="<<s<<endl;void main (void)int i;for (i=0;_)sum(i);答案:s=s+i+2;,i<3,i+5. 下面程序段用来求三角形的面积,首先判断三边不符合组成三角形时,返回-1,符合时输出三角形面积。#include <iostream.h>#include <math.h>double area(double a,double b,d

17、ouble c)if(_)return -1;elsedouble ar,l;l=(a+b+c)/2;ar=sqrt(l*(l-a)*(l-b)*(l-c);return ar;void main()double i=0,j=0,k=0;cout<<"输入三角形三边:"cin>>i>>j>>k;double s=area(i,j,k);if(s<0)cout<<"不是三角形"<<endl;else_答案:a+b>c|a+c>b|b+c>a,cout<&l

18、t;s<<endl;解析三角形组成规则:两边之和大于第三边。s<0不是三角形,是则输出s。6参数顺序不同的函数重载,写出运行结果。#include<iostream>using namespace std; void info(char *name,int age) cout<<"名称:"<<name<<",数量:"<<age<<endl; void info(int age,char *name) cout<<"名称:"<&l

19、t;name<<",数量:"<<age<<endl; int main() info("书包",16); info(18,"笔记本"); return 0; 7比较内部auto变量和内部static变量的不同,写出运行结果。#include<iostream>using namespace std;void test () int x=10; / 动态变量x static int y=10; / 静态变量y cout<<"auto_x="<<

20、x <<",static_y=" <<y; void main( ) int i; for(i=0;i<3;i+) test ( ); 五、编程题1.求分段函数y=f(x)的值,f(x)的表达式如下: x2 1 (x<1) y= x2 (1x1) x2 1 (x>1) . #include <iostream>using namespace std;void main()float x,y;cout<<"Enter x: "cin>>x;if(x<-1)y=x*x-1;e

21、lse if(x>=-1&&x<=1)y=x*x;else y=x*x+1;cout<<"f(x)="<<y<<endl;2. 用switch语句实现计算器的简单功能。#include <iostream>using namespace std;void main()float x,y; /运算数char oper; /运算符cout<<"Enter x,oper,y: "cin>>x>>oper>>y;switch(oper)ca

22、se '+': cout<<"x+y="<<x+y<<endl; break;case '-': cout<<"x-y="<<x-y<<endl; break;case '*': cout<<"x*y="<<x*y<<endl; break;case '/': if(y=0) cout<<"divisor is zero!n" bre

23、ak; cout<<"x/y="<<x/y<<endl; break;default: cout<<"operator has no effect!n"3. 求100以内的奇数之和#include <iostream>using namespace std;void main()int i=1,sum=0;while(i<=100)sum+=i;i+=2;cout<<"sum="<<sum<<endl;#include <ios

24、tream>using namespace std;void main()int i=1,sum=0;dosum+=i;i+=2;while(i<=100);cout<<"sum="<<sum<<endl;#include <iostream>using namespace std;void main()int i,sum;sum=0;for(i=1;i<=100;i+=2)sum+=i;cout<<"sum="<<sum<<endl;4. 输入一个整数

25、,求出它的所有因子。 #include <iostream>using namespace std;void main()int n,k;cout<<"Enter a positive integer: "cin>>n;cout<<"Number "<<n<<" Factors "for(k=1;k<=n;k+) if(n%k=0)cout<<k<<" "cout<<endl;5. 定义函数up(ch)

26、,如字符变量ch是小写字母就转换成大写字母并通过up返回,否则字符ch不改变。#include < iostream >using namespace std;char up (char c)if(c >= 97 && c <= 123)return (c - 32) ;elsereturn c;void main()int i;char c;for(i = 0 ; i < 5 ; i+) cin>>c;cout<< up(c)<<", " cout<< endl;6. 编写主程序

27、输入实数r和整数n, 用函数求r的n次幂。#include < iostream.h >#include < math.h >double power(double a, int b)int i;double result = 1.0;for(i=0;i< b;i+)result = result * a;return result;void main()double r;int n;cout<<"r = "cin>>r;cout<<"n = " cin>>n;cout<

28、< r<<"的"<< n<<"次幂是:"<< power(r,n)<< endl;7编写程序计算两个整数绝对值阶乘之差。#include <iostream>#include <math.h>using namespace std;int fac(int n) /计算一个整数绝对值的阶乘 int i,f=1; n=abs(n); for(i=1;i<=n;i+) f=f*i; return(f); void main( ) int x,y,c1,c2; cou

29、t<<"please enter x, y : " cin>>x>>y; c1=fac(x); /调用函数fac,求x绝对值的阶乘 c2=fac(y); /调用函数fac,求y绝对值的阶乘 cout<<“the outcome is ”<<c1-c2<<endl; 8. 用函数实现交换两个数a和b的值。方法一: 简单变量作为函数形参(值传递) #include <iostream>using namespace std;void swap(int x,int y) int temp;temp

30、=x; x=y; y=temp; cout<<"x="<<x<<", y="<<y<<endl;void main() int a=10,b=20;swap(a,b);cout<<"a="<<a<<", b="<<b<<endl; 方法二: 引用作为函数形参 (地址传递)void swap(int &x,int &y) int temp; temp=x; x=y; y=temp;

31、cout<<"x="<<x<<", y="<<y<<endl;void main() int a=10,b=20;cout<<"a="<<a<<", b="<<b<<endl;swap(a,b);cout<<"a="<<a<<", b="<<b<<endl;方法三: 指针作为函数形参 (地址传递)#

32、include <iostream>using namespace std;swap(int *p1,int *p2) int temp; temp=*p1; *p1=*p2; *p2=temp; int main( ) int a=10,b=20; int *pa=&a,*pb=; swap(pa, &b); cout<<"a=" <<a <<",b= "<<b;9输入a,b,c三个数,调用函数,得到其中最大数。方法一: 简单变量作为函数形参(值传递)#include<i

33、ostream> using namespace std; void sort(int &a, int &b, int &c) int m; 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; int main( ) int a, b, c, ma ; cout<<"Please enter a,b,c:"<<endl; cin>>a>>b>>c; sort(a,b,c); cout

34、<<a<<”,”<<b<<”,”<<c<<endl; return 0; 方法二: 指针作为函数形参 (地址传递)#include <iostream>using namespace std;int max(int *x,int *y,int *z); /函数声明 int main( ) int a,b,c;cin>>a>>b>>c; cout<<"max(a,b,c)="<< max(&a,&b,&c)&l

35、t;<endl; /输出3个数中的最大者 return 0;int max(int *x, int *y, int *z) /函数定义 int *m=x;if(*y>*m) *m=*y;if(*z>*m) *m=*z;return(*m);10. 编写一个求方程ax2 + bx + c = 0的根 的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。要求从主函数输入a,b,c的值并输出结果。#include < iostream.h >#include < math.h >void equation_1 (int a, int

36、b, int c)double x1, 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;void equation_2 (int a, int b,

37、 int c)double x1, 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;void equation_3 (int a, int b, int c)cout<<"方程无解/两个虚根"<< endl;void main()int a, b, c;double temp;cout<<"输入a,b,c的值"<< endl;cin>>a>>b>>c;cout<<"方程为:"<< a&

温馨提示

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

评论

0/150

提交评论