C++程序设计上练习-答案_第1页
C++程序设计上练习-答案_第2页
C++程序设计上练习-答案_第3页
C++程序设计上练习-答案_第4页
C++程序设计上练习-答案_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

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

文档简介

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. 7.0 2.0 和 7.0 2B. 5 2.0 和 5 2C. 7.0 2 和 72D. 82和 6.0 2.0 答案: A5. 在 C+中不返回任何类型的函数应该说明为()A. intB. charC. voidD. double 答案: C6. 语言中函数的返回值类型的是 ()决定 C+A. 语句中的表达式类型 return B. 调用该函数 时系统随机产生的类型 C. 调用该函数时的主调用函数类型 D. 在定义该函数时所指定的数据 类型 D 答案: 7. 中,函数原型不能标识()在 C+A. 函数的返回类型 B. 函数参数的个数C.

3、 函数参数类型 D. 函数的功能 答案:D8. *p 的值是 ()在 int a=3,int *p=&a;中,A. 的 地址值变量 aB. 无意义 C. 的地址值变量 pD. 3 D 答案:9. ()一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 A. 内联函数 B. 重载 函数 C. 递归函数 D. 嵌套函数 答案: A10. 定义函数情况是()适宜采用 inline A. 函数 体含有循环语句B. 函数体含有递归语句C. 函数代码少、频繁调用D. 函数代码多、不常调用 答案: C11. 在函数定义中的形参属于()A. 全局变量B. 局部变量C. 静态变量D. 寄存器变量 答

4、案: B12. C+语言中所有在函数中定义的变量,连同形式参数,都属于()A. 全局变量B. 局部变量C. 静态变量D. 函数 答案: B13. 下列有关重载函数的说法中正确的是()A. 重载函数必须具有不同的返回值类型B. 重载函数参数个数必须相同C. 重载函数必须有不同的形参列表D. 重载函数名可以不同 答案: C14. 使用地址作为实参传给形参,下列说法正确的是()A. 实参是形参的备份B. 实参与形参无联系C. 形参是实参的备份D. 实参与形参是同一对象 答案: D15. 在 C+中,使用流进行输入输出,其中用于屏幕输入()A. cinB. cerrC. coutD. clog 答案:

5、 A16. 若有以下定义,则说法错误的是()int a=100,*p=&a;A. 声明变量 p,其中 *表示 p 是一个指针变量B. 变量 p 经初始化,获得变量 a 的地址C. 变量 p 只可以指向一个整型变量D. 变量 p 的值为 100答案: D17. C+对 C 语言做了很多改进,即从面向过程变成为面向对象的主要原因是()A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念 答案: D18 3.可替换 #define PI 3.1415926的语句是( )A. float PI 3.1415926;B. con

6、st float PI=3.1415926;C. const PI(3.1415926);D. const 3.1415926 ;答案: B19如果一个函数没有返回值,则应选择下列说明符中的()。A. double B. void C. int D. char答案: B208. 下列哪种默认参数的声明是不正确的(C)A. int max(int aB. int max(int aC. int max(int a=0D. int max(int a,int b ,int c ,int d=0) ;,int b ,int c=0 ,int d=0) ;,int b ,int c=0 ,int d=

7、0) ; , int b=0 , int c=0 , int d=0) ;21包含哪种语句的函数不能声明为内联函数(A)D. 变量声明A. 循环B. 变量自增自减 C.if.else22已知: const char *ptr ;那么 ptr 应该是( A )。A、 指向字符串常量的指针B、指向字符串的常量指针C、指向字符的常量的指针D、指向字符常量的指针2311、在 C+中,关于下列设置参数默认值的描述中, 正确的是( C )A. 不允许设置参数的默认值B. 设置参数默认值只能在定义函数时设置C. 设置参数默认值时 , 应该是先设置右边的再设置左边的D. 设置参数默认值时 , 应该全部参数都设

8、置二、填空题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<<endl;答案: 54. 由 const 修饰的对象称为 _ 。 答案:常对象5. 表达式 cout<<end1 还可表示为 _ 。答案: n'6. 在 C+中,访问一个指针所

9、指向的对象的成员所用的指向运算符是 答案: ->7. C+程序的源文件扩展名为 _。答案: cpp_的头文件_方式。_语句。8. 在 #include 命令中所包含的头文件,可以是系统定义的头文件,也可以是 答案:自定义9. C+语言中如果调用函数时,需要改变实参或者返回多个值,应该采取 答案:传地址或引用10. 若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的 答案:声明11. 在 C+中有两种参数传递方式:传值和_。答案:传引用或地址12. 在函数前面用 _ 保留字修饰时,则表示该函数表为内联函数。 答案: inline13. C+是通过引用运算符 _来定义一个引用的。

10、 答案: &14. 局部对象和全局对象中,在同一程序中 _ 生存期最长。答案:全局对象15布尔类型标识符是()答案: bool16若要使用 C+标准类库,需要指定相应的命名空间,所用的语句是 答案: using namespace std;17使用 new 为 int 数组动态分配 10 个存储空间是 _。 答案: new int 10 ;18在已经定义了整型指针 ip 后,为了得到一个包括 10 个整数的数组并由 ip 所指向,应使用 语句 _。答案: int *ip=new int 10 ;8. C+中语句 const char * const p=“ hello ”;所定义的指针

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

