版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高等院校计算机基础教育规划教材C+程序设计课后习题参考答案 习题1参考答案 一、选择题 1C 2C 二、填空题 1面向过程,面向对象 2编辑,编译,运行 3机器语言,汇编语言,高级语言。 4数据,操作处理方法 50 三、简答题 1简述三代计算机语言各自的特点。 解答如下: 机器语言是用二进制指令表示的、计算机能够直接识别和执行的语言。由于计算机可以直接执行机器语言,执行速度快是机器语言的主要优点。在计算机发展初期,软件工程师使用机器语言来编写程序。在计算机指令集不断增大的情况下,机器语言不易记忆,不便于学习,软件开发难度大、周期长、易出错,软件维护工作量大等缺点更加突出,机器语言已不能胜任编程
2、工作。 汇编语言是用一些易读的助记符表示机器指令操作码,如ADD、CALL等。使用汇编语言编写程序提高了编程速度,也比较容易编写出质量较高的程序,检查、维护也比较容易。但汇编语言抽象层次低,程序员编写程序工作量大。 高级语言屏蔽了机器语言的细节,提高了语言抽象层次。程序中采用了具有一定含义的数据命令和容易理解的执行语句。高级语言不受计算机种类的限制,通用性强,易于理解、学习和掌握。使用高级语言减少了大量的编程工作量。目前使用比较广泛的高级语言有Basic、Fortran、Pascal和C语言。C+是一种功能强大、应用更广泛的高级语言。 2简述C语言程序实现的过程。 解答如下: 用C+语言编写好
3、一个完整的程序后,第一步要上机运行编辑程序,输入源程序;第二步是对源程序进行编译生成目标代码文件,目标代码文件名与源程序文件名相同,而扩展名改为obj;第三步运行连接程序,将目标代码文件与C+的库文件相连接,生成可执行文件,可执行文件名与源程序文件名相同,而扩展名为exe;第四步运行可执行文件,实现程序所具有的功能。 习题2参考答案 一、选择题 1C 2B 3B 4D 二、填空题 . 专注.专业. 1?: 24字节,1字节,4字节,8字节 3 15 46,60 526,25 6256,22 73.96E2,3.96E5 三、简答题 1C+基本数据类型有哪几种? 程序设计如下: C+的基本数据类
4、型有bool(布尔型,又称逻辑型)、char(字符型)、int(整型)、float(浮点型,表示实数)和double(双精度浮点型,简称双精度型)等5种。 2定义符号变量与定义变量有何异同? 程序设计如下: 定义符号常量和定义变量都要指定数据类型,系统将为其分配一定的存储空间。其不同之处在于:定义符号常量必须给出常量值,且以后不能修改本常量的值;而变量可以在定义变量的同时赋初值,以后可以修改该变量。 3什么叫常量?什么是变量? 程序设计如下: 常量就是在程序的运行过程中该量是不可修改的量;变量在程序的运行过程中允许对该变量的值进行修改。 习题3参考答案 一、选择题 1A 2C 3D 4 D 5
5、C 二、填空题 1true 2true 311 4j10和k%3 5k=x 三、编程题 1编写找出a=18,b=35,c=21,d=96中最大值的程序。 程序设计如下: # include void main() int a=18,b=35,c=21,d=96,max; max=ab?a:b;max=maxc?max:c; max=maxd?max:d;coutmax=maxend1; 2输入一个整数:为65时,显示“A”;为66时,显示“B”,为67时,显示“C”,其它值显示“END”。 程序设计如下: # include void main() . 专注.专业. ;cinxint x;sw
6、itch(x) ;breakcase65:coutA屮 ;breakcase66:coutB屮 ;break:coutC屮case67 屮;default:cout # include =100) if(a=1000) coutais greater than 1000屮; else coutais 100 to 999屮; else if(a10) coutais less than 10屮; else coutais 10to99屮; 4一个分数序列为:2/1,3/2,5/3,8/5,13/8,21/23,编写求该数列的前20项之和的程序。 程序设计如下: # include void m
7、ain() float x=1,y=2,p,k,s=0; for(k=1;k=20;k+) s+=yx;p=x+y; x=y;y=p; . 专注.专业. cout1+32+53+85+=sendl; 5编写程序,显示如下图形。 * * * * * * * * * * * * * * * * * * * * * * * * * 程序设计如下: # include void main() int i,j,k; for(i=1;i=i;k-) cout; for(j=1;j=2*i-1;j+) cout*; cout0;i-) for(k=1;k=4-i+1;k+) cout; for(j=1,j=
8、2*i-1;j+) cout*; coutend1; 习题4参考答案 一、选择题 1C 2C 3D 4B 5D 二、填空题 1递增的顺序连续 2可不 34.0 4i7,j=i+7 5Strlen(str) 三、编程题 . 专注.专业. 1 将一个数组中的值按逆序存放,例如,原来是1,3,5,7,9,要求改为9,7,5,3,1。程序设计如下: #include void main() int a5,t; for(int i=0;i5;i+) cin ai; for(i=0;i52;i+) t=ai; ai=a4-i; a4-i=t; for(i=0;i5;i+) coutai?屴; couten
9、dl; 2 有一个33的矩阵,分别求出两条对角线元素之和。 程序设计如下: # include void main() int a33,i,j,suml=0,sum2=0; 潣瑵?输入数组元素:n; for(i=0;i3;i+) for(j=0;j3:j+) cin aij; for(i=0;i3;i+) sum1+=aii; sum2+=ai2-i; coutsum1=sum1sum2=sum2endl; 3输入一个字符,统计单词个数,单词之间用空格分离。 程序设计如下: # include void main() char str80,c1,c2=; int i=0,num=0; cin.
10、get line(str,78); while(stri(=o) . 专注.专业. ; c1=striif(i=0)c2=( ); ; else c2=stri-1if (c1!= &c2=( )num+; i+ endl; 个单词潣瑵?共有?渼浵? 个整数按由小到大顺序排列。 用冒泡法对输入的154 程序设计如下:#include #include void main() 15;int i,j,m,ai+) ;i15;for(i=0 ;icinaj+) ;for(j=1;j14i+) ;ia =m;ai+1;ai=ai+1m=ai i+) i15;for(i=0; ;coutsetw(4)a
11、i cout #include #include iomanipvoid main() ;const N=5 j;,N,iint aNN,b endl;潣瑵?请为数组a:输入数据:i+) iN;for(i=0;for(j=0;jN;j+) cinaij;用双重循环为数组a顺序输入数据 for(i=0;iN;i+) bi=ai0; for(j=1;jN:j+) . 专注.专业. if(biaij) bi=aij;经比较将a数组第i行的最大值分别存入bi中 潣瑵?输出每一行的最大值尺; for(i=0;iN;i+) coutsetw(4)b i; coutend1;经bi输出数组a每一行的最大值
12、程序运行结果: 请为数组a:输入数据: 5015341729 1825427735 2524172311 5998322862 5419 97848 输出每一行的最大值:5077259878 习题5参考答案 一、选择题 1B 2D 3B 4A 5D 二、填空题 1地址 2NULL或0 3整形变量地址,一维数组元素的地址 4 (1)int*p=&k; (2)*p=6; (3)int *p; (4)pp=&p; (5)*pp*=2 or Z 5t=p;p=q,q=t; 三、编程题 1输入3个字符串,要求输出其中最大,最小字符串。 程序设计如下: 输入3 # include iostream.h #
13、 include string.h void main() const int N=3; char sN20,max20,min20; for(int i=0;iN;i+) cin.getline(si,20); strcpy(max,s0); . 专注.专业. ;0)strcpy(min,si+) ;for(i=0;i0if(strcmp(si ;i)strcpy(max,s ))0iif(strcmp(min,s ;)strcpy(min,si ;最大字符串是:maxendl潣瑵? ;最小字符串是:minendl潣瑵? ”的单个字符依次输出。用指针的方法将一个字符串“china2 程序设计
14、如下:h # include iostreamvoid main() char*p=china; 0;i+) !=pifor(int i=0; endl;icoutp 的月份数字时,程序能够输出123使用指针数组编写一个程序,要求当用户输入1 时,则退出程序。该月的英文名。输入不是112 程序设计如下:# include iostream.h void main() 表示 /C+语言中续行符用,浜祡慜牰汩,笽橜湡慵祲?晜扥畲牡屹,浜牡档,char*monthnamedecember; 湜癯浥敢屲,慜杵獵屴尬敳瑰浥敢屲,潜瑣扯牥橜湵履尬番祬 int i;while(1) cini;潣瑵?请输入月
15、份号: if(i12) 潣瑮?错误的月份号month namei-1end1; 4编写程序将n个数按逆序输出,要求使用指针。 思考:可以假设两个指针变量p和q,分别指向最后一个和第一个数组元素,而后互换*p和*q即可。 程序设计如下: . 专注.专业. h #include iostreamvoid main() const int N=5; ,t;N,*p=a,*qint ai+) ;iN;for(int i=0 ;输入数组元素cin*p+ 指向最后一个数组元素p-;将pp-,q+) ;qpfor(q=a ;*q=tt=*p;*p=*q ;p=ai+) ;iNfor(i=0 ;屴潣瑵? ;c
16、outendl 3报数),凡报到个人围成一个圈,顺序排号。从第一个人开始报数(从1到35有n 的人退出圈子,问最后留下的是原来的第几号。 程序设计如下:h #includeiostreamvoid main() *p;50,int i,k,m,n,num 潣瑵?楜灮瑵渠浵敢?景瀠牥潳?;cinn;p=num; for(i=0;in;i+) *(p+i)=i+l;从1到n对每个人进行编号 i=0;i为每次循环时的计数变量 k=0;k为按1,2,3报数时的计数变量 m=0;m为退出人数 while(mn-1)当退出人数比n-1少时(即未退出人数大于1时)执行 if(*(p+i)!=0)k+; if
17、(k=3)对退出的人的编号置为0 *(p+i)=0;k=0;m+; i+; if(i=n)i=0;报数到尾后,i恢复为0 while(*p0)p+; coutendlhe last one is NO:*p; . 专注.专业. 运行结果为:n=8 :input number of person7 :the last one is NO 6参考答案习题 一、选择题A C 31A 2 二、填空题 1局部,全部 2允许,不允许main 3in line 4 5可以在同名部变量的作用域中访问全局变量 三、编程题即100,n2为n是自然数。分析:n1为1的值。其中1编写程序,计算1+2+3+n 可 程序
18、设计如下:#include int Get Sum(int n); void main() ;int num ;int sum=0 ;cout Please enter a number:cinnum; sum=GetSum(num); coutsumend1; while(1) return 0; int GetSum(int n) int s=0; for(int a=0;a=0&a) t=sqrt(t); x1=(-b+t)(2*a);x2=(-b-t)(2*a); return 1; return0; 3编写一个函数,分别求出一维整型数组an中所有值为奇数的元素个数和所有值为偶数的元素
19、个数。 程序设计如下: #include int Getcount(char *p) int count=0;记录大写字母字符个数的变量,设初值为0 while(*p!=NULL)如为大写字母,则总数加1 if(*p=A&*p=z) count+; p+; return count; void Func(int a ,int n,int &ox,int &ex) int i=0; ox=0;参数引用,返回数组中值为奇数的元素个数 ex=0;参数引用,返回数组中值为偶数的元素个数 while(in) . 专注.专业. 2=0) if(ai ;ex+else ;ox+ ;i+ 编写一个函数,求输入
20、的两个自然数的最大公约数。4 程序设计如下:int Min) ,int Func(int Max ;,Numint Tempif(MaxMin) ;Temp=Max ;Max=Min ;Min=Temp do Min;Num=Max Max=Min; Min=Num; while(Num!=0); return Max; 注释:本题采用“辗转相除法”。具体如下: Min变量存放较小的数作为除数。(1)Max变量存放较大的数作为被除数, Num中。除以Min后的余数存放在(2)用Max 。Num,继续相除得到的新的NumMaxMin,Min(3)若Num!=0,则 就是最大公约数。,最后的Max
21、(4)重复步骤(3) 个岁,第2个人比第2个人大22有4个人,其中第4个人比第3个人大岁,第35 用递归调用实现。4个人多少岁?个人1个人大2岁,如果第130岁,那么第人又比第 程序设计如下:h #includeiostream ;int year(int)void main() int n;cinn; :潣瑵?请输入:第一个人的年龄(30)潣瑵?第四个人的年龄是:year(n)endl; . 专注.专业. int year(int n) m=0; ,static int y=nif(m=3) return y;else y=year(y)+2; m+; 6求一元二次方程的实根程序。 程序设计
22、如下:#includeiostream.h ;int fun(int,int)void main() ;int n1,n2 n2输入两个正整数且前者要小于后者:; cinn1潣瑵? n2)end1;?渼?尼到?渼?尼的累加和为:y?x:y; void main() z,absmax;,int xy,yzx;cin absmax=max(abs(x),abs(y); . 专注.专业. ;absmax=max(abs(absmax),abs(z) ;coutThe absolute value of maximal number is: ;coutabsmaxend1 2 (0 1 2 2 编写一
23、个程序,利用宏定义一个常量N,然后生成、输出一个4*44 5 6)的数据阵列。 程序设计如下: #include #define N4 int main() intNN; for(int i=0;iN;i+) for(int j=0;jN;j+) *(*(a+i)+j)=i+j; for(i=0;iN;i+) for(int j=0;jN;j+) cout*(*(a+i)+j) ; coutend1; return 0; 程序运行的结果: 0 1 2 3 1 2 3 4 2 3 4 5 3 4 5 6 3 定义一个带参数的宏MIN,用于计算在两个参数中找出较小的一个。 程序设计如下: #inc
24、ludestdioh #define MIN(m,n) mn?m:n定义宏名MIN替换运算mn? m:n void main() float t=36712,u=18645;定义实型变量t,u float min; min=MIN(t,u);调用带参数的宏MIN,求t和u的最小值 coutmin #includeiostreamstruct date int year; int month; int day; ;struct student ;int number ;char name10 ;date birth ;void main() struct student stu1; ;numbe
25、rstu1namecinstu1monthStu1birthday;birthstu1 yearstu1birthcincoutstu1畮扭牥?tstu1慮敭?tstu1birthyear; 潣瑵?年stu1birth潭瑮?尼月stu1birth慤?尼日end1; 3利用结构体类型编制一程序,实现输入一个学生的数学期中和期末成绩,然后计算并输出其平均成绩。 程序设计如下: #include #include void main() struct study . 专注.专业. ;int mid ;int end ;int average ;math cin;math.midmath.end ;m
26、ath.average=(math.mid+math.end)2 ;)mathaverageend1cout #includeiostreamstruct stu ;int mid:int num ;int ave;int end 3;svoid main() int i; struct stu*p;p+) pmidp-end; cinp-nump-ave=(p-mid+p-end)2; for(p=s;ps+3;p+) coutnumtmidtendtaveend1; 习题9参考答案 一、选择题 1A 2D 3A 4A 5A 二、填空题 1对象数组 2该指针指向一个数组 3该数组中每个元素都
27、是一个指针对象 4子对象 5堆对象 三、编程题 1编写一个函数,统计一条英文句子中字母的个数,在主程序中实现输入、输出。 程序设计如下: . 专注.专业. #include #include int count(char *str) ;,num=0int ii+) ;ifor(i=0;str =A&strif(stri=a&stri=z)|(str num+; return num; int main() ;char text100 end1;潣瑵?输入一个英语句子: gets(text); ;?挼畯瑮琨硥?个字母end1潣瑵?这个句子里有while(1) ;return 0 ,提示用户输入个
28、人的考试成绩,然后计算出平均成绩并且显示。2设学生人数N=8 程序设计如下:#include #include #define N 8 ;存放成绩的数组float gradesint main() ;int i average;,float total 提示输入成绩i+) iN;for(i=0; ;潣瑵?瑮牥朠慲敤尣?椨?尼:cingradesi; total=0; for(i=0;iN;i+) total+=gradesi; average=totalN; 潣瑵?nAverage grade:averageendl; . 专注.专业. 习题10参考答案 一、选择题 1D 2A 3 A 4A
29、5A B D 二、填空题 1公有继承(public),私有继承(private),保护继承(protected) 2对象,层次 3私有继承(private) 4派生,基 5基类的构造函数,子对象的构造函数,派生类本身的构造函数 三、编程题 大学里有这样几类人员:学生、教师、职员和兼职教书的教师。给出这几类人员的类描述。 程序设计如下: #include int GetSum(int n); class Person public: Person(const char*n) name=new charstrlen(n)+1; strcpy(name,n); void Print() const
30、coutName:nameend1; protected: char*name; ; class student:virtual public Person public: Student(const char*n,const char*m):Person(n) major=new charstrlen(m)+1; strcpy(major,m); void Print() const Person:Print(); coutMajor:endl; protected: char* major; ; . 专注.专业. class Staff:virtual public Person publ
31、ic: Staff(const char*n,const char*d):Person(n) dept=new charstrlen(d)+1; strcpy(dept,d); void Print() const Person:Print(); coutDepartment:deptendl; protected: char* dept; ; Class Teacher:public Staff public: Teacher(const char*n,const char*d,const char*1):Person(n),Staff(n,d) lesson=new charstrlen(
32、1)+1; strcpy(lesson,1); void Print() const Staff:Print(); coutLesson:lessonendl; protected: char* lesson; ; class StudentTeacher:public Student,public Teacher public: StudentTeacher(const char*n,const char*m, const char*d, const char*1) :Person(n),Student(n,m),Teacher(n,d,l) void Print() const Stude
33、nt:Print(); coutDepartment:endlendl; coutLesson:lessonendl; ; . 专注.专业. void main () Student stu(Mike,Software Enginerring); Staff sta(Jason,Management); Teacher t(Tim,Computer,C+); StudentTeacher st (Sam, Computer Application, Computer, , C+); stu. Print(); sta. Print(); t. Print(); st. Print(); 习题1
34、1参考答案 一、选择题 1C 2D 3A 4C 5D 二、填空题 1用同一个运算符完成不同的,通过创建运算符函数。 2程序运行,程序编译 3动态,静态 4纯虚函数,基类 5虚函数,指针式引用 三、编程题 1运用动态联编和虚函数的方法编写派生类程序,要求能够输入简单的数据。 程序设计如下: #include class X public: virtual void Display(int x,汦慯?捻畯?砼?,yend1; ; Class Y:public X public: virtual void Display(int x,汦慯?捻畯?砼?,yend1; ; void Scrren(X &
35、x) x.Display(5,18,98); x.Display(66,9,97); void main() Y y; . 专注.专业. Scrren(y); 2使用指向类的成员函数的指针和虚函数的调用,以及动态联编的方法编写程序。 程序设计如下: #include class P public: virtual void fun()coutP:fun() called屮; ; class Q:public P public: virtual void fun()coutQ:fun() called屮; ; void main() Q q; P &a=q; Void(P:*pf)()=P:fu
36、n; (a*pf) (); 习题12参考答案 1. 设计一个函数模板Max用于求一个数组中最大的元素,并用整型数组和字符数组检验其正确性。 程序设计如下: #include template T Max(T a,int n) T temp=a0; for(int i=1;in;i+) if(tempai) temp=ai; return temp; void main() int a=5,8,3,222,9,123; char c=g,a,d,z,m,c,y; couta数组中最大数是Max(a,6)endl; coutc数组中最大元素是Max(c,7)endl; . 专注.专业. 2设计一个类模板Store用于存储某一类型的数据,并用整型数据和字符串数据检验其正确性。 程序设计如下: #incl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年谷歌地图教学设计
- 2025-2026学年麦穗教案绘画
- 实习报告企业评语(2篇)
- 教师事业单位工作人员年度工作报告(4篇)
- (教师用书)2024年-学年高中地理 第三单元 第二节 工业生产与地理环境教学设计 鲁教版必修2
- 高中信息技术第七周 第一节课教学设计
- 2025-2026学年飞雷神教学设计教案科学
- 2025-2026学年都江堰考场灯光教学设计
- 2026年聚丙烯酰胺项目可行性研究报告
- 2026年医院医疗事故防范考核模拟试题及答案详解
- 新生儿颅内出血护理查房
- 11.0R-同频同时全双工(CCFD)白皮书-(中文)
- 中国旅游文化(第四版)课件 第1、2章 绪论、自然景观文化
- 《中国工农红军长征与遵义会议》课件
- 神经系统急症处理课件
- 办公室文秘工作日常管理方案
- 第二单元 混合运算 专项-解决多步计算的实际问题 提升练(含答案)小学数学人教版(2024)三年级上册
- 眼视光特检技术 第3版 课件 第5、6章 像差仪、对比敏感度检测技术
- wedo自动投篮机课件
- Unit 2 Home Sweet Home Section A Pronunciation.2e课件+嵌入音频-人教版八年级英语上册
- DB13T 5406-2021 耕地地力主要指标分级诊断
评论
0/150
提交评论