收藏 分销(赏)

C程序设计第2版ch14习题课v2剖析.pptx

上传人:精*** 文档编号:4610161 上传时间:2024-10-07 格式:PPTX 页数:34 大小:148.16KB
下载 相关 举报
C程序设计第2版ch14习题课v2剖析.pptx_第1页
第1页 / 共34页
C程序设计第2版ch14习题课v2剖析.pptx_第2页
第2页 / 共34页
点击查看更多>>
资源描述
计算机程序设计第第614章习题课章习题课杨琦杨琦计算机教学实验中心计算机教学实验中心西安交通大学西安交通大学第第6章指针章指针l习题习题6-1 用指针重新编写冒泡排序程序。用指针重新编写冒泡排序程序。l习题习题6-2 编写程序,将某一个输入的位数不确定的正整数编写程序,将某一个输入的位数不确定的正整数按照标准的三位分节格式输出,例如,当用户输入按照标准的三位分节格式输出,例如,当用户输入82668634时,程序应该输出时,程序应该输出82,668,634。l习题习题6-3 编写程序,把编写程序,把10个整数个整数1、2、10赋予某个赋予某个int型数组,然后用型数组,然后用int型指针输出该数组元素的值。型指针输出该数组元素的值。l习题习题6-4 用指针编写一个程序,当输入一个字符串后,要用指针编写一个程序,当输入一个字符串后,要求不仅能够统计其中字符的个数,还能分别指出其中大、求不仅能够统计其中字符的个数,还能分别指出其中大、小写字母、数字以及其他字符的个数。小写字母、数字以及其他字符的个数。第第6章指针章指针l习题习题6-5 编写一个函数编写一个函数,用于将一个字符串转换为用于将一个字符串转换为整型数值。其原型为整型数值。其原型为:int atoi(char*string);l习题习题6-6 编写一个函数,用于生成一个空白字符编写一个函数,用于生成一个空白字符串,其原型为串,其原型为:char*mystrspc(char*string,int n);习题习题6-1冒泡排序程序冒泡排序程序lvoid bubble_up(int*ptr,int count)llfor(int i=0;ii;j=j-1)lif(*(ptr+j-1)*(ptr+j)llint tmp=*(ptr+j-1);l*(ptr+j-1)=*(ptr+j);l*(ptr+j)=tmp;llptr为指针为指针int main()const int COUNT=16;int listCOUNT=503,87,512,61,908,170,897,275,653,426,154,509,612,677,765,703;bubble_up(list,16);cout The result is:endl;for(int i=0;i16;i+)cout listi ;coutendl;return 0;习题习题6-2 l例如,当用户输入例如,当用户输入82668634时,程序应该输出时,程序应该输出82,668,634。int main()int num;char array50;char*ptr=array;coutnum;int k=0;while(num!=0)*ptr=num%10+0;num=num/10;ptr+;k+;if(k%3=0)*ptr=,;ptr+;*ptr=0;strrev(array);cout该整数按照标准的三位分节格式输出为:该整数按照标准的三位分节格式输出为:;coutarray=0&*string0)ll*string=;lstring+;ln-;ll*string=0;lreturn ptr;lint main()char*str;int n;coutn;str=new charn;cout“n结果如下,注意结果如下,注意观察观察#之间的空格数之间的空格数:nendl;cout#mystrspc(str,n)#endl;cout;for(int i=0;in;i+)couti%10;coutendl0,计算,计算Xk。l习题习题7-2 Ackermann函数函数ack(m,n)由以下递归定由以下递归定义:义:l习题习题7-3 使用递归算法编写求斐波那契数列的第使用递归算法编写求斐波那契数列的第n项的函数,并编出主函数进行验证。项的函数,并编出主函数进行验证。第第7章章 函数与指针函数与指针l习题习题7-4 编写一个求立方的函数编写一个求立方的函数cube,并重载它,使之可,并重载它,使之可以对输入的整型量和实型量数值求立方。以对输入的整型量和实型量数值求立方。l习题习题7-5 重载判断两个数值大小的函数重载判断两个数值大小的函数max,这些数值可,这些数值可能是整型数、实型数和字符型,函数的返回值为两个数值能是整型数、实型数和字符型,函数的返回值为两个数值中的最大值。中的最大值。l习题习题7-6 编写一个函数,用于去掉字符串尾部的空格符,编写一个函数,用于去掉字符串尾部的空格符,其原型为其原型为:lchar*mytrim(char*string);l习题习题7-7 编写一个函数,用于去掉字符串前面的空格,其编写一个函数,用于去掉字符串前面的空格,其原型为原型为:lchar*myltrim(char*string);第第7章章 函数与指针函数与指针l习题习题7-8 编写一个程序,当输入一个整数以后,编写一个程序,当输入一个整数以后,可以转换成相应的英文单词输出。如:可以转换成相应的英文单词输出。如:123转换成转换成one hundred twenty three。l习题习题7-9 用牛顿法或者二分法编写一个求方程用牛顿法或者二分法编写一个求方程f(x)=0在区间在区间a,b中的实根的函数中的实根的函数,其原型为其原型为:double equation(double(*func)(double),double a,double b,double eps);习题习题7-2#includeusing namespace std;int ack(int m,int n)if(m=0)return n+1;else if(n=0)return ack(m-1,1);return ack(m-1,ack(m,n-1);结果:结果:ack(0,0)=1ack(2,3)=9ack(2,4)=11习题习题7-mytrim(char*string);char*mytrim(char*string)char*ptr=string;while(*ptr!=0)ptr+;doptr-;while(*ptr=);*(+ptr)=0;return string;int main()char str=The art of computer programming ;cout 截取前的原始字符串是截取前的原始字符串是:strendl;cout 截取空格后的字符串是截取空格后的字符串是:mytrim(str);return 0;习题习题7-7 myltrim(char*string);lchar*myltrim(char*string)llchar*ptr=string;lwhile(*ptr=)lptr+;lstrcpy(string,ptr);lreturn string;l第第8章章 结构化设计方法结构化设计方法l1输入某小组输入某小组5个人的姓名、性别、出生年份等信息,统计男女人数个人的姓名、性别、出生年份等信息,统计男女人数以及以及1988年以后(含年以后(含1988年)出生的人数。年)出生的人数。l2定义一个名为定义一个名为Circle(圆)的结构体,其数据成员是圆的外接矩形(圆)的结构体,其数据成员是圆的外接矩形的左上角和右下角两点的坐标,计算该圆的面积。的左上角和右下角两点的坐标,计算该圆的面积。l3读入读入5个用户的姓名和电话号码,按姓名的字典顺序排列后,输出个用户的姓名和电话号码,按姓名的字典顺序排列后,输出每个用户的姓名和电话号码。每个用户的姓名和电话号码。l4口袋中有红、黄、蓝、白、黑五种颜色的小球若干个。如果每次口袋中有红、黄、蓝、白、黑五种颜色的小球若干个。如果每次都从口袋中取出都从口袋中取出3个不同颜色的小球,共有多少种组合,请打印出每个不同颜色的小球,共有多少种组合,请打印出每种组合的种组合的3种颜色。要求使用枚举类型来表示小球的颜色。种颜色。要求使用枚举类型来表示小球的颜色。l5用自顶向下、逐步求精的程序设计方法找出用自顶向下、逐步求精的程序设计方法找出210000之内的所有之内的所有完全数(所谓完全数,即其各因子之和正好等于本身的数。如完全数(所谓完全数,即其各因子之和正好等于本身的数。如6=1+2+3,28=1+2+4+7+14,所以,所以6,28都是完全数)都是完全数)第第9章章 类和对象类和对象 l习题习题9-1设计一个设计一个Dog类,包含类,包含name、age、sex和和weight等属性以及对这些属性操作的方法。实等属性以及对这些属性操作的方法。实现并测试这个类。现并测试这个类。l习题习题9-2设计并测试一个名为设计并测试一个名为Ellipse的椭圆类,其的椭圆类,其属性为外接矩形的左上角与右下角两个点的坐标,属性为外接矩形的左上角与右下角两个点的坐标,并能计算出椭圆的面积。并能计算出椭圆的面积。l习题习题9-3仿照仿照Date类设计一个类设计一个Time类,可以设类,可以设置时间、进行时间的加减运算、按各种可能的格置时间、进行时间的加减运算、按各种可能的格式输出时间。式输出时间。习题习题9-1设计一个设计一个Dog类类l#include l#include lusing namespace std;lclass Doglstring name;intage;char sex;lfloat weight;lpublic:lDog(string Name,int Age,char Sex,float Weight);lstring GetName()return name;lint GetAge()return age;lchar GetSex()return sex;lfloat GetWeight()return weight;lvoid Speak()coutArf!Arf!endl;l;Dog:Dog(string Name,int Age,char Sex,float Weight)name=Name;age=Age;sex=Sex;weight=Weight;int main()Dog dog1(ahuang,3,m,2.4);coutDogs name:dog1.GetName()endl;coutDogs age:dog1.GetAge()endl;coutDogs sex:dog1.GetSex()endl;coutDogs weight:dog1.GetWeight()endl;coutDog speak:;dog1.Speak();return 0;习题习题9-3设计一个设计一个Time类类lclass Timellint hour,minute,second;lpublic:lint SecCalc();lTime(int h=0,int m=0,int s=0);/构造函数构造函数lvoid SetTime(int h=0,int m=0,int s=0);/时间设置时间设置lvoid print_12();lvoid print_24();lTime Add(Time&);lTime Sub(Time&);l;第第9章章 类和对象类和对象l习题习题9-4合并合并Date类和类和Time类为一个类为一个DateAndTime类,修改相应的成员函数,当时间类,修改相应的成员函数,当时间递增到新的一天时,应能够修改日期值。递增到新的一天时,应能够修改日期值。#include#include class CDateTimeCTime t;public:CDateTime(int y,int m,int d,int h,int mm,int s)t=CTime(y,m,d,h,mm,s);void AddDay(int days)t=t+CTimeSpan(days,0,0,0);void IncDay()t=t+CTimeSpan(1,0,0,0);void print_ymd()CString s=t.Format(%Y,%m%d);coutsendl;int main()CDateTime x(2007,4,27,1,2,3);x.print_ymd();x.AddDay(5);x.print_ymd();return 0;第第10章章 类和对象(二)类和对象(二)l1定义一个定义一个Dog类,包含类,包含name、age、sex、weight等等属性,设计一个构造函数,可以对这些属性进行初始化。属性,设计一个构造函数,可以对这些属性进行初始化。实现并测试这个类。实现并测试这个类。l2设计并测试一个名为设计并测试一个名为Ellipse的椭圆类,其属性为其圆的椭圆类,其属性为其圆心坐标以及半长轴和半短轴的长度。设计一个构造函数对心坐标以及半长轴和半短轴的长度。设计一个构造函数对这些属性进行初始化,并通过成员函数计算出椭圆的面积。这些属性进行初始化,并通过成员函数计算出椭圆的面积。l3仿照仿照Date类设计一个类设计一个Time类,设计多个重载的构造函类,设计多个重载的构造函数,可以设置时间、进行时间的加减运算、按各种可能的数,可以设置时间、进行时间的加减运算、按各种可能的格式输出时间。格式输出时间。l4合并合并Date类和类和Time类为一个类为一个DateAndTime类,修改类,修改相应的成员函数,当时间递增到新的一天时,应能够修改相应的成员函数,当时间递增到新的一天时,应能够修改日期值。日期值。习题习题10-1 定义一个定义一个Dog类类lclass Doglchar name20;lintage;lchar sex;ldouble weight;lpublic:lDog(char*Name=,int Age=0,char Sex=m,double Weight=0)lstrcpy(name,Name);lage=Age;lsex=Sex;lweight=Weight;llchar*GetName()return name;lint GetAge()return age;lchar GetSex()return sex;ldouble GetWeight()return weight;lvoid Speak()coutArf!Arf!endl;l;习题习题10-2 设计设计Ellipse类类lclass Ellipsellint x1,y1,x2,y2;lpublic:lEllipse(int a=0,int b=0,int c=0,int d=0):l x1(a),y1(b),x2(c),y2(d)l void GetPosition(int&a,int&b,int&c,int&d)l l a=x1,b=y1,c=x2,d=y2;l l double Area()l l return(double)x2*y2*3.1415926;l l;习题习题10-3 设计设计Time类类lclass Timellint hour,minute,second;lpublic:lint SecCalc();lTime(int h=0,int m=0,int s=0);/构造函数构造函数lvoid SetTime(int h=0,int m=0,int s=0);/时间设置时间设置lvoid print_12();lvoid print_24();lTime Add(Time&);lTime Sub(Time&);l;第第11章章 继承继承l习题习题11-1从类从类Person中派生出一个教师类,新增的属性中派生出一个教师类,新增的属性有:专业、职称和主讲课程(一门),并为这些属性定义有:专业、职称和主讲课程(一门),并为这些属性定义相应的方法。相应的方法。l习题习题11-2许多研究生既有学生的属性,又有教师的属性。许多研究生既有学生的属性,又有教师的属性。试通过多重继承说明一个研究生类。试通过多重继承说明一个研究生类。l习题习题11-3修改例修改例10-4,从,从Point类中派生出一个类中派生出一个Line类。类。Line类增加一个数据成员类增加一个数据成员EndPoint,计算线的长度。试,计算线的长度。试比较一下与直接使用比较一下与直接使用Point类来构造类来构造Line类的不同之处。类的不同之处。l习题习题11-4从从Date类和类和Time类派生一个类派生一个DateAndTime类,类,修改相应的成员函数,当时间递增到新的一天时,应能够修改相应的成员函数,当时间递增到新的一天时,应能够修改日期值。修改日期值。习题习题11-1从类从类Person派生派生Teacher类类lclass Personlprotected:lchar Name10;lintAge;lintSex;lpublic:lPerson(char*name=,int age=0,char sex=m)lstrcpy(Name,name);lAge=age;lSex=(sex=m?0:1);llvoid ShowMe()lcoutNametSextAget;l;习题习题11-1从类从类Person派生派生Teacher类类lclass Teacher:public Person lchar Specialty20;lchar Position20;lchar MajorCourse20;lpublic:lTeacher(char*name=xxx,int age=0,char sex=m,char*spec=x,char*pos=x,char*maj=x):Person(name,age,sex)lstrcpy(Specialty,spec);lstrcpy(Position,pos);lstrcpy(MajorCourse,maj);llvoid Teacher:ShowMe()lPerson:ShowMe();lcoutSpecialtytPositiontMajorCourseendl;ll;第第12章章 多态性多态性l习题习题12-2扩充例扩充例11-6,从中派生出一个正方形类,从中派生出一个正方形类和圆柱体类,写一个测试程序,输出正方形的面和圆柱体类,写一个测试程序,输出正方形的面积和圆柱体的体积。提示:正方形数据成员:一积和圆柱体的体积。提示:正方形数据成员:一个顶点和边长;圆柱体数据成员:圆和高。个顶点和边长;圆柱体数据成员:圆和高。PointSquareCircleCylinder第第12章章 多态性多态性l习题习题12-3扩充实例编程中的日期类,为扩充实例编程中的日期类,为Date类增类增加一个成员函数,可以判断一个日期是否是系统加一个成员函数,可以判断一个日期是否是系统当前日期。从键盘输入你的生日,如果今天是你当前日期。从键盘输入你的生日,如果今天是你的生日则显示:的生日则显示:“Happy Birthday!”,否则显示,否则显示“还有还有xx天是你的生日天是你的生日”或或“你的生日已经过去你的生日已经过去了了xx天,明年的生日要再等天,明年的生日要再等yy天天”。第第13章章 模板与异常处理模板与异常处理l习题习题13-1 编写一个求绝对值的函数模板,并测编写一个求绝对值的函数模板,并测试。试。l习题习题13-2 请将例请将例4-5的冒泡排序函数改写成为模的冒泡排序函数改写成为模板函数并编写一个程序进行测试。板函数并编写一个程序进行测试。l习题习题13-3 例例13-6中所定义的通用栈类实际上是中所定义的通用栈类实际上是不完善的,如无法根据用户需求改变栈的大小,不完善的,如无法根据用户需求改变栈的大小,没有提供栈满溢出无法压入和空栈无法弹出提示没有提供栈满溢出无法压入和空栈无法弹出提示等,请改进该程序。等,请改进该程序。l习题习题13-5例例6-1给出的求阶乘给出的求阶乘n!的函数,当用户的函数,当用户的输入太大时(如的输入太大时(如51),会出现错误,请编写一),会出现错误,请编写一个程序,使用异常处理机制来解决这一问题。个程序,使用异常处理机制来解决这一问题。第第14章章 标准库和输入标准库和输入/输出流输出流 l习题习题14-1编写一个程序,分别用不同的域宽编写一个程序,分别用不同的域宽(010)打印出整数)打印出整数12345和浮点数和浮点数1.2345。观。观察当域宽小于数值的实际需要的域宽时会发生什察当域宽小于数值的实际需要的域宽时会发生什么情况。么情况。输出输出:1234512345123451234512345 12345 12345 12345 12345 12345输出输出:1.23451.23451.23451.23451.23451.2345 1.2345 1.2345 1.2345 1.2345第第14章章 标准库和输入标准库和输入/输出流输出流l习题习题14-2编写一个程序,将华氏温度编写一个程序,将华氏温度0度度212度度转换为浮点型摄氏温度,浮点数精度为转换为浮点型摄氏温度,浮点数精度为3。转换公。转换公式如下:式如下:Celsius=5.0/9.0*(Fahrenheit-32);输出输出:Fahrenheit Celsius 0 -17.778 1 -17.222 2 -16.667 210 98.889 211 99.444 212 100.000第第14章章 标准库和输入标准库和输入/输出流输出流l习题习题14-3编写一个程序,打印出编写一个程序,打印出ASCII字符集中码字符集中码值为值为33126的字符的的字符的ASCII码表。要求输出十进码表。要求输出十进制值、八进制值、十六进制值以及码值所表示的制值、八进制值、十六进制值以及码值所表示的字符。字符。输出输出:dec oct hex char 33 41 21 !22 42 22 23 43 23#7c 174 7c|7d 175 7d 7e 176 7e 第第14章章 标准库和输入标准库和输入/输出流输出流l习题习题14-5编写一个程序,可以读入一个编写一个程序,可以读入一个C+语言语言的源文件,每一行加上行号后保存到另一个后缀的源文件,每一行加上行号后保存到另一个后缀为为.prn的同名文件中。的同名文件中。输出输出:假定上述文件名为test.cpp,程序执行后生成test.prn文件,内容如下:1 /Exercise 13_5 2#include 3#include 26 out.close();27 return 0;28 l学好程序设计语言的唯一途径是学好程序设计语言的唯一途径是 l你的编程能力与你在计算机上投入的时间成你的编程能力与你在计算机上投入的时间成 结结束束语语
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服