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

下载本文档

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

文档简介

1、精选试题C+程序设计练习答案rLr*版:单项选择题1. 编写C+程序一般需经过的几个步骤依次是()A. 编辑、调试、编译、连接B. 编辑、编译、连接、运行C. 编译、调试、编辑、连接D. 编译、编辑、连接、运行答案:B2. 设有定义inti;doublej=5;,则10+i+j值的数据类型是()A. intB. doubleC. floatD. 不确定答案:B3. 有关C+编译指令,以下叙述正确的是()A. C+每行可以写多条编译指令B. #include指令中的文件名可含有路径信息C. C+的编译指令可以以#AC+中不管#if后的常量表达式是否为真,该部分都需要编译 案:B4. 在下列成对的

2、表达式中,运算结果类型相同的一对是()A. 7.0 / 和 /28.5 / 和 5 / 2C. /2 和 7/2D. 8/2 和 /答案: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;中,*

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

4、3. 下列有关重载函数的说法中正确的是()A. 重载函数必须具有不同的返回值类型B. 重载函数参数个数必须相同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 经初

5、始化,获得变量a 的地址C. 变量p 只可以指向一个整型变量D. 变量p 的值为 100答案: D17. C+ 对 C 语言做了很多改进,即从面向过程变成为面向对象的主要原因是()A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念 答案:D18. 3河替换#define PI的语句是()A. float PI;B. con st floatPl=;C. con st PI;D. const ;答案:B19. 如果一个函数没有返回值,则应选择下列说明符中的()A. double B. void C. int D. char答案

6、:B20. 8.下列哪种默认参数的声明是不正确的(C)A. int max(int a, intb, int c, int d=0);B. int max(i nt a, int b, int c=0, int d=0);C. int max(i nt a=0, int b, int c=0, int d=0);D. int max(i nt a, int b=0, int c=0, int d=0);21. 包含哪种语句的函数不能声明为内联函数(A)A.循环 B.变量自增自减.else. D.变量声明22. 已知:const char *ptr; 那么 ptr 应该是(A )。A、指向字符串

7、常量的指针B、指向字符串的常量指针C、指向字符的常量的指针D、指向字符常量的指针23. 11、在C+中,关于下列设置参数默认值的描述中,正确的是(C ).A. 不允许设置参数的默认值B. 设置参数默认值只能在定义函数时设置C. 设置参数默认值时,应该是先设置右边的再设置左边的D. 设置参数默认值时,应该全部参数都设置、填空题答案:编译1. 开发一个C+语言程序的步骤通常包括编辑、_、连接、运行和调试。2. 假设int a=l,b=2;则表达式(+a/b)*b-的值为_。 答案:23. 下面程序的输岀结果为#in clude void mai n()(int n um=2,i=6;do(i-;n

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

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

10、括 10个整数的数组并由 ip 所指向,应使用 语句 _。答案: int *ip=new int 10;19. 8. C+ 语句 const char * const p= hello ; 所定义的指针 p 和它所指的内容都不能被 O答案:修改20. 如集要把 PI 声明为值为类型为双精度实数的符号常量,该声明语句是 答案: const double PI; 或者 const double PI=;21. 面向对象程序设计的 3 个主要性质是:、继承、。 答案:封装,多态22. 使用 cin 和 cout 进行输入输出操作的程序必须包含头文件 答案:三、改错题1. #include void

11、main() int i,*p; i=10; *p=i;cout? *p? endl;答案:*p=i;指针即地址没有被赋值。 修改p=&i ;2. 以下程序实现交换 a,b变量的值,请用下横线标岀错误所在行并给岀修改意见。#in elude void swap(i nt &a 9int &b)(a=a+b;b=a_b;a=a-b;void mai n()(int a=19,b=15;coutv v a= vvavv ,b= vvbv Ven dl;swap(&a,&b);coutv v ” a= vvavv ”,b= vvbv Ven dl;)答案:swap(&a,&b);函数的形参是变量的引

12、用,调用时的实参应该是地址。修改swap(a, b);四、完成程序题(本大题共5小题,每小题4分,共20分)1. 下面是一个三角形三边,输岀其面积C+程序,在下划线处填上正确的语句。#in elude #in elude void area()(double a,b,c;cout? nInput a b c: n;if(a+bc&a+cb&c+ba) (double l=(a+b+c)/2;cout? nThe area is: n?s?endl;elsecout? Error v Vendl;void mai n()(area();答案:ci n?a?b?c;, double s=sqrt(