12、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=<<a<<,b

13、=<<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>c&&a+c>b&&c+

14、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)*(l-c);2. 下面是一个输入半径,输出其面积和周长的C+程序,在下划线处填上正确的语句。#includ

15、e <iostream> void main()double rad;cout<<ad=;cin>>rad;double l=2.0*pi*rad;double s=pi*rad*rad;潣瑵 ?n The long is : <<l<<endl;cout<<The area is : <<s<<endl;答案: using namespace std,#define pi 3.14159解析进行输入或输出要引入 iostream, 所以 using namespace std; 从标点看没有分号,

16、所 以使用宏定义, #define pi 3.14159 。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=5S=9#include <iostream.h>

17、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,double c)if()return -1;else double ar,l;

18、 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; 潣瑵?输入三角形三边: cin>>i>>j>>k;double s=area(i,j,k);if(s<0)潣瑵 ?不是三角形 <<endl; else 答案: a+b>c|a+c>b|b+c>a , cout<<s<<endl; 解析三角形组成规则:两边之和大于第三边。 s<0 不是三角形,是则输出 s6参数顺序不同的函数重载 ,

19、 写出运行结果。#include<iostream>using namespace std;void info(char *name,int age)笠?潣瑵 ?名称: ?渼浡 ?尼,数量: <<age<<endl;void info(int age,char *name)? 挠畯 ? 尼名称: ? 渼浡 ?尼,数量: <<age<<endl;int main()? 椠普 ? 书包 ,16);椠普 ?尬笔记本 );return 0;7比较内部 auto 变量和内部 static 变量的不同 , 写出运行结果。 #include<

20、iostream> using namespace std;void test () int x=10; / 动态变量 xstatic int y=10; / 静态变量 y cout<<auto_x=<< x <<,static_y= <<y;void main( ) int i;for(i=0;i<3;i+) test ( );五、编程题1. 求分段函数x2y=f(x) 的值, 1f(x) 的表达式如下:(x< 1)y= x2x21x1)(x>1). #include <iostream>using name

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

22、,y; /运算数 char oper; / 运算符cin>>x>>oper>>y; switch(oper) 慣敳 ?潣瑵 ?硜礫尽 ?攼摮 ?戠敲歡 慣敳 ?潣瑵 ?硜礭尽 ?攼摮 ?戠敲歡 慣敳 ?潣瑵 ?硜礪尽 ?攼摮 ? 戠敲歡case '/': if(y=0)cout<<divisor is zero!n;break;潣瑵 ?硜?砼?攼摮 ?戠敲歡default: cout<<operator has no effect!n;3. 求 100 以内的奇数之和#include <iostream>u

23、sing namespace std;void main()int i=1,sum=0;while(i<=100)sum+=i;i+=2;cout<<sum=<<sum<<endl;#include <iostream>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;vo

24、id main()int i,sum;sum=0;for(i=1;i<=100;i+=2)sum+=i;cout<<sum=<<sum<<endl;4. 输入一个整数,求出它的所有因子。 #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+

25、) if(n%k=0) cout<<k<< ; cout<<endl;5. 定义函数 up(ch) ,如字符变量 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

26、>>c;cout<< up(c)<<, ;cout<< endl;6. 编写主程序输入实数 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<<cin&g

27、t;>r;cout<<cin>>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;cout<<pleas

28、e 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=x;

29、 x=y; y=temp; 潣瑵 ?硜尽 ?尼?礼 ?湥汤 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;?潣瑵 ?硜尽 ?尼?礼 ?湥汤 void main() int a=10,b=20; cout<<a=<<a<<, b=<<b&

30、lt;<endl;swap( a,b); cout<<a=<<a<<, b=<<b<<endl;方法三 : 指针 作为函数形参 ( 地址传递 )#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= <&l

31、t;a <<,b= <<b;9输入 a,b,c 三个数,调用函数,得到其中 最大数 方法一 : 简单变量作为函数形参 (值传递 ) #include<iostream>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

32、 enter a,b,c:<<endl; cin>>a>>b>>c;sort(a,b,c) ;cout<<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>&

33、gt;b>>c;cout<<max(a,b,c)=<< max(&a,&b,&c)<<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 的值并

34、输出结果。#include < iostream.h >#include < math.h >void equation_1 (int a, int 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); 潣瑵 ?两个不相等的实根 << endl; 潣瑵 ?硜? 尠?砠?湥汤void equation_2 (int a, int b, int c)double x1, x2, temp; temp = b*b - 4 * a * c;x1 = (-b + sqrt(temp) ) / (2 * a * 1.0);x2 = x1;潣瑵 ?两个相等的实根 << endl; 潣瑵 ?硜? 尠?砠?湥汤void equation_3 (int a, int b, int c)潣瑵?方程无解 / 两个虚根 << endl;void main()int a, b, c;double temp;潣瑵 ? 输入 a,b,c 的值 <&l

温馨提示

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

最新文档

评论

0/150

提交评论