![VisualC面向对象编程教程第2版[王育坚]清华大学出版社课后答案.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-12/21/fce0f883-b49b-47ae-99fa-35333e71567b/fce0f883-b49b-47ae-99fa-35333e71567b1.gif)
![VisualC面向对象编程教程第2版[王育坚]清华大学出版社课后答案.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-12/21/fce0f883-b49b-47ae-99fa-35333e71567b/fce0f883-b49b-47ae-99fa-35333e71567b2.gif)
![VisualC面向对象编程教程第2版[王育坚]清华大学出版社课后答案.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-12/21/fce0f883-b49b-47ae-99fa-35333e71567b/fce0f883-b49b-47ae-99fa-35333e71567b3.gif)
![VisualC面向对象编程教程第2版[王育坚]清华大学出版社课后答案.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-12/21/fce0f883-b49b-47ae-99fa-35333e71567b/fce0f883-b49b-47ae-99fa-35333e71567b4.gif)
![VisualC面向对象编程教程第2版[王育坚]清华大学出版社课后答案.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-12/21/fce0f883-b49b-47ae-99fa-35333e71567b/fce0f883-b49b-47ae-99fa-35333e71567b5.gif)
已阅读5页,还剩99页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
. . . .2-45编写一个程序,输入三角形的三条边的边长,求三角形的面积。2-45#include#includeint main()int a,b,c;int s,S;cinabc;s=(a+b+c)/2;S=powl(s*(s-a)*(s-b)*(s-c),0.5);if(S=0)cout此三边不能构成三角形!endl;elsecout面积:endl;coutSendl;return 0; 2-46从键盘输入一个大写字母,然后改用小写字母在屏幕输出。2-46#includeint main()char ch;int a;cout输入一个大写字母:ch;if(ch=65 & ch=91)ch=ch+32;/a=(int)ch;coutchendl;else cout该字母不是字母或不是字母大写!endl;return 0;2-47用户输入两个整数,编程输出稍大于第一个整数而又是第2个整数的倍数的数。计算公式是:valuel+value2-value1%value2.2-47#includeint main()int value1,value2;int result;cinvalue1value2;result=value1+value2-value1%value2; cout该整数为:resultendl;return 0;2-48华氏温度转换为摄氏温度的公式是:C=(F-32)*5/9.。编写一个程序,输入一个华氏温度,程序输出相应的摄氏温度。请将32和5/9用const型变量表示。2-48#includeint main()const float i=32.0;const float j=5.0/9.0;float degFahr;float degCel;cindegFahr;/for(degFahr=0;degFahr=300;degFahr+=10)/degCel=j*(degFahr-i);cout华氏温度:degFahrendl;cout摄氏温度:degCelendl;/return 0;2-49 从键盘输入20个整数,检查100是否存在于这些整数中,若是的话,求出他是第几个被输入的。2-49#includeint main()int Array20;int i,count=0,c=0;for(i=0;iArrayi;for(i=0;i20;i+)if(Arrayi=100 & count=0)cout100存在该数组中!endl;count+;if(Arrayi!=100)c+;if(c=19)cout100不存在该数组中!endl;for(i=0;i20;i+)if(Arrayi=100)cout它是第i+1个被输入的!endl;return 0;2-50 从键盘输入一个N X N的整型数组,并将每一行的最大值显示输出。2-50#includeint main()int Array100100=0;int n,temp;cinn;for(int i=0;in;i+)for(int j=0;jArrayij;for(int x=0;xn;x+)for(int y=x+1;yn;y+)if(ArrayixArrayiy)temp=Arrayix;Arrayix=Arrayiy;Arrayiy=temp;cout每一行的最大值:endl;for(i=0;in;i+)coutArrayi0 ;coutendl;2-51 输入三个整数,采用指针方法将三个数按从大到小的顺序输出。2-51#include#includeint main()int Array3;int *pA=Array;int *a=Array;int i;int temp;for(i=0;iArrayi;for(i=0;i3;i+)a+;if(*pA*a)temp=*pA;*pA=*a;*a=temp;a+;pA+;a=&Array0;for(i=0;i3;i+)coutArrayi ;return 0;2-52 采用指针方法将一个数组中的所有元素颠倒顺序,结果仍然存放在原来的数组中,要求使用最少的辅助存储单元2-52#includeint main()int n;cout输入数组的长度(小于100):n;cout输入n个数:endl;int Array100;int *pA=Array;int i;for(i=0;iArrayi;pA+;for(i=0;in;i+)pA-;cout*pA ;return 0;2-53输入两个字符串,如果两个字符串的字符和长度都相同(认为它们相等),在屏幕上输出“Equal”,否则在屏幕上输出“Unequal”。要求使用字符指针。2-53#includeint main()char * pstr=Enter a string:;char str1100,str2100;coutpstrendl;cin.get(str1,100);cin.get();cin.get(str2,100);int len1=0,len2=0;while(str1len1!=0)len1+;while(str2len2!=0)len2+;if(len1!=len2)coutUnequalendl;else if(len1=len2)int i=0;for(i=0;ilen1;i+)if(str1i=str2i)&ilen1)continue;if(i=len1-1)coutEqualendl;else coutUnequalendl;return 0;2-54 编程将一个整数转换成对应的数字串,例如将值1234转换为数字串“1234”。2-54#includeint main()int number;int Array100;int i,j;cinnumber;for(i=0;number!=0;i+)Arrayi=number%10;number=number/10;j=i;for(i=j;i=0;i-)coutArrayi-1 ;coutendl;return 0;2-55 编程求两个复数的和。2-55#includeint main()float a2,b2,c2;int i;for(i=0;iai;for(i=0;ibi;for(i=0;i2;i+)ci=ai+bi;coutc0 c1endl;return 0;2-56 使用结构变量表示每个学生的信息:姓名、学号和三门课的成绩。从键盘输入10个学生的数据,然后输出每个学生的姓名和三门课的平均成绩。2-56#includestruct studentchar num10;char name20;float grade3;float average;int main()student stu10;int i,j;float sum=0;for(i=0;i=9;i+)printf(Enter num:n);scanf(%s,&stui.num);printf(Enter name:n);scanf(%s,&);printf(Enter three grades:n);for(j=0;j3;j+)scanf(%f,&stui.gradej);sum+=stui.gradej;stui.average=sum/3;printf(%f %sn,stui.average,);return 0;2-57 用结构数组建立并初始化一个工资表,然后输入一个人的姓名,查询其工资情况,并在屏幕上输出。2-572-58用枚举值MON、TUE、WED、THU、FRI、SAT和SUN表示一个星期中的7天。从键盘输入一个06之间的整数,根据输入的整数输出对应的英文缩写。2-582-59 编写一个求解一元二次方程的根的程序,方程的系数由用户输入。2-59#include#includeint main()int a,b,c;int R;float p;float x1,x2;cinabc;R=b*b-4*a*c;if(R=0)p=sqrt(R);x1=(-b+p)/(2*a);x2=(-b-p)/(2*a);if(x1=x2)cout仅且只有一个根x1endl;elsecout有两个不同的根x1x2endl;else if(R0) cout无根endl;return 0;2-60 从键盘输入一个字符,判断输入的字符是m、a、n或其他字符。如果是m则输出“Good morning!”;如果是a则输出“Good afternoon!”;如果是n则输出“Good night!”;如果是其他字符则输出“I cant undersrand!”。2-60 2-61 编程实现两个整数的加、减、乘、除四则运算,运算式形如“32+120”。2-612-62编写一个程序,利用swith语句将百分制的学生成绩转换为优、良、中、及格和不及格5分制成绩。2-622-63从键盘输入一个字符,判断输入的字符是数字、空格还是其他字符,并给出相应的提示信息。2-63#includeint main()char ch;cout请输入一个字符:;cin.get(ch);if(ch= )cout这是一个空格!=0)&(ch=9)cout这是一个数字!endl;else cout这是一个其他字符!endl;return 0;2-64 从键盘输入一个字符序列,编程统计其中的数字个数和英文字母个数。输入的字符序列以“#”作为结束符。2-64#includeint main()char symbol100;int i,end,j=0,k=0;cinsymbol;for(i=0;i100;i+)if(symboli=#)end=i;break;for(i=0;i=0) & (symboli=9)j+;else k+;coutdigit:jendl;coutletter:kendl;return 0;2-65 输入一个由若干单词组成的文本串,每个单词之间用一些空格分隔,统计此文本串单词的个数。2-65#includeint main()char str1000;int count=1;cin.get(str,1000);/while(!str0)/for(int i=0;stri!=0;i+)if(stri= & stri+1!= )count+;/coutthe count is:countendl;return 0;2-67 编程求值,使用如下公式:/4=1-1/3+1/5-1/7+,直到最后一项的绝对值小于10-6为止。2-67(1)#include#includeint main()int i,n=1,j=1;double s=0;for(i=0;(2*i+1)pow(10,6);i+)/*coutiendl;cout*;cout2*i+1endl;cout*;coutpow(2*i+1),-1)endl;cout*;*/s+=pow(2*i+1),-1)*n;/j=2*i+1;n=n*(-1);coutiendl;cout4*sendl;return 0;2-67(2)#include#includeint main()float i=0;double s=0;for(i=0;2*i+1pow(10,6);i+)s+=pow(-1,i)*(1/(2*i+1);couts*4endl;return 0;2-68 把100150之间不能被3整除的数输出,要求一行输出10个数。2-68 2-69 编程输出一个九九乘法表。2-69#includeint main()char table99;int i,j,X,Y;for(i=0;i9;i+)for(j=0;j=Y)coutX*Y ;coutendl;return 0;2-70编程计算整型数各位数字之和,例如数2007各位数字之和为2+0+0+7=9.2-70#includeint main()int num;int sum=0,i;cinnum;for(i=0;num!=0;i+)sum+=num%10;num=num/10;coutsum=sumendl;return 0;2-71 输入n个整数,利用冒泡排序法将它们从小到大排列,并在屏幕上输出。2-71#includeint main()int n;int i,j,temp;int num100;cinn;for(i=0;inumi;for(i=0;in;i+)for(j=i+1;jn;j+)if(numinumj)temp=numi;numi=numj;numj=temp;for(i=0;in;i+)coutnumi ;coutendl;return 0;2-72 编程求出从键盘输入的10个数之和,遇到负数时终止输入求和。2-72#includeint main()int Array10;int sum=0;for(int i=0;iArrayi;if(Arrayi0)sum+=Arrayi;else break;coutsumendl;return 0;2-73 编程求出从键盘输入的10个数中所有正数之和,负数不参加求和。2-73#includeint main()int num10;int i,sum=0;for(i=0;inumi;if(numi0)sum+=numi;coutsum is sumendl;return 0;2-74 设计函数prime(),它只带一个整型参数,当这个参数的值是素数时,该函数返回非0,否则返回0.利用这个函数编写一个程序来验证哥德巴赫猜想:任何一个大于2的偶数都可以表示成两个素数之和。2-74#includeint prime(int x)int i;for(i=2;ia;if(a2 & a%2=0)for(j=2;ja;j+)b=prime(j);if(b=j)c=a-b;d=prime(c);if(d=c)cout该定理成立!endl;else cout此数不是大于2的偶数!endl;return 0;2-75 编制如下函数原型的函数:int index(const char *str ,char c),这个函数返回字符串str中第一次出现字符c的位置。2-75#includeint index(const char *str,char c)int count=1;int Ccount=0;for(int i=0;stri!=0;i+)if(stri=c & Ccount=0)Ccount+;break;count+;return count;int main()char string100;char C;int V=0;int result;cinstring;cinC;while(stringV!=0)V+;result=index(string,C);if(V+1)=result)cout此字符不在字符串中!endl;elsecoutresultendl;return 0;2-76 首先编写以下函数声明的函数:void swap(float* px,float*py),该函数用于交换两个实型变量的值,然后编写一个主函数验证函数swap()的功能。2-76#includevoid swap(float *px,float *py)float temp;temp=*px;*px=*py;*py=temp;int main()float X,Y;cinXY;swap(&X,&Y);cout使用swap函数的值;coutX Yendl;/*float temp;temp=X;X=Y;Y=temp;*/cout验证值: X Yendl;return 0;2-77 定义将一个字符串反转的函数,例如将字符串“abcd”反转为“dcba”。2-77#include#includeint Array(char *s)int j,n;char string100;strcpy(string,s);for(j=0;jstr;z=Array(str);/cout=0;i-)coutstri;coutendl;return 0;2-78 首先编写一个冒泡排序函数,然后在主函数中调用排序函数对10个整数从小到达进行排序。提示:采用数组名作为函数参数。2-782-79将习题2-76中的swap()函数改为内联函数,并实现相同的程序功能。2-79#includeinline void swap(float *px,float *py)float temp;temp=*px;*px=*py;*py=temp;int main()float X,Y;cinXY;swap(&X,&Y);cout使用swap函数的值;coutX Yendl;/*float temp;temp=X;X=Y;Y=temp;*/cout验证值: X Yendl;return 0;2-80 编写一个函数 maxmin(),该函数有两个实型参数,执行函数后,第一个参数为两个参数中值较大者,第二个参数为较小者。要求使用引用作为函数参数,并编写主函数验证函数功能。2-80#includevoid maxmin(int &A,int &B)int temp;if(AXY;maxmin(X,Y);coutX Yendl;return 0;2-81 编写一个函数 swapstruct(),实现交换两个结构变量的功能。编写主函数验证函数swapstruct()的功能,要求使用引用传递参数。2-81#include#includestruct studentchar name20;int score;void swapstruct(student &s1,student &s2)int temp;char s20;strcpy(s,);strcpy(,);strcpy(,s);temp=s1.score;s1.score=s2.score;s2.score=temp;int main()student stu1=zhangsan,90;student stu2=lisi,85;coutstu1: stu1.scoreendl;coutstu2: stu2.scoreendl;swapstruct(stu1,stu2);coutstu1: stu1.scoreendl;coutstu2: stu2.scoreendl;return 0;2-82 编写一个程序,在主函数main()的外部和内部分别声明两个同名的整型变量并赋值,然后在主函数main()中分别访问两个变量。2-82#includeint i=3;int main()coutiendl;int i=5;coutiendl;return 0;2-83 一个程序由两个C+源文件组成,在一个源文件中定义主函数main()并声明一个外部整型变量n,在另一个源文件中定义一个不带参数的函数factorial(void),该函数用于计算变量n的阶乘。编程在主函数main()中输入一个整数并求它的阶乘。2-83#includeint factorial(int x)int y,pro=1;for(y=x;y0;y-)pro*=y;return (pro);void main()int n,R;coutn;R=factorial(n);coutThe product is:Rendl;2-84 采用外部函数的方式使用习题2-75中的函数index(),即在一个源文件中定义该函数,然后在另一个源文件中调用该函数。2-842-85 编写一段程序,利用new运算动态分配float型、long型和char型三个内存单元,将它们的首地址分别赋给指针pf、pl和pc。给这些存储但愿赋值,并在屏幕上显示它们的值。最后利用delete运算释放所有动态分配的内存单元。2-85#includeint main()float *pf=new float;*pf=3.14;long *pl=new long;*pl=2135567889;char *pc=new char;*pc=A;cout*pfendl;cout*plendl;cout*pcendl;delete pf;delete pl;delete pc;return 0;2-86 编写一个程序,用new运算为一个整型数组动态分配内存空间,对其进行赋值,并在屏幕上输出。2-86#includeint main()int size;int num;cinsize;int *f=new intsize;for(int i=0;inum;fi=num;for(i=0;isize;i+)coutfi ;delete f;return 0;2-87 采用动态内存分配方法设计一个学生成绩处理程序,要求输入任何数量学生的学号、姓名和四门课的成绩,并按平均成绩的高低输出每个学生的高低输出每个学生的姓名和成绩。2-87#include#includestruct studentint ID;char name20;int grade4;float average;int main()int num;int i,j,k,temp;float sum=0;char s20;cinnum;student *stu=new studentnum;for(i=0;inum;i+)cout输入第i+1人的信息endl;coutstui.ID;;coutgrade:;for(j=0;jstui.gradej;sum+=stui.gradej;stui.average=sum/4;sum=0;coutaverage:stui.averageendl;for(i=0;inum;i+) /排序for(j=i+1;jnum;j+)if(stui.averagestuj.average)strcpy(s,);strcpy(,);strcpy(,s);for(k=0;k4;k+)temp=stui.gradek;stui.gradek=stuj.gradek;stuj.gradek=temp;cout成绩排名:endl;coutname gradeendl;for(i=0;inum;i+) ;for(j=0;j4;j+)coutstui.gradej ;coutendl;return 0;2-88输入一行字符,建立一个链表,链表的每一个结点含有一个输入的字符,通过访问链表中的每个结点计算链表中结点的总个数。2-882-89 使用带参数的宏定义计算两个实数之和,并编写主函数验证宏的功能。2-89#include#define sum(a,b) (a+b)int main()int x,y;cinxy;cout主函数计算结果: x+yendl;cout宏定义函数结果: sum(x,y)endl;return 0;2-90 定义一个带参数的宏,求出三个数中最大的一个数,并进行验证。2-90#include#define MAX(a,b) (a)(b)?(a):(b)void main()int x,y,z;cinxyz;cout宏定义参数结果 ;coutMAX(MAX(x,y),z)y)if(xz)cout验证结果为 xendl;else cout验证结果为 zz)cout验证结果为 yendl;else cout验证结果为 zendl;2-91 输入一个字符串,根据需要设置条件编译,使之能将输入的字符串以大写字母的形式或小写字母的形式输出。2-91#includeint main()char str100;char X;int i;cinstr;cout是否输出大写形式?(Y or N)X;if(X=Y)for(i=0;stri!=0;i+)stri=stri-32;coutstri;else if(X=N)for(i=0;stri!=0;i+)coutstri;coutendl;return 0;2-92 修改习题2-61中的求和程序,在程序中定义一个调试宏,利用条件编译指令编译不同的代码段,使得在调试程序时能够输出一些调试信息。2-922-93 假设有三个文件:test13.h、test2.h和test.cpp,在test1.h中定义了一个宏PI,test2.h文件包含了test1.h文件,而test.cpp文件又包含了test1.h文件和test2.h文件。请问编译时会出现什么错误?如何解决?提示:宏的重复定义。2-933-44 一个名为CPerson 的类有如下属性:姓名、身份证号、性别和年龄,请用 C+语言定义这个类,并为上述属性定义相应的方法。#include#includeclass CPersonprivate: char Name10; char ID20; char Sex4; int Age;public: CPerson(char *na,char *id,char *se,int ag); void Show();CPerson:CPerson(char *na,char *id,char *se,int ag)strcpy(Name,na);strcpy(ID,id);strcpy(Sex,se);Age=ag;void CPerson:Show() cout姓名:Nameendl; cout身份证:IDendl; cout性别:Sexendl; cout年龄:Ageendl;void main() CPerson person(王三男,21); person.Show();3-45 设计一个日期类 Date,该类用于表示日期值(年、月、日)。要求除了能够通过相应得成员函数设置和获取日期外,还能够实现将日期加一天的操作。#includeclass date int year; int month; int day; bool flag;public: date() year=0; month=0; day=0; date(int yr,int mo,int da);void setdate();int getyear();int getmonth();int getday();void addday();void show();date:date(int yr,int mo,int da) flag=false; if(mo=1&mo=1&da=31) year=yr; month=mo; day=da; else flag=true; void date:setdate() cout请输入年分year; cout请输入月份(1-12)month; while(month12) cout输入有误,请重新输入月份(1-12)month; cout请输入日期(1-31)day; while(day31) cout输入有误,请重新
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 九年级信息技术下册 赢在网络时代教学设计 青岛版
- 服装新员工入职培训方案
- 【平安证券】经济结构转型系列报告之二:中国经济结构转型与中长期投资机遇展望
- 2024中铝海外发展有限公司公开招聘3人笔试参考题库附带答案详解
- 人教精通版英语六年级下册 Revision 教学教案+音视频素材
- 二年级数学下册 五 加与减第7课时 算得对吗1教学设计 北师大版
- 人教版地理七上2.1《大洲和大洋》备课指导及教学设计
- 初中语文-第六单元《庄子与惠子游于濠梁之上》庄子二则教学设计-2024-2025学年统编版语文八年级下册
- 初中语文人教部编版(2024)八年级上册背影第一课时教案设计
- 人教部编版历史七下2.9《宋代经济的发展》教学设计
- 2024年大学生信息素养大赛(省赛)练习考试题库(含答案)
- 新人教版一年级数学下册全册教案(表格式)
- 2024年全国(保卫管理员安全及理论)知识考试题库与答案
- 基础模块2 Unit5 Ancient Civilization单元测试-2025年中职高考英语一轮复习讲练测(高教版2023修订版·全国用)
- 《中国心力衰竭诊断和治疗指南2024》解读
- 月考分析与总结 课件高二下学期家长会
- DL∕T 1245-2013 水轮机调节系统并网运行技术导则
- 2024版父子房屋买卖合同协议书
- 八年级历史下册知识点归纳和专题复习【提纲】
- 《三国演义》导读课(教学设计)统编版语文五年级下册
- 医疗器械行业薪酬分析报告
评论
0/150
提交评论