VisualC面向对象编程教程第2版(王育坚)清华大学出版社课后答案.doc

上传人:文库蛋蛋多 文档编号:2385811 上传时间:2023-02-17 格式:DOC 页数:104 大小:236.50KB
返回 下载 相关 举报
VisualC面向对象编程教程第2版(王育坚)清华大学出版社课后答案.doc_第1页
第1页 / 共104页
VisualC面向对象编程教程第2版(王育坚)清华大学出版社课后答案.doc_第2页
第2页 / 共104页
VisualC面向对象编程教程第2版(王育坚)清华大学出版社课后答案.doc_第3页
第3页 / 共104页
VisualC面向对象编程教程第2版(王育坚)清华大学出版社课后答案.doc_第4页
第4页 / 共104页
VisualC面向对象编程教程第2版(王育坚)清华大学出版社课后答案.doc_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《VisualC面向对象编程教程第2版(王育坚)清华大学出版社课后答案.doc》由会员分享,可在线阅读,更多相关《VisualC面向对象编程教程第2版(王育坚)清华大学出版社课后答案.doc(104页珍藏版)》请在三一办公上搜索。

1、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+3

2、2;/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.

3、。编写一个程序,输入一个华氏温度,程序输出相应的摄氏温度。请将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是否存在于这些整数中,若是的话,求

4、出他是第几个被输入的。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#includein

5、t 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 A

6、rray3;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

7、 *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;w

8、hile(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

9、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个学生的数据,然后输出

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,&stui.name);printf(Enter three grades:n);for(j=0;j3;j+)scanf(%f,&stui.gradej);

11、sum+=stui.gradej;stui.average=sum/3;printf(%f %sn,stui.average,stui.name);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;fl

12、oat 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

13、!”。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 从键盘输入一个字符序列,

14、编程统计其中的数字个数和英文字母个数。输入的字符序列以“#”作为结束符。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 str10

15、00;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

16、+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

17、#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#inclu

18、deint 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

19、 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;

20、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+)

21、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),该函数用于交换两个实型变量的值,然后编写一个主函数

22、验证函数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

23、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()

24、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 编写一个

25、函数 swapstruct(),实现交换两个结构变量的功能。编写主函数验证函数swapstruct()的功能,要求使用引用传递参数。2-81#include#includestruct studentchar name20;int score;void swapstruct(student &s1,student &s2)int temp;char s20;strcpy(s,s1.name);strcpy(s1.name,s2.name);strcpy(s2.name,s);temp=s1.score;s1.score=s2.score;s2.score=temp;int main()stud

26、ent stu1=zhangsan,90;student stu2=lisi,85;coutstu1:stu1.name stu1.scoreendl;coutstu2:stu2.name stu2.scoreendl;swapstruct(stu1,stu2);coutstu1:stu1.name stu1.scoreendl;coutstu2:stu2.name stu2.scoreendl;return 0;2-82 编写一个程序,在主函数main()的外部和内部分别声明两个同名的整型变量并赋值,然后在主函数main()中分别访问两个变量。2-82#includeint i=3;int

27、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 produ

28、ct 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;

29、*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 采用动态内存分配方法设计一个学生成绩处理程序,要求输入任何数量学

30、生的学号、姓名和四门课的成绩,并按平均成绩的高低输出每个学生的高低输出每个学生的姓名和成绩。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;coutstui.name;coutgrade:;for(j=0;jstui.g

31、radej;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,stui.name);strcpy(stui.name,stuj.name);strcpy(stuj.name,s);for(k=0;k4;k+)temp=stui.gradek;stui.gradek=stuj.gradek;stuj.gradek=temp;cout成绩排名:endl;cou

32、tname gradeendl;for(i=0;inum;i+)coutstui.name ;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验证结果为 x

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号