13、l*(1-a)*(1-b)*(1-c);解析输入三个边的长度,由公式得岀三角形的面积double s=sqrt(l*(l-a)*(l-b)*(l-c);2. 下面是一个输入半径,输岀其面积和周长的C+程序,在下划线处填上正确的语句。#i nclude void mai n()(double rad;cout? nrad= n;cin? rad;double l=*pi*rad;double s=pi*rad*rad;cout? n n The long is : H?I? endl;cout?叮he area is : n?s?endl;)答案:using n amespace std,#de

14、fi ne pi解析进行输入或输岀要引入iostream,所以using namespace std;从标点看没有分号,所以使用宏定义,#define pi。3. 程序实现大写字母转换成小写字母。#in clude void mai n()(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 void sum(int i)static

15、int s;Hcout? s= H?s?endl;)void main (void)(inti;for (i=0;)sum(i);答案: s=s+i+2;, iv3,i+5. 下面程序段用来求三角形的面积,首先判断三边不符合组成三角形时,返回符合时 出三角形面积。#include #include double area(double a,double b,double 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=O,j=O,k

16、=O;cout?n输入三角形三边:n;cin? i? j? k;double s=area(i,j,k);if(sc|a+cb|b+ca, cout? s?endl;解析三角形组成规则:两边之和大于第三边。 svO 不是三角形,是则输出s。6. 参数顺序不同的函数重载,写出运行结果。#include using namespace std;void info(char *name,mt age)( cout? H 名称: H ?name? H ,数量: n?age?endl;void info(int age,char *name) coutvv 名”祢: n?name? M ,数量: H?a

17、ge?endl;int main()( info( H 书包 ” ,16); info(18, n 笔记本 ”); return 0;7. 比较内部 auto 变量和内部 static 变量的不同,写出运行结果 #include using namespace std;void test ()(xl)? #include using namespace std;void main()(float x,y; coutvvEnter x: cin? x;if(x=-l&x=l) y=x*x;else y=x*x+l;cout? f(x)= vvyv Vendl;2. 用 switch 语句实现计算

18、器的简单功能。#include using namespace std;void main()float x,y; 求 100 以内的奇数之和#include using namespace std;void main()int i=l,sum=0;while(i=100)sum+=i;i+=2;cout? sum= n? sum? endl;#include using namespace std;void main()int i=l,sum=0;dosum+=i;i+=2;while(i=100);cout? sum= n? sum? endl;#include using namespa

19、ce std;void main()int i,sum;sum=0;for(i=l;i=100;i+=2)sum+=i;cout? sum= n? sum? endl;4. 输入一个整数,求出它的所有因子。#include using namespace std;void main()int n 9k;cout? nEnter a positive integer:cin? n;cout? nNumber n?n?n Factorsfor(k=l;k=n;k+)if(n%k=0)cout? k?cout? endl; 符 ch5. 定义函数 up(ch), 如字符变量 ch 是小写字母就转换成

20、大写字母并通过 up 返回,否则字 不改变。#include 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;i5; i+)( cin? c;cout? up(c)? H ,cout? endl;6. 编写主程序输入实数 r 和整数 n, 用函数求 r 的 n 次幕。#include #include double power(double a, int b)int i; double result

21、 =;for(i=0;i b;i+)result = result * a; return result;void main()double r;int n; cout? nr = cin? r;cout? nn =cin? n;cout? rvv 的vv nvv 次幕是:n? power(r,n)? endl;7. 编写程序计算两个整数绝对值阶乘之差。#include #include using namespace std;int fac(int n)用函数实现交换两个数 a 和 b 的值方法一:简单变量作为函数形参 ( 值传递 )#include using namespace std;

22、void swap(int x,int y)( int temp; temp=x; x=y; y=temp;Hcoutvvx=vvxvv ,”y= ?y?endl;void main() int a=10,b=20; swap(a,b); coutvva=vvavv” ,n?bb=?endl;方法二:引用作为函数形参 ( 地址传递 ) void swap(int &x,int &y) ( int temp;temp=x; x=y; y=temp;coutvv ” x=vvxvv , y”=? y?endl;void main() (int a=10,b=20;cout? na=n?a?n, b

23、= H?b?endl; swap(a,b);cout?na=n?a?n, b= n?b?endl;方法三:指针作为函数形参(地址传递)#include using namespace std;swap(int *pl,int *p2)( int temp;temp=*pl; *pl=*p2; *p2=temp; int main()(int a=10,b=20;int *pa=&a,*pb=;swap(pa, &b);cout? na=n ?a ?n,b= n?b;9. 输入 a,b,c 三个数,调用函数,得到其中最大数。方法一:简单变量作为函数形参 (值传递 ) #include using

24、 namespace std;void sort(int &a, int &b 9 int &c)( int m;if(ba) m=a; a=b; b=m; if(ca) (m=a; a=c; c=m; if(cb) m=c; c=b; b=m; int main()( int a, b, c, ma ;cout? nPlease enter a,b,c: M?endl; cin? a?b? c;sort(a,b,c);coutv vavv ” , ” vvb vv ” , ” vvcv Vendl; return 0;方法二:指针作为函数形参 ( 地址传递 ) #include using

25、namespace std;int max(int *x,int *y,int *z); 编写一个求方程 ax2 + bx + c = 0 的根 的程序,用 3 个函数分别求当 b2-4ac 大于零、等于零、和小于零时的方程的根。要求从主函数输入 a,b,c 的值 并输出结果。#include #include void equation_l (int a, int b, int c)(double xl, x2, temp;temp = b*b - 4 * a * c;xl = (-b + sqrt(temp) / (2 * a * ; x2 = (-b - sqrt(temp) / (2

26、* a * ; cout? M 两个不相等的实根 vv endl; cout? nxl = H? xlvv ,”x2 = H? x2? endl;void equation_2 (int a, int b, int c)(double xl, x2, temp;temp = b*b - 4 * a * c;xl = (-b + sqrt(temp) ) / (2 * a * ;x2 = xl;cout? M 两个相等的实根 vv endl;cout? Hxl = H? xlvv ,”x2 = H? x2? endl;void equation_3 (int a, int b, int c)(cout? 方程无解 / 两个虚根 ? endl;)void main() int a, b, c; double temp;cout? M 输入 a,b,c 的值vv endl;cin?a?b?c;coutvv 方程为: M? avvx*x

温馨提示

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

评论

0/150

提交评论